diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-05-30 17:33:20 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-05-30 17:33:20 +0300 |
| commit | b525fbcad1ac8c7126caa82ec8458ffbb6284384 (patch) | |
| tree | 61abe4c1610fc2e0b6af8e5f926d5624692df2fe /Software/Embedded_SW | |
| parent | 405096b3d489f4ea7b50b1d5db7d32241251b8d7 (diff) | |
| download | Tango-b525fbcad1ac8c7126caa82ec8458ffbb6284384.tar.gz Tango-b525fbcad1ac8c7126caa82ec8458ffbb6284384.zip | |
Version 1.4.0.4: Improved memory handling, handles SW crash after a job failure
Diffstat (limited to 'Software/Embedded_SW')
18 files changed, 139 insertions, 106 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 6c0262f66..c424320ff 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -109,7 +109,7 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer) } else { - free (UploadFileHandle); + my_free (UploadFileHandle); UploadFileHandle = 0; } @@ -172,7 +172,8 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer) { REPORT_MSG (FileReceivedLength,"file upload ended successfully"); f_close(ReceivedFileHandle); - free (UploadFileHandle); + my_free (UploadFileHandle); + UploadFileHandle = 0; FileReceivedLength = 0; FileDone = true; } @@ -182,7 +183,8 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer) { REPORT_MSG (FileReceivedLength,"file upload too much data!"); f_close(ReceivedFileHandle); - free (UploadFileHandle); + my_free (UploadFileHandle); + UploadFileHandle = 0; FileReceivedLength = 0; FileDone = true; } @@ -206,7 +208,7 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer) responseContainer.continuous = false; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); - my_free(request->buffer.data); + //my_free(request->buffer.data); file_chunk_upload_request__free_unpacked(request,NULL); my_free(responseContainer.data.data); SendCharsWithType(container_buffer, container_size,MESSAGE_TYPE__FileChunkUploadResponse); @@ -301,7 +303,7 @@ uint32_t FileChunkDownloadRequestFunc(MessageContainer* requestContainer) { REPORT_MSG (FileSentLength,"file download ended successfully"); f_close(SentFileHandle); - free (DownloadFileHandle); + my_free (DownloadFileHandle); FileSentLength = 0; } else @@ -310,7 +312,7 @@ uint32_t FileChunkDownloadRequestFunc(MessageContainer* requestContainer) { REPORT_MSG (FileSentLength,"file download too much data!"); f_close(SentFileHandle); - free (DownloadFileHandle); + my_free (DownloadFileHandle); FileSentLength = 0; } } diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index 01a30c21a..3bae023db 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -102,7 +102,8 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) ustrncpy (ActivateToken, requestContainer->token,36); - strcpy (SWUpgradePath,request->path); + strncpy (SWUpgradePath,request->path,99); + SWUpgradePath[99] = NULL; strcat(SWUpgradePath,"/package.cfg"); Fresult = FileRead(SWUpgradePath, &Bytes, &buffer); diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index bee894585..05864303f 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,0,3}; +TangoVersion_t _gTangoVersion = {1,4,0,4}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c index 341a43704..3871acb94 100644 --- a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c +++ b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c @@ -15,12 +15,12 @@ //***************************************************************************** -#define MAX_MEM_LOG 100 +/*#define MAX_MEM_LOG 100 int freeIndex=0,malloc_index=0; uint32_t malloc_size[MAX_MEM_LOG+1]; uint32_t malloc_time[MAX_MEM_LOG+1]; void * malloc_addr[MAX_MEM_LOG+1]; -void * free_addr[MAX_MEM_LOG+1]; +void * free_addr[MAX_MEM_LOG+1];*/ //uint32_t total_allocated = 0; void *my_malloc(size_t _size) { @@ -43,14 +43,14 @@ void *my_malloc(size_t _size) malloc_time[malloc_index] = msec_millisecondCounter; } */ - if ((addr)&&(_size>400)) + /*if ((addr)&&(_size>400)) { malloc_addr[malloc_index] = addr; malloc_size[malloc_index] = _size; malloc_time[malloc_index] = msec_millisecondCounter; if (malloc_index++>=MAX_MEM_LOG) malloc_index = 0; - } + }*/ return addr; } int allocated_size = 0; @@ -80,9 +80,9 @@ void my_free(void *_ptr) // allocated_size+=malloc_size[i]; * */ - free_addr[freeIndex] = _ptr; - if (freeIndex++>=MAX_MEM_LOG) - freeIndex = 0; +// free_addr[freeIndex] = _ptr; +// if (freeIndex++>=MAX_MEM_LOG) +// freeIndex = 0; } } diff --git a/Software/Embedded_SW/Embedded/Common/report/distributor.c b/Software/Embedded_SW/Embedded/Common/report/distributor.c index e4ab5fa36..d485abb70 100644 --- a/Software/Embedded_SW/Embedded/Common/report/distributor.c +++ b/Software/Embedded_SW/Embedded/Common/report/distributor.c @@ -728,7 +728,8 @@ static void messageDistribute(char *msg, Dist_Table[DistTableEntry].dest[index].function(msg,FileName,LineNumber,errorCode,parameter1,parameter2); } */ - strcpy (reportmsg,msg); + strncpy (reportmsg,msg,250); + reportmsg[251] = NULL; if (ReportFunc1 != NULL) ReportFunc1(reportmsg, FileName,LineNumber,errorCode,Severity, parameter); diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index 0d5836acf..8a39e8fd4 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -101,7 +101,7 @@ int ReportResponseFunc(char *message, /* The formatted message response.message = message; responseContainer = /*Report*/createContainer(MESSAGE_TYPE__StartDebugLogResponse, protobufToken, false, &response, &start_debug_log_response__pack, &start_debug_log_response__get_packed_size); responseContainer.continuous = true; - if (responseContainer.data.data) + //if (responseContainer.data.data) { uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); if (container_buffer) @@ -111,13 +111,13 @@ int ReportResponseFunc(char *message, /* The formatted message if (SendCharsWithType(container_buffer, container_size,MESSAGE_TYPE__StartDebugLogResponse) == false) //comm tx mailbox full { //CommunicationMailboxFlush(); - //protobufToken[0] = 0; + protobufToken[0] = 0; my_free(container_buffer); } } my_free(responseContainer.data.data); } - + //Task_sleep(5); return OK; } diff --git a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c index 23f193b25..27780a9e3 100644 --- a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c +++ b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c @@ -201,7 +201,12 @@ int32_t SetCommunicationPath(bool UARTorUSB) CommType = UARTorUSB; return OK; } +/*#define MAX_CONT_LOG 199 +uint16_t cSendSize[MAX_CONT_LOG+1] = {0}; +uint32_t cSendTime[MAX_CONT_LOG+1] = {0}; +uint16_t cSendindex = 0; +*/ /****************************************************************************** * ======== communicationTask ======== * Task for this function is created statically. See the project's .cfg file. @@ -230,6 +235,12 @@ void communicationTxTask(UArg arg0, UArg arg1) else if (CommType == isUART) Uart_Tx(CommTxMessage.Buff, CommTxMessage.msgSize); } +/* cSendSize[cSendindex] = CommTxMessage.msgSize; + cSendTime[cSendindex] = msec_millisecondCounter; + + if (cSendindex++>=MAX_CONT_LOG) + cSendindex = 0; +*/ if (diagnosticscontainer_buffer == CommTxMessage.Buff) diagnosticscontainer_buffer = 0; my_free(CommTxMessage.Buff); diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c index dd89c7b15..89deb2b0b 100644 --- a/Software/Embedded_SW/Embedded/Communication/Container.c +++ b/Software/Embedded_SW/Embedded/Communication/Container.c @@ -48,16 +48,16 @@ #include "Common/report/report.h" #include "Connection.h" -#define MAX_CONT_LOG 100 +#define MAX_CONT_LOG 199 -uint16_t TxmsgId[MAX_CONT_LOG+1] = {0}; +/*uint16_t TxmsgId[MAX_CONT_LOG+1] = {0}; uint16_t TxLength[MAX_CONT_LOG+1] = {0}; uint32_t TxAddr[MAX_CONT_LOG+1] = {0}; uint16_t Txindex = 0; uint32_t msgId[MAX_CONT_LOG+1] = {0}; uint32_t Length[MAX_CONT_LOG+1] = {0}; uint32_t DataLength[MAX_CONT_LOG+1] = {0}; -byte index = 0; +byte RxIndex = 0;*/ MessageContainer createContainer(MessageType type, char* token, protobuf_c_boolean completed, void* response, size_t (*packPtr)(void*, uint8_t*), size_t (*sizePtr)(void*)) @@ -79,7 +79,7 @@ MessageContainer createContainer(MessageType type, char* token, protobuf_c_boole container.data.data = response_buffer; container.data.len = response_size; - if (SuspendLargeMessages == true) + /*if (SuspendLargeMessages == true) { // Report("EndJobMessage",__FILE__,__LINE__,(int)type,RpWarning,(int)response_size,0); TxmsgId[Txindex] = type; @@ -87,7 +87,7 @@ MessageContainer createContainer(MessageType type, char* token, protobuf_c_boole TxAddr[Txindex] = msec_millisecondCounter; if (Txindex++>=MAX_CONT_LOG) Txindex = 0; - } + }*/ //free(response); return container; @@ -131,18 +131,17 @@ void receive_callback(char* buffer, size_t length) MessageContainer* requestContainer = message_container__unpack(NULL, length, (uint8_t*)buffer); if (requestContainer == NULL) return; - // HeatingTestSendResonse(0, false,true,true, /*OriginalMotorSpd_2PPS[index]*/length,requestContainer->type,0,0, "Container"); if (requestContainer->type != MESSAGE_TYPE__KeepAliveRequest) //user action resets the idle counter { resetIdleCounter(); REPORT_MSG(requestContainer->type,"Message received"); } KeepAliveOneSecondCounter = 0; - msgId[index] = requestContainer->type; - Length[index] = length; - DataLength[index] = msec_millisecondCounter; - if (index++>=MAX_CONT_LOG) - index = 0; + /*msgId[RxIndex] = requestContainer->type; + Length[RxIndex] = length; + DataLength[RxIndex] = msec_millisecondCounter; + if (RxIndex++>=MAX_CONT_LOG) + RxIndex = 0;*/ switch(requestContainer->type) { case MESSAGE_TYPE__CalculateRequest: @@ -433,13 +432,19 @@ void receive_callback(char* buffer, size_t length) message_container__free_unpacked(requestContainer, NULL); } -bool SendResult,KeepSendResult = true; +/*bool SendResult,KeepSendResult = true; uint16_t SendmsgId[MAX_CONT_LOG+1] = {0}; uint16_t SendSize[MAX_CONT_LOG+1] = {0}; uint32_t SendTime[MAX_CONT_LOG+1] = {0}; -uint16_t Sendindex = 0; +bool Sendresult[MAX_CONT_LOG+1] = {0}; +uint16_t Sendindex = 0;*/ bool SendChars(char* buffer,size_t length) { +/* SendmsgId[Sendindex] = 0xFFFF; + SendSize[Sendindex] = length; + SendTime[Sendindex] = msec_millisecondCounter; + if (Sendindex++>=MAX_CONT_LOG) + Sendindex = 0;*/ SendResult = CommunicationTaskSendMessage(buffer, length); if (SendResult == false) KeepSendResult = false; @@ -447,12 +452,15 @@ bool SendChars(char* buffer,size_t length) } bool SendCharsWithType(char* buffer,size_t length,MessageType type) { - SendmsgId[Sendindex] = type; - SendSize[Sendindex] = length; - SendTime[Sendindex] = msec_millisecondCounter; +// SendmsgId[Sendindex] = type; +// SendSize[Sendindex] = length; +// SendTime[Sendindex] = msec_millisecondCounter; + + SendResult = CommunicationTaskSendMessage(buffer, length); + +// Sendresult[Sendindex] = SendResult; if (Sendindex++>=MAX_CONT_LOG) Sendindex = 0; - SendResult = CommunicationTaskSendMessage(buffer, length); if (SendResult == false) KeepSendResult = false; return SendResult; diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index 5dd991512..c50a0057a 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -5,19 +5,22 @@ var SysMin = xdc.useModule('xdc.runtime.SysMin'); var System = xdc.useModule('xdc.runtime.System'); var Error = xdc.useModule('xdc.runtime.Error'); var ti_sysbios_hal_Hwi = xdc.useModule('ti.sysbios.hal.Hwi'); -var Memory = xdc.useModule('xdc.runtime.Memory'); var Timestamp = xdc.useModule('xdc.runtime.Timestamp'); var TimestampProvider = xdc.useModule('ti.sysbios.family.arm.lm4.TimestampProvider'); var SyncGeneric = xdc.useModule('xdc.runtime.knl.SyncGeneric'); var Mailbox = xdc.useModule('ti.sysbios.knl.Mailbox'); -var HeapStd = xdc.useModule('xdc.runtime.HeapStd'); +//var HeapStd = xdc.useModule('xdc.runtime.HeapStd'); var GIO = xdc.useModule('ti.sysbios.io.GIO'); var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore'); var Task = xdc.useModule('ti.sysbios.knl.Task'); +//var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); +var HeapTrack = xdc.useModule('ti.sysbios.heaps.HeapTrack'); +//var Memory = xdc.useModule('xdc.runtime.Memory'); -BIOS.heapSize = 30767; // bios heapmem -//Memory.defaultHeapSize = 48767; -Program.heap = 50000; //sysmem +BIOS.heapSize = 50000; // bios heapmem +//Memory.defaultHeapSize = 20000; +//Program.heap = 40000; +//Program.stack = 4096; Clock.timerId = 7; @@ -27,15 +30,7 @@ Program.global.adcHwi = Hwi.create(30, "&ADC0SS0Handler", hwi0Params); var hwi1Params = new Hwi.Params(); hwi1Params.instance.name = "sysTick"; Program.global.sysTick = Hwi.create(15, "&SysTickHandler", hwi1Params); -/*var hwi2Params = new Hwi.Params(); -hwi2Params.instance.name = "UART0"; -Program.global.uart0 = Hwi.create(21, "&USB0Handler", hwi2Params); -*/ -/* -var hwi21Params = new Hwi.Params(); -hwi21Params.instance.name = "portpint"; -Program.global.portpint = Hwi.create(92, "&PortPIntHandler", hwi21Params); -*/ + var hwi13Params = new Hwi.Params(); hwi13Params.instance.name = "timer0"; hwi13Params.priority = 128; @@ -51,10 +46,6 @@ hwi15Params.arg = 2; hwi15Params.priority = 160; Program.global.timer2 = Hwi.create(39, "&EightMilliSecondHeatersInterrupt", hwi15Params); -/*var hwi5Params = new Hwi.Params(); -hwi5Params.instance.name = "usb0"; -Program.global.usb0 = Hwi.create(58, "&USBCDCD_hwiHandler", hwi5Params);*/ - var hwi6Params = new Hwi.Params(); hwi6Params.instance.name = "timer1"; hwi6Params.priority = 128; @@ -66,33 +57,11 @@ hwi17Params.arg = 3; hwi17Params.priority = 96; Program.global.timer3 = Hwi.create(51, "&ScrewTimerInterrupt", hwi17Params); -/* -var semaphore1Params = new Semaphore.Params(); -semaphore1Params.instance.name = "messageSem"; -semaphore1Params.mode = Semaphore.Mode_BINARY; -Program.global.messageSem = Semaphore.create(null, semaphore1Params); - -var semaphore2Params = new Semaphore.Params(); -semaphore2Params.instance.name = "selfCheckSem"; -semaphore2Params.mode = Semaphore.Mode_BINARY; -Program.global.selfCheckSem = Semaphore.create(null, semaphore2Params); - -*/ var semaphore4Params = new Semaphore.Params(); semaphore4Params.instance.name = "initConnectionSem"; semaphore4Params.mode = Semaphore.Mode_BINARY; Program.global.initConnectionSem = Semaphore.create(null, semaphore4Params); -/* -var semaphore5Params = new Semaphore.Params(); -semaphore5Params.instance.name = "uart7Sem"; -semaphore5Params.mode = Semaphore.Mode_BINARY; -Program.global.uart7Sem = Semaphore.create(null, semaphore5Params); -var semaphore6Params = new Semaphore.Params(); -semaphore6Params.instance.name = "ethernetSem"; -semaphore6Params.mode = Semaphore.Mode_BINARY; -Program.global.ethernetSem = Semaphore.create(null, semaphore6Params); -*/ var semaphore0Params = new Semaphore.Params(); semaphore0Params.instance.name = "adcResultSem"; semaphore0Params.mode = Semaphore.Mode_BINARY; @@ -267,4 +236,3 @@ Program.gen.debuggerFiles = false; Task.defaultStackSize = 1024; Task.idleTaskVitalTaskFlag = false; Task.enableIdleTask = false; -Program.stack = 4096; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 5b6066a5f..36825d232 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -139,7 +139,7 @@ Void errHook(Error_Block *eb) if (Fresult == FR_OK) { f_lseek(FileHandle, FileHandle->fsize); - strcpy(File,site->file); + strncpy(File,site->file,49); len = usnprintf(message, 80, "\r\n%s %s",__DATE__, __TIME__); Fresult = f_write(FileHandle,message,len,&Bytes ); /* print user supplied error code */ @@ -169,8 +169,10 @@ Void errHook(Error_Block *eb) Task_sleep (200); my_free(FileHandle); } +#ifdef WATCHDOG //Power_Reset(); SysCtlReset(); +#endif } //***************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 73532a7d2..a4e1379c5 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -1051,6 +1051,12 @@ void SendEventNotifications(void) if (AlarmState[i].Status == true) { EventsResponse.n_events++; + if ((AlarmState[i].EventPtr == NULL) ||(AlarmState[i].EventPtr->base.descriptor->sizeof_message != 24)) + { + LOG_ERROR(i,"bad pointer for event"); + EventsResponse.n_events--; + AlarmState[i].Status = false; + } } } @@ -1098,10 +1104,12 @@ void SendEventNotifications(void) my_free(container_buffer); } } + else + AlarmHandlingStop(); if (EventsResponse.events) my_free(EventsResponse.events); - if (responseContainer.data.data) - my_free(responseContainer.data.data); + //if (responseContainer.data.data) + // my_free(responseContainer.data.data); } uint32_t ResolveEventRequestFunc(MessageContainer* requestContainer) { diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index b89fa43ed..a3b2022e9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -423,7 +423,7 @@ int j=0; MessageContainer diagnosticsresponseContainer; uint8_t diagnostics_response_buffer[3500]; uint8_t *diagnostics_response_ptr = diagnostics_response_buffer; -uint8_t* diagnosticscontainer_buffer=0; +char * diagnosticscontainer_buffer=0; int LargeMessagesD = 0; void SendDiagnostics(void) diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 277891861..b0351b4ff 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -235,33 +235,41 @@ uint32_t ProcessParamsInit(void) UploadProcessParametersRequest* request; FileHandle = my_malloc(sizeof(FIL)); - Fresult = FileOpen(ProcessParamsConfigPath, &Bytes, FileHandle); - if (Fresult == FR_OK) + if (FileHandle) { - buffer = my_malloc (Bytes); - if (buffer) + Fresult = FileOpen(ProcessParamsConfigPath, &Bytes, FileHandle); + if (Fresult == FR_OK) { - for (i=0;i<=(Bytes/100);i++) + buffer = my_malloc (Bytes); + if (buffer) { - Fresult = f_read(FileHandle,&buffer[i*100],100,&j ); - k+=j; - } - if (k!=Bytes) - LOG_ERROR(k,"File read error"); + for (i=0;i<=(Bytes/100);i++) + { + Fresult = f_read(FileHandle,&buffer[i*100],100,&j ); + k+=j; + } + if (k!=Bytes) + LOG_ERROR(k,"File read error"); - request = upload_process_parameters_request__unpack(NULL, Bytes, buffer); - // ProcessParameters* ProcessParams = process_parameters__unpack(NULL, Bytes, buffer); - if (request) - { - ProcessParameters* ProcessParams = request->processparameters; - Fresult = HandleProcessParameters(ProcessParams); - //memcpy (&ProcessParametersKeep,ProcessParams,sizeof(ProcessParameters)); - upload_process_parameters_request__free_unpacked(request,NULL); - } - free (buffer); + request = upload_process_parameters_request__unpack(NULL, Bytes, buffer); + // ProcessParameters* ProcessParams = process_parameters__unpack(NULL, Bytes, buffer); + if (request) + { + ProcessParameters* ProcessParams = request->processparameters; + Fresult = HandleProcessParameters(ProcessParams); + //memcpy (&ProcessParametersKeep,ProcessParams,sizeof(ProcessParameters)); + upload_process_parameters_request__free_unpacked(request,NULL); + } + my_free (buffer); + } + f_close(FileHandle); + } + else + { + LOG_ERROR(Fresult,"File open error"); } + my_free (FileHandle); } - f_close(FileHandle); return Fresult; } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index 0907c4a67..e9efd97df 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -207,7 +207,7 @@ uint32_t IDS_StopHomeDispenser (uint32_t DispenserId) Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer if (DispenserId == LUBRICANT_DISPENSER) { - Lubricant_2Way_Valve (START); + Lubricant_2Way_Valve (STOP); } MotorSetMicroStep(MotorId, MotorsCfg[MotorId].microstep); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index aea16bb60..f7cf38ba8 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -475,12 +475,16 @@ c. Go to step 2.a x Segment.BrushStopsCount. if (SegmentPtr) my_free(SegmentPtr); + SegmentPtr = NULL; if (BrushStopPtr) my_free(BrushStopPtr); + BrushStopPtr = NULL; if (Segment != NULL) job_description_file_segment__free_unpacked(Segment,NULL); + Segment = NULL; if (BrushStop != NULL) job_description_file_brush_stop__free_unpacked (BrushStop,NULL); + BrushStop = NULL; Fresult = f_close(FileHandle); GeneralHwReady = true; REPORT_MSG (n_segments, "Finished checking the file"); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index a285d4194..4743008e5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -114,7 +114,10 @@ uint32_t Control_Delta_Position_Pass(uint32_t Current_Read,uint32_t Previous_Rea if (Current_Read < Previous_Read) + { Time_Pass = (MAX_COUNTER - Previous_Read) + Current_Read + 1; + Report("Length rollover",__FILE__,__LINE__,(int)Current_Read,RpWarning,(int)Previous_Read,0); + } else Time_Pass = Current_Read - Previous_Read; @@ -771,7 +774,7 @@ void SetOriginMotorSpeed(float process_speed) //MotorControlConfig[Motor_i].m_SetParam = motor_speed; OriginalMotorSpd_2PPS[Motor_i] = (int) motor_speed; CurrentControlledSpeed[Motor_i] = (int) motor_speed; - Report("Original Speed",__FILE__,Motor_i,motor_speed,RpWarning,process_speed,0); + //Report("Original Speed",__FILE__,Motor_i,motor_speed,RpWarning,process_speed,0); for (i = 0; i <= MAX_CONTROL_SAMPLES; i++) MotorSpeedSamples[Motor_i][i] = motor_speed; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index f5ae89368..44dd09030 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -860,7 +860,8 @@ void AbortJob(char *Msg) Message.messageId = Abort; PrtMessage->messageId = PrintSystemFailure; - strcpy(PrtMessage->messageData,Msg); + strncpy(PrtMessage->messageData,Msg,99); + //PrtMessage->messageData[99] = NULL; Message.msglen = 10; if (JobmsgQ != NULL) Mailbox_post(JobmsgQ , &Message, BIOS_NO_WAIT); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 2aa260e9f..484dc9e7e 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -122,9 +122,15 @@ FRESULT CloseJobFile() my_free (JobRequestFileHandle); JobRequestFileHandle = NULL; if (BrushStopPtr) + { my_free(BrushStopPtr); + BrushStopPtr = NULL; + } if (SegmentPtr) + { my_free(SegmentPtr); + SegmentPtr = NULL; + } REPORT_MSG(Fresult,"CloseJobFile"); return Fresult; @@ -145,7 +151,10 @@ JobDescriptionFileSegment *GetNextSegmentFromJobFile() { readbBytes += ImmediateRead; if (SegmentPtr) + { my_free(SegmentPtr); + SegmentPtr = NULL; + } SegmentPtr = my_malloc (SegmentSize); if (SegmentPtr) { @@ -158,6 +167,7 @@ JobDescriptionFileSegment *GetNextSegmentFromJobFile() } }// read segment data my_free(SegmentPtr); + SegmentPtr = NULL; }//segment malloc else { @@ -181,6 +191,7 @@ void FreeSegmentFileData(JobDescriptionFileSegment *Segment) Segment = NULL; if (SegmentPtr) my_free(SegmentPtr); + SegmentPtr = NULL; } JobDescriptionFileBrushStop *GetNextBrushStopFromJobFile() { @@ -196,7 +207,10 @@ JobDescriptionFileBrushStop *GetNextBrushStopFromJobFile() { readbBytes += ImmediateRead; if (BrushStopPtr) + { my_free(BrushStopPtr); + BrushStopPtr = NULL; + } BrushStopPtr = my_malloc (BrushStopSize); if (BrushStopPtr) @@ -213,6 +227,7 @@ JobDescriptionFileBrushStop *GetNextBrushStopFromJobFile() //status = ERROR; } my_free(BrushStopPtr); + BrushStopPtr = NULL; }//brushstop size read ok else { @@ -237,6 +252,7 @@ void FreeBrushStopFileData(JobDescriptionFileBrushStop *BrushStop) BrushStop = NULL; if (BrushStopPtr) my_free(BrushStopPtr); + BrushStopPtr = NULL; } /************************************************************************************************************************************/ /* this function is for development initial stages. it analyses the hardware configuration to determine which modules are operational @@ -546,7 +562,7 @@ uint32_t EndState(void *JobDetails, char *Message) { //ROM_IntMasterDisable(); //SuspendLargeMessages = true; - LOG_ERROR(2,"SuspendLargeMessages EndState"); + //LOG_ERROR(2,"SuspendLargeMessages EndState"); //DiagnosticsStop(); if (Configured[Module_Winder]) { |
