aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-06-15 19:31:04 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-06-15 19:31:04 +0300
commit2cc8e2d9c46c10451270496b7a796866b130b0d4 (patch)
tree320b81b246f61b7d100efeeaab893da444034ac9 /Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
parent0111a1c694c92c2dad5f1cfe952b79b1f2ba01d7 (diff)
downloadTango-2cc8e2d9c46c10451270496b7a796866b130b0d4.tar.gz
Tango-2cc8e2d9c46c10451270496b7a796866b130b0d4.zip
support dispensers jig station with DISPESER_TEST flag.
try to fix hardware init bug - not during job, fix watchdog (#3016). internal alrm stops job. accurate brushstops, winder cone alarm and job failures
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c49
1 files changed, 37 insertions, 12 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index 915869c34..0f326d133 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -162,10 +162,11 @@ uint32_t HWConfigurationInit(void)
IDS_Dispenser_Content_Init();
//ProcessParamsInit();
Buttons_Init();
+#ifndef DISPESER_TEST
if (WHS_Type == WHS_TYPE_NEW)
newWHS_init();
WHS_init();
-
+#endif
ADC_MUX_Init();
GeneralHwReady = true;
@@ -645,24 +646,47 @@ uint32_t HWConfigurationFunc(MessageContainer* requestContainer)
{
uint32_t status = 0;
uint32_t DataLen = 0;
+ uint32_t ExistingDataLen = 0;
+ int compare = 0;
MessageContainer responseContainer;
UploadHardwareConfigurationResponse response = UPLOAD_HARDWARE_CONFIGURATION_RESPONSE__INIT;
+ UploadHardwareConfigurationRequest* UploadRequest = NULL;
+ if (JobIsActive())
+ {
+ LOG_ERROR(1,"JobIsActive");
+ status = ERROR;
+ }
+ else
+ {
+ GeneralHwReady = false;
+ Control_WD(ENABLE,250);
+ //compare existing data to new data. update if different
+ memcpy(&ExistingDataLen,(void *)GENHWCFG_MAP_IN_FLASH,sizeof(ExistingDataLen));
+// if (ExistingDataLen == requestContainer->data.len)
+ {
+ compare = memcmp (requestContainer->data.data,((void *)GENHWCFG_MAP_IN_FLASH),requestContainer->data.len);
+ report("!!!!!!!!!data compare hw func", __FILE__,compare,requestContainer->data.len,RpMessage,ExistingDataLen,0);
+ //if compare is equal no need to store the data
+// if (compare == 0)
+ {
+ DataLen = requestContainer->data.len;
+ EraseFlashSection(GENHWCFG_SECTION_FLASH);
+ ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH, 4,&DataLen);
+ ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH+4, DataLen, requestContainer->data.data);
- DataLen = requestContainer->data.len;
- EraseFlashSection(GENHWCFG_SECTION_FLASH);
- ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH, 4,&DataLen);
- ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH+4, DataLen, requestContainer->data.data);
+ FileWrite(requestContainer->data.data, requestContainer->data.len,HwConfigPath,BIOS_WAIT_FOREVER);
- FileWrite(requestContainer->data.data, requestContainer->data.len,HwConfigPath,BIOS_WAIT_FOREVER);
- UploadHardwareConfigurationRequest* UploadRequest = upload_hardware_configuration_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+ }
+ }
+ UploadRequest = upload_hardware_configuration_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
- GeneralHwReady = false;
- Control_WD(ENABLE,250);
- status = HWConfiguration(UploadRequest);
+ status = HWConfiguration(UploadRequest);
+
+ GeneralHwReady = true;
+ }
- GeneralHwReady = true;
responseContainer = createContainer(MESSAGE_TYPE__UploadHardwareConfigurationResponse, requestContainer->token, true, &response, &upload_hardware_configuration_response__pack, &upload_hardware_configuration_response__get_packed_size);
if (status!= OK)
@@ -678,7 +702,8 @@ uint32_t HWConfigurationFunc(MessageContainer* requestContainer)
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
size_t container_size = message_container__pack(&responseContainer, container_buffer);
my_free(responseContainer.data.data);
- upload_hardware_configuration_request__free_unpacked(UploadRequest,NULL);
+ if (UploadRequest)
+ upload_hardware_configuration_request__free_unpacked(UploadRequest,NULL);
SendChars(container_buffer, container_size);
return OK;