aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-08-26 20:16:36 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-08-26 20:16:36 +0300
commitffcb06ec20597465cdbe62040bacfb4bfc7d5de0 (patch)
treea04dc382c38a8e18efb5957226a2af9d2b552296 /Software/Embedded_SW/Embedded/Modules
parente263a67205beca03687895166cf462f07f24187f (diff)
parentd3ec83acd93eb8338f3d846e9e3c1bedfb480ce1 (diff)
downloadTango-ffcb06ec20597465cdbe62040bacfb4bfc7d5de0.tar.gz
Tango-ffcb06ec20597465cdbe62040bacfb4bfc7d5de0.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c124
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c14
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c39
4 files changed, 94 insertions, 87 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 477fc0732..a85e1cfde 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};
@@ -161,7 +180,7 @@ void DiagnosticLoadTemperature(int HeaterId, int temperature)
}
void DiagnosticLoadSpeedSensor(uint32_t value)
{
- SpeedValue[SpeedCounterIndex] = value/100;
+ SpeedValue[SpeedCounterIndex] = value;
SpeedCounterIndex++;
if (SpeedCounterIndex>=DIAGNOSTICS_DANCER_LIMIT )
SpeedCounterIndex = 0;
@@ -183,8 +202,8 @@ void DiagnosticTenMsecCollection(void)
{
if (DiagnosticsActive == false)
return;
- if (JobIsActive()== false)
- return;
+ /*if (JobIsActive()== false)
+ return;*/
DiagnosticLoadDancer(WINDER_DANCER,Control_Read_Dancer_Position(WINDER_DANCER, 0,0));
DiagnosticLoadDancer(POOLER_DANCER,Control_Read_Dancer_Position(POOLER_DANCER, 0,0));
DiagnosticLoadDancer(FEEDER_DANCER,Control_Read_Dancer_Position(FEEDER_DANCER, 0,0));
@@ -201,7 +220,7 @@ void Diagnostic100msecCollection(void)
// dancer2angle[DiagnosticsIndex] = Control_Read_Dancer_Position(POOLER_DANCER, 0,0);
// dancer3angle[DiagnosticsIndex] = Control_Read_Dancer_Position(FEEDER_DANCER, 0,0);
- if (JobIsActive())
+ //if (JobIsActive())
{
/* DiagnosticLoadMotor(FEEDER_MOTOR, MotorGetSpeed (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING)); ThreadGetMotorSpeed
DiagnosticLoadMotor(DRYER_MOTOR, MotorGetSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING));
@@ -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;
@@ -303,7 +320,7 @@ void SendDiagnostics(void)
- if (JobIsActive())
+ //if (JobIsActive())
{
DiagnosticsMonitor.n_dispenser1motorfrequency = DiagnosticsIndex;
DiagnosticsMonitor.n_dispenser2motorfrequency = DiagnosticsIndex;
@@ -330,7 +347,7 @@ void SendDiagnostics(void)
DiagnosticsMonitor.dancer2angle = dancer2angle;
DiagnosticsMonitor.dancer3angle = dancer3angle;
*/
- if (JobIsActive())
+ //if (JobIsActive())
{
DiagnosticsMonitor.n_dancer1angle = DancerCounterIndex[0];
DiagnosticsMonitor.n_dancer2angle = DancerCounterIndex[1];
@@ -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/StubRealTimeUsage.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c
index 997d67973..22c8432b6 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c
@@ -46,20 +46,24 @@ void Stub_RealTimeUsageRequest(MessageContainer* requestContainer)
StubRealTimeUsageResponse response = STUB_REAL_TIME_USAGE_RESPONSE__INIT;
- responseContainer = createContainer(MESSAGE_TYPE__StubRealTimeUsageResponse, requestContainer->token, true, &response, &stub_real_time_usage_response__pack, &stub_real_time_usage_response__get_packed_size);
uint32_t Percentile[101] = {0};
- IdleTaskGetLoadTable(Percentile);
response.n_percentile = 100;
- response.percentile = Percentile;
+ response.percentile = malloc(sizeof(response.percentile)*response.n_percentile);
+ if (response.percentile)
+ IdleTaskGetLoadTable(response.percentile);
+ else
+ response.n_percentile = 0;
//free(request);
//-------------------------------------------------------------------------------------------
+ responseContainer = createContainer(MESSAGE_TYPE__StubRealTimeUsageResponse, requestContainer->token, true, &response, &stub_real_time_usage_response__pack, &stub_real_time_usage_response__get_packed_size);
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);
SendChars((char*)container_buffer, container_size);
- //free(container_buffer);
- //free(requestContainer);
+ if (response.percentile)
+ free(response.percentile);
+
stub_real_time_usage_request__free_unpacked(request,NULL);
}
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 68b79edeb..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 "drivers/twine_graphicslib/graphics_adapter.h"
-
#include "Stub_Status.h"
void Stub_CartridgeReadRequest(MessageContainer* requestContainer)
@@ -25,10 +23,6 @@ void Stub_CartridgeReadRequest(MessageContainer* requestContainer)
//request->cartridgeid
- //writeLine("cartridge Request: ");
-
- //writeFloat(request->cartridgeid);
-
/*
int i;
for( i=0;i<8;i++)
@@ -57,20 +51,8 @@ void Stub_CartridgeReadRequest(MessageContainer* requestContainer)
response.has_cartridgeused = false;
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
-/*
- writeLine("Sending Response: ");
- writeFloat(response.cartridgeid);
- writeString(", ");
- writeFloat(response.cartridgecolor);
- writeString(", ");
- writeFloat(response.cartridgeversion);
- writeString(", ");
- writeFloat(response.cartridgedata);
- writeString(", ");
- writeFloat(response.cartridgeused);
- writeString(", ");
-*/
+
Write_status_response(status);
responseContainer = createContainer(MESSAGE_TYPE__StubCartridgeReadResponse, requestContainer->token, true, &response, &stub_cartridge_read_response__pack, &stub_cartridge_read_response__get_packed_size);
@@ -97,19 +79,8 @@ void Stub_CartridgeWriteRequest(MessageContainer* requestContainer)
//request->cartridgeversion
//request->cartridgedata
//request->cartridgeused
-/*
- writeLine("Cartridge Request: ");
- writeFloat(request->cartridgeid);
- writeString(", ");
- writeFloat(request->cartridgecolor);
- writeString(", ");
- writeFloat(request->cartridgeversion);
- writeString(", ");
- writeFloat(request->cartridgedata);
- writeString(", ");
- writeFloat(request->cartridgeused);
-*/
+
StubCartridgeWriteResponse response = STUB_CARTRIDGE_WRITE_RESPONSE__INIT;
response.cartridgeid = request->cartridgeid;
@@ -120,13 +91,7 @@ void Stub_CartridgeWriteRequest(MessageContainer* requestContainer)
// response.statusword = OK;
// response.has_statusword = true;
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
-/*
- writeLine("Sending Response: ");
- writeFloat(response.cartridgeid);
- writeString(", ");*/
-// writeFloat(response.statusword);
-// WRITELINESTATUS;
Write_status_response(status);
responseContainer = createContainer(MESSAGE_TYPE__StubCartridgeWriteResponse, requestContainer->token, true, &response, &stub_cartridge_write_response__pack, &stub_cartridge_write_response__get_packed_size);