diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-09-05 13:23:16 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-09-05 13:23:16 +0300 |
| commit | 6bf0136ccdfa462247dc5e4ef5f4b2569ff21279 (patch) | |
| tree | 3676e9d26c7fb6a14be13440ab644fc5b8e66adc /Software/Embedded_SW/Embedded | |
| parent | 8aa8895ed7b0159c668aa0d0d71131ddd570ad6c (diff) | |
| download | Tango-6bf0136ccdfa462247dc5e4ef5f4b2569ff21279.tar.gz Tango-6bf0136ccdfa462247dc5e4ef5f4b2569ff21279.zip | |
EEPROM - midtanks and MCU serial number
Diffstat (limited to 'Software/Embedded_SW/Embedded')
3 files changed, 57 insertions, 4 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 4f0f0a827..1fa019d0d 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -64,7 +64,7 @@ float MCU_E2PromReadMidtank_A(int MidtankId) return ERROR; } EEPROMRead((uint32_t *)&Data,Address*4, 4); - Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,(int)Data,0); + Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,(int)(Data*1000),0); return (Data); } @@ -78,10 +78,35 @@ float MCU_E2PromReadMidtank_B(int MidtankId) return ERROR; } EEPROMRead((uint32_t *)&Data,Address*4, 4); - Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,(int)Data,0); + Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,(int)(Data*1000),0); return (Data); } +uint32_t MCU_E2PromSerialNumProgram(char *Data) +{ + char * SerialNum = Data; + int len = strlen(SerialNum); + if (len > MAX_SERIAL_NUM_LEN) + { + Report("MCU_E2PromSerialNumProgram length error",__FILE__,__LINE__,len,RpWarning,(int)0,0); + return ERROR; + } + EEPROMProgram((uint32_t *)SerialNum, EEPROM_STORAGE_SERIAL_NUM*4, MAX_SERIAL_NUM_LEN); + + +} +uint32_t MCU_E2PromSerialNumRead(char* *Data) +{ + char SerialNum[MAX_SERIAL_NUM_LEN]; + EEPROMRead((uint32_t *)SerialNum,EEPROM_STORAGE_SERIAL_NUM*4, MAX_SERIAL_NUM_LEN); + + int len = strlen(SerialNum); + strcpy(Data,SerialNum); + Report("MCU_E2PromSerialNumRead length ",__FILE__,__LINE__,len,RpWarning,(int)0,0); + + return len; + +} //Each word may not be subject to more than a specific number of programming cycles before an //erase cycle is required. In other words, for any given word, FlashProgram can only be called 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 eb9993559..223f31005 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h @@ -35,12 +35,18 @@ typedef enum { EEPROM_STORAGE_MAC_ADDR, MAX_EEPROM_STORAGE }EEPROM_STORAGE_USAGE_ENUM; +#define MAX_SERIAL_NUM_LEN 20 +#define SERIAL_NUM_ADDR EEPROM_STORAGE_SERIAL_NUM*4 +#define MAC_ADDR_ADDR (SERIAL_NUM_ADDR + MAX_SERIAL_NUM_LEN) + uint32_t MCU_E2PromProgram(int Address,uint32_t Data); uint32_t MCU_E2PromRead(int Address,uint32_t *Data); void MCU_E2PromProgramMidTank(int midtankId,float a,float b); float MCU_E2PromReadMidtank_A(int MidtankId); float MCU_E2PromReadMidtank_B(int MidtankId); void MCU_E2PromInit(void); +uint32_t MCU_E2PromSerialNumProgram(char *Data); +uint32_t MCU_E2PromSerialNumRead(char* *Data); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index c5f8c4df2..88dc96997 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -69,8 +69,12 @@ void *HWConfigurationLoadFromFile( uint32_t *NumOfBytes) uint8_t* buffer = NULL; *NumOfBytes = 0; - Fresult = FileRead(HwConfigPath, NumOfBytes, &buffer); - REPORT_IF_ERROR(Fresult, "HW Config File Read error", Fresult, RpError, buffer, 0); + Fresult = f_mkdir(SW_INFO_DIR); + if ((Fresult == FR_OK)||(Fresult == FR_EXIST)) + { + Fresult = FileRead(HwConfigPath, NumOfBytes, &buffer); + REPORT_IF_ERROR(Fresult, "HW Config File Read error", Fresult, RpError, buffer, 0); + } // if (Fresult) // Report("HW Config File Read error", __FILE__,__LINE__, Fresult, RpError, buffer, 0); @@ -481,6 +485,7 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) STATUS_RED_LED_OFF; return OK; } +char Serial[21]; uint32_t MidTankDataSetupFunc(MessageContainer* requestContainer) { MessageContainer responseContainer; @@ -491,6 +496,23 @@ uint32_t MidTankDataSetupFunc(MessageContainer* requestContainer) Report("MidTankDataSetupFunc", __FILE__,request->midtankinfo[i]->midtankid,(int)(request->midtankinfo[i]->initialoffseta*1000), RpMessage, (int)(request->midtankinfo[i]->slopeb*1000), 0); MCU_E2PromProgramMidTank(request->midtankinfo[i]->midtankid,request->midtankinfo[i]->initialoffseta,request->midtankinfo[i]->slopeb); } + //debug only + Task_sleep(1000); + for (i = 0;i<8;i++) + { + float a=0,b=0; + a = MCU_E2PromReadMidtank_A(i); + b = MCU_E2PromReadMidtank_B(i); + Report("MidTankData Read", __FILE__,__LINE__,(int)(a*1000), RpMessage, (int)(b*1000), 0); + } + //debug only + Task_sleep(1000); + MCU_E2PromSerialNumProgram ("Take me to the sky"); + memset (Serial,0,20); + MCU_E2PromSerialNumRead(&Serial); + Report(Serial, __FILE__,__LINE__,22, RpMessage, 21, 0); + + MidTankDataSetupResponse response = MID_TANK_DATA_SETUP_RESPONSE__INIT; responseContainer = createContainer(MESSAGE_TYPE__MidTankDataSetupResponse, requestContainer->token, true, &response, &mid_tank_data_setup_response__pack, &mid_tank_data_setup_response__get_packed_size); |
