aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-08-26 10:55:44 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-08-26 10:55:44 +0300
commit6e2fbaffeec9d6e3518ea9706eea107a4f1b348c (patch)
treef50b3d8962dd37188061f8f52c1a7aeff1642232 /Software/Embedded_SW/Embedded/Modules
parentdb3dc558ec5fe5f3584081795865cd22f912da7d (diff)
parente6704dce7a2b7f6d5f9bbf1b8374cc7f00ea061e (diff)
downloadTango-6e2fbaffeec9d6e3518ea9706eea107a4f1b348c.tar.gz
Tango-6e2fbaffeec9d6e3518ea9706eea107a4f1b348c.zip
merge
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c110
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c2
3 files changed, 76 insertions, 40 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 477fc0732..1eabcdeba 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -50,12 +50,17 @@ uint32_t Diagnostics_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue);
uint32_t Diagnostics_TenMiliControlTrigger(uint32_t IfIndex, uint32_t ReadValue);
+DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT;
+
#define DIAGNOSTICS_LIMIT 10
#define DIAGNOSTICS_DANCER_LIMIT 100
int DiagnosticsIndex = 0;
int DiagnosticCollectionLimit = 3; //number of data samples to collect before sending to the host
-int DiagnosticLimit = eHundredMillisecond; //frequency of data collection
+//int DiagnosticLimit = eHundredMillisecond; //frequency of data collection
+//int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection
+int DiagnosticLimit =eHundredMillisecond; //frequency of data collection
int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection
+
//DigitalPin DigitalPinArray[1][DIAGNOSTICS_LIMIT];
double dancer1angle[DIAGNOSTICS_LIMIT];
double dancer2angle[DIAGNOSTICS_LIMIT];
@@ -81,6 +86,9 @@ double dryerzone3temperature[DIAGNOSTICS_LIMIT];
double dispensermotorfrequency[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT];
double dispenserspressure[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT];
+DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS];
+DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS];
+
/*double dispenser1motorfrequency[DIAGNOSTICS_LIMIT];
double dispenser2motorfrequency[DIAGNOSTICS_LIMIT];
double dispenser3motorfrequency[DIAGNOSTICS_LIMIT];
@@ -116,12 +124,23 @@ typedef struct DiagnosticsMessage{
void DiagnosticsInit(void)
{
+ int i;
Error_Block eb;
Error_init(&eb);
DiagnosticsMsgQ = Mailbox_create(sizeof(DiagnosticsMessageStruc), 20, NULL,&eb);
+ DiagnosticsMonitor.dispensersmotorsfrequency = (DoubleArray**)malloc(sizeof(DoubleArray *)*8);
+ DiagnosticsMonitor.dispenserspressure = (DoubleArray**)malloc(sizeof(DoubleArray)*8);
+ DiagnosticsMonitor.dispenserslinearpositions = (DoubleArray**)malloc(sizeof(DoubleArray)*8);
+ DiagnosticsMonitor.dispensersangularencoders = (DoubleArray**)malloc(sizeof(DoubleArray)*8);
+ for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++)
+ {
+ double_array__init(&DispenserFreq[i]);
+ double_array__init(&DiagnosticsDispenserPressure[i]);
+ }
+
return;
}
uint8_t HeaterCounterIndex[MAX_HEATERS_NUM]= {0,0,0,0,0,0,0,0,0,0};
@@ -287,11 +306,9 @@ void DiagnosticsReset(void)
DiagnosticsIndex = 0;
}
-DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT;
-//Double *DispenserFreq[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0};
-//Double *DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS] = {0,0,0,0,0,0,0,0};
-DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS] = {DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT};
-DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS] = {DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT,DOUBLE_ARRAY__INIT};
+int j=0;
+MessageContainer diagnosticsresponseContainer;
+uint8_t* diagnosticscontainer_buffer;
void SendDiagnostics(void)
{
MessageContainer responseContainer;
@@ -382,34 +399,43 @@ void SendDiagnostics(void)
DiagnosticsMonitor.blowervoltage = &voltage;
memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex));
-/*
- if (JobIsActive())
+ int i;
+ DiagnosticsMonitor.n_dispensersmotorsfrequency = 0;
+ /*
+ if (JobIsActive())
{
-
+ j++;
DiagnosticsMonitor.n_dispensersmotorsfrequency = MAX_SYSTEM_DISPENSERS;
- DiagnosticsMonitor.dispensersmotorsfrequency = (DoubleArray**)malloc(sizeof(DoubleArray)*8);
-
- for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++)
+ if (DiagnosticsMonitor.dispensersmotorsfrequency)
{
- //double_array__init(&DispenserFreq[i]);
- //DispenserFreq[i] = dispensermotorfrequency[i];
- DispenserFreq[i].data = dispensermotorfrequency[i];
- DispenserFreq[i].n_data = DiagnosticsIndex;
- DiagnosticsMonitor.dispensersmotorsfrequency[i] = &DispenserFreq[i];
+ for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++)
+ {
+ //double_array__init(&DispenserFreq[i]);
+ //DispenserFreq[i] = dispensermotorfrequency[i];
+ DispenserFreq[i].data = dispensermotorfrequency[i];
+ DispenserFreq[i].n_data = DiagnosticsIndex;
+ DiagnosticsMonitor.dispensersmotorsfrequency[i] = &DispenserFreq[i];
+ }
}
}
-
- DiagnosticsMonitor.n_dispenserspressure = MAX_SYSTEM_DISPENSERS;
- DiagnosticsMonitor.dispenserspressure = (DoubleArray**)malloc(sizeof(DoubleArray)*8);
- for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++)
+ */
+ DiagnosticsMonitor.n_dispenserspressure = 0;
+ /*
+ DiagnosticsMonitor.n_dispenserspressure = MAX_SYSTEM_DISPENSERS;
+ if (DiagnosticsMonitor.dispenserspressure)
{
- //DiagnosticsDispenserPressure[i] = dispenserspressure[i];
- //double_array__init(&DiagnosticsDispenserPressure[i]);
- DiagnosticsDispenserPressure[i].data = dispenserspressure[i];
- DiagnosticsDispenserPressure[i].n_data = DiagnosticsIndex;
- DiagnosticsMonitor.dispenserspressure[i] = &DiagnosticsDispenserPressure[i];
+ for (i = 0; i<MAX_SYSTEM_DISPENSERS;i++)
+ {
+ //DiagnosticsDispenserPressure[i] = dispenserspressure[i];
+ //double_array__init(&DiagnosticsDispenserPressure[i]);
+ DiagnosticsDispenserPressure[i].data = dispenserspressure[i];
+ DiagnosticsDispenserPressure[i].n_data = DiagnosticsIndex;
+ DiagnosticsMonitor.dispenserspressure[i] = &DiagnosticsDispenserPressure[i];
+ }
}
*/
+ DiagnosticsMonitor.n_dispenserslinearpositions = 0;
+ DiagnosticsMonitor.n_dispensersangularencoders = 0;
DiagnosticsMonitor.n_dispenser1pressure = DiagnosticsIndex;
DiagnosticsMonitor.dispenser1pressure = dispenserspressure[0];
@@ -447,21 +473,29 @@ void SendDiagnostics(void)
}
}
*/
- responseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size);
- responseContainer.continuous = true;
-
- uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
- size_t container_size = message_container__pack(&responseContainer, container_buffer);
- free(responseContainer.data.data);
- free(DiagnosticsMonitor.dispenserspressure);
- free(DiagnosticsMonitor.dispensersmotorsfrequency);
-
- DiagnosticsReset();
+ diagnosticsresponseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size);
+ diagnosticsresponseContainer.continuous = true;
- if (SendChars(container_buffer, container_size) == false) //comm tx mailbox full
+ diagnosticscontainer_buffer = 0;
+ diagnosticscontainer_buffer = malloc(message_container__get_packed_size(&diagnosticsresponseContainer));
+ if (diagnosticscontainer_buffer)
{
- DiagnosticsStop();
+ size_t container_size = message_container__pack(&diagnosticsresponseContainer, diagnosticscontainer_buffer);
+ //memmap();
+ free(diagnosticsresponseContainer.data.data);
+ //free(DiagnosticsMonitor.dispenserspressure);
+ //free(DiagnosticsMonitor.dispensersmotorsfrequency);
+ if (SendChars(diagnosticscontainer_buffer, container_size) == false) //comm tx mailbox full
+ {
+ DiagnosticsStop();
+ }
}
+ else
+ {
+ LOG_ERROR(Task_self(),"malloc failed");
+ }
+ DiagnosticsReset();
+
}
uint32_t DiagnosticsControlId = 0xff;
uint32_t Diagnostics10MSControlId = 0xff;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index 03cdea5e9..c40d018c3 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -240,6 +240,10 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
}
else if ((HeaterState == HEATER_ON)&& (OnOff == HEATER_ON)) //set temperature
{
+ if (HeaterPIDConfig[HeaterId].m_SetParam < HeaterCmd[HeaterId].targettemperatue) //#bug 221
+ {
+ PrepareHeater(HeaterId,Temperature); //prepare the heaters control info
+ }
HeaterPIDConfig[HeaterId].m_SetParam = HeaterCmd[HeaterId].targettemperatue;
// if the heater is not on return (?).
//set the target operation temperature
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
index 6203b40cc..6bd4e6f48 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
@@ -12,8 +12,6 @@
#include "Drivers/USB_Communication/USBCDCD.h"
-
-
#include "Stub_Status.h"
void Stub_CartridgeReadRequest(MessageContainer* requestContainer)