aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorRonen Sberlo <ronen.s@twine-s.com>2021-01-05 13:27:35 +0200
committerRonen Sberlo <ronen.s@twine-s.com>2021-01-05 13:27:35 +0200
commit45aded1213ff37e679449a52a3028c6565af7303 (patch)
treee0954a6967437f542bf66f28e303c6918cd1c04d /Software/Embedded_SW/Embedded
parent8f59ef6ef5aa1c4f9d5fc19fc26df4b92fe5662c (diff)
downloadTango-45aded1213ff37e679449a52a3028c6565af7303.tar.gz
Tango-45aded1213ff37e679449a52a3028c6565af7303.zip
eeprom float read/write
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c70
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Procedure.c48
3 files changed, 106 insertions, 16 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
index 20c6d5a00..5cf4f5872 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
@@ -45,6 +45,7 @@ uint32_t MCU_E2PromProgram(int Address,uint32_t Data)
return (EEPROMProgram((uint32_t *)&Buffer, Address*4, 4));
#endif
}
+
uint32_t MCU_E2PromRead(int Address,uint32_t *Data)
{
if (Address>=MAX_EEPROM_STORAGE)
@@ -60,6 +61,44 @@ uint32_t MCU_E2PromRead(int Address,uint32_t *Data)
return OK;
}
+
+uint32_t MCU_E2PromProgramFloat(int Address,float Data)
+{
+ float Buffer = Data;
+ if (Address>=MAX_EEPROM_STORAGE)
+ {
+ Report("MCU_E2PromProgram Error",__FILE__,__LINE__,Address,RpWarning,Data,0);
+ return ERROR;
+ }
+ if ((Address>=EEPROM_STORAGE_DANCER_0)&&(Address<=EEPROM_STORAGE_DANCER_2))
+ {
+ Report("~~~~~~Store dancers eeprom ",__FILE__,__LINE__,(int)Address,RpWarning,(int)Data,0);
+
+ }
+ Report("MCU_E2PromProgram",__FILE__,__LINE__,Address,RpWarning,(int)Data*1000,0);
+#ifdef EVALUATION_BOARD
+ return 0;
+#else
+ return (EEPROMProgram((float *)&Buffer, Address*4, 4));
+#endif
+}
+
+uint32_t MCU_E2PromReadFloat(int Address,float *Data)
+{
+ if (Address>=MAX_EEPROM_STORAGE)
+ {
+ Report("MCU_E2PromRead Error",__FILE__,__LINE__,Address,RpWarning,(int)(*Data)*1000,0);
+ //return ERROR;
+ }
+#ifndef EVALUATION_BOARD
+ EEPROMRead((float *)Data,Address*4, 4);
+#endif
+ Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,(int)(*Data)*1000,0);
+
+ return OK;
+
+}
+
/**************************************************/
uint32_t MCU_E2PromProgramChunk(int Address,uint16_t Length,uint32_t Data)
{
@@ -362,6 +401,7 @@ void MainCardEEpromWriteRequestFunc(MessageContainer* requestContainer)
stub_main_card_eeprom_write_request__free_unpacked(request,NULL);
}
+
uint32_t BtsrSaveParamsToEeprom(void *Data)
{
BTSRParameters* BtsrPrameters = Data;
@@ -373,17 +413,17 @@ uint32_t BtsrSaveParamsToEeprom(void *Data)
if (memcmp(BtsrPrameters,&ExistingBtsrPrameters,sizeof(ExistingBtsrPrameters)))
{
data = BtsrPrameters->feedingtension;
- status |= MCU_E2PromProgram(EEPROM_BTSR_FEEDING_TENSION, data);
+ status |= MCU_E2PromProgramFloat(EEPROM_BTSR_FEEDING_TENSION, data);
status |= MCU_E2PromProgram(EEPROM_BTSR_TYPE, BtsrPrameters->btsryarntype);
status |= MCU_E2PromProgram(EEPROM_BTSR_APPLICATION, BtsrPrameters->btsrapplicationtype);
data = BtsrPrameters->threadlengthfactor;
- status |= MCU_E2PromProgram(EEPROM_BTSR_LENGTH_OFFSET, data);
+ status |= MCU_E2PromProgramFloat(EEPROM_BTSR_LENGTH_OFFSET, data);
data = BtsrPrameters->tensionerror;
- status |= MCU_E2PromProgram(EEPROM_BTSR_TENSION_ERROR, data);
+ status |= MCU_E2PromProgramFloat(EEPROM_BTSR_TENSION_ERROR, data);
data = BtsrPrameters->spooltension;
- status |= MCU_E2PromProgram(EEPROM_BTSR_SPOOL_TENSION, data);
+ status |= MCU_E2PromProgramFloat(EEPROM_BTSR_SPOOL_TENSION, data);
data = BtsrPrameters->exittension;
- status |= MCU_E2PromProgram(EEPROM_BTSR_EXIT_TENSION, data);
+ status |= MCU_E2PromProgramFloat(EEPROM_BTSR_EXIT_TENSION, data);
}
return status;
}
@@ -393,19 +433,21 @@ uint32_t BtsrReadParamsFromEeprom(void *Data)
BTSRParameters* BtsrPrameters = Data;
uint32_t status = 0;
float data;
- status |= MCU_E2PromRead(EEPROM_BTSR_FEEDING_TENSION, &data);
+ uint32_t value;
+
+ status |= MCU_E2PromReadFloat(EEPROM_BTSR_FEEDING_TENSION, &data);
BtsrPrameters->feedingtension = data;
- status |= MCU_E2PromRead(EEPROM_BTSR_TYPE, &data);
- BtsrPrameters->btsryarntype = data;
- status |= MCU_E2PromRead(EEPROM_BTSR_APPLICATION, &data);
- BtsrPrameters->btsrapplicationtype = data;
- status |= MCU_E2PromRead(EEPROM_BTSR_LENGTH_OFFSET, &data);
+ status |= MCU_E2PromRead(EEPROM_BTSR_TYPE, &value);
+ BtsrPrameters->btsryarntype = value;
+ status |= MCU_E2PromRead(EEPROM_BTSR_APPLICATION, &value);
+ BtsrPrameters->btsrapplicationtype = value;
+ status |= MCU_E2PromReadFloat(EEPROM_BTSR_LENGTH_OFFSET, &data);
BtsrPrameters->threadlengthfactor = data;
- status |= MCU_E2PromRead(EEPROM_BTSR_TENSION_ERROR, &data);
+ status |= MCU_E2PromReadFloat(EEPROM_BTSR_TENSION_ERROR, &data);
BtsrPrameters->tensionerror = data;
- status |= MCU_E2PromRead(EEPROM_BTSR_SPOOL_TENSION, &data);
+ status |= MCU_E2PromReadFloat(EEPROM_BTSR_SPOOL_TENSION, &data);
BtsrPrameters->spooltension = data;
- status |= MCU_E2PromRead(EEPROM_BTSR_EXIT_TENSION, &data);
+ status |= MCU_E2PromReadFloat(EEPROM_BTSR_EXIT_TENSION, &data);
BtsrPrameters->exittension = data;
Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(BtsrPrameters->feedingtension*1000),RpWarning,(int)(BtsrPrameters->tensionerror*1000),(int)(BtsrPrameters->exittension*1000));
Report("BtsrReadParamsFromEeprom",__FILE__,__LINE__,(int)(BtsrPrameters->btsrapplicationtype),RpWarning,(int)(BtsrPrameters->btsryarntype),(int)(BtsrPrameters->threadlengthfactor*1000));
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
index 24f229b2c..297ce1efe 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
@@ -68,7 +68,7 @@ typedef enum {
ORIFICE3_ZERO_VALUE_ADDR,
}EEPROM_ADDRESSES;*/
-#define EEPROM_RESET_REASON_HEAD_ADDRESS 160
+#define EEPROM_RESET_REASON_HEAD_ADDRESS 300
#define EEPROM_RESET_REASON_MAX_DATA 80
#define DISPENSERS_MAP_IN_EEPROM 0x200
@@ -82,6 +82,8 @@ void MCU_E2PromUpdateResetReason(int i);
uint32_t MCU_E2PromProgram(int Address,uint32_t Data);
uint32_t MCU_E2PromRead(int Address,uint32_t *Data);
+uint32_t MCU_E2PromProgramFloat(int Address,float Data);
+uint32_t MCU_E2PromReadFloat(int Address,float *Data);
void MCU_E2PromProgramMidTank(int midtankId,float a,float b);
float MCU_E2PromReadMidtank_A(int MidtankId);
float MCU_E2PromReadMidtank_B(int MidtankId);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Procedure.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Procedure.c
index c84dc5fb5..d1ba28d7e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Procedure.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Procedure.c
@@ -72,8 +72,10 @@ void Stub_ProcedureRequest(MessageContainer* requestContainer)
bool ResetNeeded = false;
ProcedureRequest* request = procedure_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
- int i,n_param = request->n_param;
+ int rc, i,n_param = request->n_param;
ProcedureResponse response = PROCEDURE_RESPONSE__INIT;
+ BTSRParameters *BtsrPrameters = NULL;
+ char str[200];
/* protobuf_c_boolean has_type;
int32_t type;
protobuf_c_boolean has_timeout;
@@ -89,6 +91,50 @@ void Stub_ProcedureRequest(MessageContainer* requestContainer)
{
switch (request->type)
{
+ case 1:
+ BtsrPrameters = my_malloc(sizeof(BTSRParameters));
+ BtsrPrameters->btsryarntype = request->param[0];
+ BtsrPrameters->btsrapplicationtype = request->param[1];
+ BtsrPrameters->feedingtension = request->param[2];
+ BtsrPrameters->exittension = request->param[3];
+ BtsrPrameters->tensionerror = request->param[4];
+ BtsrPrameters->threadlengthfactor = request->param[5];
+ rc = BtsrSaveParamsToEeprom(BtsrPrameters);
+ free(BtsrPrameters);
+ response.replymessage = request->testname;
+ if (n_param)
+ {
+ response.replyvalue = (float*)my_malloc(sizeof(float *)*(request->n_param));
+ response.n_replyvalue = request->n_param;
+ for(i=0;i<n_param;i++)
+ {
+ Report(request->testname,__FILE__,__LINE__,(int)request->type,RpWarning,(int) request->n_param,0);
+ response.replyvalue[i] = request->param[i];
+ }
+ }
+ response.time = msec_millisecondCounter;
+ response.type = request->type;
+ break;
+ case 2:
+ BtsrPrameters = my_malloc(sizeof(BTSRParameters));
+ rc = BtsrReadParamsFromEeprom(BtsrPrameters);
+ sprintf(str, "type = %d, app = %d, tension = %f, exittension = %f, tensionerror = %f, lengthfactor = %f", BtsrPrameters->btsryarntype,
+ BtsrPrameters->btsrapplicationtype, BtsrPrameters->feedingtension, BtsrPrameters->exittension, BtsrPrameters->tensionerror, BtsrPrameters->threadlengthfactor);
+ response.replymessage = str;
+ if (n_param)
+ {
+ response.replyvalue = (float*)my_malloc(sizeof(float *)*(request->n_param));
+ response.n_replyvalue = request->n_param;
+ for(i=0;i<n_param;i++)
+ {
+ Report(request->testname,__FILE__,__LINE__,(int)request->type,RpWarning,(int) request->n_param,0);
+ response.replyvalue[i] = request->param[i];
+ }
+ }
+ response.time = msec_millisecondCounter;
+ response.type = request->type;
+ free(BtsrPrameters);
+ break;
default:
response.replymessage = request->testname;
if (n_param)