aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-05-30 17:33:20 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-05-30 17:33:20 +0300
commitb525fbcad1ac8c7126caa82ec8458ffbb6284384 (patch)
tree61abe4c1610fc2e0b6af8e5f926d5624692df2fe /Software/Embedded_SW/Embedded
parent405096b3d489f4ea7b50b1d5db7d32241251b8d7 (diff)
downloadTango-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/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c14
-rw-r--r--Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c3
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/Common/Utilities/Utils.c14
-rw-r--r--Software/Embedded_SW/Embedded/Common/report/distributor.c3
-rw-r--r--Software/Embedded_SW/Embedded/Common/report/reportInit.c6
-rw-r--r--Software/Embedded_SW/Embedded/Communication/CommunicationTask.c11
-rw-r--r--Software/Embedded_SW/Embedded/Communication/Container.c42
-rw-r--r--Software/Embedded_SW/Embedded/Embedded.cfg50
-rw-r--r--Software/Embedded_SW/Embedded/Main.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c12
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c50
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c5
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c3
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c18
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])
{