diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-26 20:16:36 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-26 20:16:36 +0300 |
| commit | ffcb06ec20597465cdbe62040bacfb4bfc7d5de0 (patch) | |
| tree | a04dc382c38a8e18efb5957226a2af9d2b552296 /Software/Embedded_SW/Embedded/Modules | |
| parent | e263a67205beca03687895166cf462f07f24187f (diff) | |
| parent | d3ec83acd93eb8338f3d846e9e3c1bedfb480ce1 (diff) | |
| download | Tango-ffcb06ec20597465cdbe62040bacfb4bfc7d5de0.tar.gz Tango-ffcb06ec20597465cdbe62040bacfb4bfc7d5de0.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
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); |
