diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-23 11:39:25 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-23 11:39:25 +0300 |
| commit | 44f71ccd29edeeb13621996659232fca4554faf1 (patch) | |
| tree | c0dfb8941563806a3b3d32bdbaadb55007a905e8 /Software/Embedded_SW/Embedded/Modules | |
| parent | 9f4fa3e0a6bafe27dd1e584838e45d61864a70fd (diff) | |
| parent | b92bebe3f84a5ef683e44decf1991359fb3a4e21 (diff) | |
| download | Tango-44f71ccd29edeeb13621996659232fca4554faf1.tar.gz Tango-44f71ccd29edeeb13621996659232fca4554faf1.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
10 files changed, 221 insertions, 72 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 8fc36b7f4..f9f075477 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -361,6 +361,11 @@ uint32_t AlarmHandlingLoop(uint32_t tick) case CurrentAlarm: break; case MotorAlarm: + if (isMotorConfigured(AlarmItem[Alarm_i].DeviceId) == false) + { + Status = false; + break; + } value = MotorGetStatus(AlarmItem[Alarm_i].DeviceId); if (value && AlarmItem[Alarm_i].AlarmValue) // { @@ -441,7 +446,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) //machine cover open if (tick%eOneSecond == 0) -// SendEventNotifications(); + SendEventNotifications(); return OK; } /****************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c new file mode 100644 index 000000000..0f36a803b --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -0,0 +1,154 @@ +/* + * DiagnosticActions.c + * + * Created on: Aug 20, 2018 + * Author: shlomo + */ +#include <DataDef.h> +#include "include.h" + +#include "diagnostics.h" +#include <inc/hw_ints.h> +#include <Container.h> + +#include <PMR/Diagnostics/SetComponentValueRequest.pb-c.h> +#include <PMR/Diagnostics/SetComponentValueResponse.pb-c.h> + +#include <PMR/Diagnostics/SetDigitalOutRequest.pb-c.h> +#include <PMR/Diagnostics/SetDigitalOutResponse.pb-c.h> + +#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" +#include "Drivers/I2C_Communication/DAC/blower.h" +#include "drivers/Valves/Valve.h" + +typedef enum +{ + GPO_DILUTORPUMP_SSR10_CTRL, + GPO_WASTECH_PUMP2, + Midtank_1_Air, + Midtank_2_Air, + Midtank_3_Air, + Midtank_4_Air, + Midtank_5_Air, + Midtank_6_Air, + Midtank_7_Air, + Midtank_8_Air, + Midtank_1_Cartridge, + Midtank_2_Cartridge, + Midtank_3_Cartridge, + Midtank_4_Cartridge, + Midtank_5_Cartridge, + Midtank_6_Cartridge, + Midtank_7_Cartridge, + Midtank_8_Cartridge, + GPO_BUZZER, + GPO_LED1, + GPO_LED2, + GPO_LED3, + GPO_LED4, + GPO_TFEED_BREAK_1, + GPO_TFEED_BREAK_2, + GPO_SPARE1_1, + GPO_SPARE1_2, + GPO_SPARE2_1, + GPO_SPARE2_2, + GPO_BLOWER_PWM, + GPO_CHILLER_SSR9_CTRL, + GPO_WHS_WTANKPUMP2, + GPO_VALVE_WASTE_TANK, +}DigitalOutputEnum; +/******************************************************************************** + *Blower Diagnostic + ********************************************************************************/ +uint32_t SetComponentValueRequestRequestFunc(MessageContainer* requestContainer) +{ + MessageContainer responseContainer; + uint8_t* container_buffer; + uint32_t status = 0; + uint32_t intvoltage; + SetComponentValueRequest* request = set_component_value_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + + + SetComponentValueResponse response = SET_COMPONENT_VALUE_RESPONSE__INIT; + + responseContainer = createContainer(MESSAGE_TYPE__SetComponentValueResponse, requestContainer->token, true, &response, &set_component_value_response__pack, &set_component_value_response__get_packed_size); + container_buffer = malloc(message_container__get_packed_size(&responseContainer)); + + + switch (request->component) + { + case VALUE_COMPONENT__BlowerVoltage: + blowervolatgedisplay = true; + voltage = request->value; + if (voltage == 0.0) + Turn_the_Blower_Off(); + else + { + Turn_the_Blower_On(); + intvoltage = voltage; + Control_Voltage_To_Blower(intvoltage); + } + break; + default: + break; + } + + size_t container_size = message_container__pack(&responseContainer, container_buffer); + free(responseContainer.data.data); + SendChars(container_buffer, container_size); + //free(container_buffer); + //free(requestContainer); + set_component_value_request__free_unpacked(request,NULL); + + return OK; +} + +/******************************************************************************** + *Set digital output Diagnostic + ********************************************************************************/ +uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer) +{ + MessageContainer responseContainer; + uint8_t* container_buffer; + uint32_t status = 0; + int portId; + SetDigitalOutRequest* request = set_digital_out_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + + + SetDigitalOutResponse response = SET_DIGITAL_OUT_RESPONSE__INIT; + + responseContainer = createContainer(MESSAGE_TYPE__SetDigitalOutResponse, requestContainer->token, true, &response, &set_digital_out_response__pack, &set_digital_out_response__get_packed_size); + container_buffer = malloc(message_container__get_packed_size(&responseContainer)); + + + if ((request->port >= Midtank_1_Air)&&(request->port >=Midtank_8_Air)) + { + portId = (request->port - Midtank_1_Air) ; //0-7 + Valve_Set((Valves_t) (portId+VALVE_2W_MID_AIR_LF), request->value ); //Atm_MidTank_OFF/ON + } + else if ((request->port >= Midtank_1_Cartridge)&&(request->port >=Midtank_8_Cartridge)) + { + portId = (request->port - Midtank_1_Cartridge) ; //0-7 + Valve_Set((Valves_t) (portId+VALVE_2W_CART_MID_LF), request->value ); //Cartridge_MidTank_OFF/ON + } + else + { + status = ERROR; + responseContainer.has_error = true; + responseContainer.error = ERROR_CODE__INVALID_DIGITAL_PIN_NUMBER; + } + + size_t container_size = message_container__pack(&responseContainer, container_buffer); + free(responseContainer.data.data); + SendChars(container_buffer, container_size); + //free(container_buffer); + //free(requestContainer); + set_digital_out_request__free_unpacked(request,NULL); + + return OK; +} + + + diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h index 82d267bd6..3fc0969f8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h @@ -34,6 +34,7 @@ uint32_t MotorAbortJoggingRequestFunc(MessageContainer* requestContainer); uint32_t DispenserAbortJoggingRequestFunc(MessageContainer* requestContainer); uint32_t SetComponentValueRequestRequestFunc(MessageContainer* requestContainer); +uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index bb8da0b2e..af8932872 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -59,11 +59,6 @@ FPGA_GPI_ENUM Motor_Id_to_LS_Id[NUM_OF_MOTORS] = { MAX_GPI, //MOTO_RDRIVING = 22, GPI_LS_RLOADRAM_UP, //MOTO_RLOADARM = 23, GPI_LS_RLOADMOTOR_DOWN, //MOTO_RLOADING = 24, - MAX_GPI, //MOTO_SPARE1_1 = 25, - MAX_GPI, //MOTO_SPARE1_2 = 26, - MAX_GPI, //MOTO_SPARE2_1 = 27, - MAX_GPI, //MOTO_SPARE2_2 = 28 - }; typedef enum { MotorHomingDirectionUp, @@ -97,11 +92,6 @@ MotorHomingDirectionEnum Motor_Id_to_LS_Direction[NUM_OF_MOTORS] = { MotorHomingDirectionNoHoming, //MOTO_RDRIVING = 22, MotorHomingDirectionUp, //MOTO_RLOADARM = 23, MotorHomingDirectionDown, //MOTO_RLOADING = 24, - MotorHomingDirectionNoHoming, //MOTO_SPARE1_1 = 25, - MotorHomingDirectionNoHoming, //MOTO_SPARE1_2 = 26, - MotorHomingDirectionNoHoming, //MOTO_SPARE2_1 = 27, - MotorHomingDirectionNoHoming, //MOTO_SPARE2_2 = 28 - }; char HomingToken[NUM_OF_MOTORS][36+1]={0}; @@ -138,7 +128,7 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer) if (speed == 0) speed = 150; if (MotorId <= NUM_OF_MOTORS) { - if (JobIsActive() == false) + if ((JobIsActive() == false)&&(isMotorConfigured(MotorId) == true)) { if ( Motor_Id_to_LS_Id[MotorId] != MAX_GPI) { @@ -230,7 +220,7 @@ uint32_t DispenserHomingRequestFunc(MessageContainer* requestContainer) //free (container_buffer); if (MotorId <= NUM_OF_MOTORS) { - if (JobIsActive() == false) + if ((JobIsActive() == false)&&(isMotorConfigured(MotorId) == true)) { if ( Motor_Id_to_LS_Id[MotorId] != MAX_GPI) { diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsJogging.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsJogging.c index cf341b9a9..32e76cbde 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsJogging.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsJogging.c @@ -32,13 +32,9 @@ #include <PMR/Diagnostics/MotorAbortJoggingRequest.pb-c.h> #include <PMR/Diagnostics/MotorAbortJoggingResponse.pb-c.h> -#include <PMR/Diagnostics/SetComponentValueRequest.pb-c.h> -#include <PMR/Diagnostics/SetComponentValueResponse.pb-c.h> - #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/Motors/Motor.h" #include "drivers/Valves/Valve.h" -#include "Drivers/I2C_Communication/DAC/blower.h" #include "StateMachines/Printing/PrintingSTM.h" @@ -63,7 +59,7 @@ uint32_t MotorJoggingRequestFunc(MessageContainer* requestContainer) if (MotorId <= NUM_OF_MOTORS) { - if (JobIsActive() == false) + if ((JobIsActive() == false)&&(isMotorConfigured(MotorId) == true)) { { switch (request->direction) @@ -149,7 +145,7 @@ uint32_t DispenserJoggingRequestFunc(MessageContainer* requestContainer) if (MotorId <= NUM_OF_MOTORS) { - if (JobIsActive() == false) + if ((JobIsActive() == false)&&(isMotorConfigured(MotorId) == true)) { switch (request->direction) { @@ -212,51 +208,4 @@ uint32_t DispenserAbortJoggingRequestFunc(MessageContainer* requestContainer) return OK; } -/******************************************************************************** - *Blower Diagnostic - ********************************************************************************/ -uint32_t SetComponentValueRequestRequestFunc(MessageContainer* requestContainer) -{ - MessageContainer responseContainer; - uint8_t* container_buffer; - uint32_t status = 0; - uint32_t intvoltage; - SetComponentValueRequest* request = set_component_value_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - - - - SetComponentValueResponse response = SET_COMPONENT_VALUE_RESPONSE__INIT; - - responseContainer = createContainer(MESSAGE_TYPE__SetComponentValueResponse, requestContainer->token, true, &response, &set_component_value_response__pack, &set_component_value_response__get_packed_size); - container_buffer = malloc(message_container__get_packed_size(&responseContainer)); - - - switch (request->component) - { - case VALUE_COMPONENT__BlowerVoltage: - blowervolatgedisplay = true; - voltage = request->value; - if (voltage == 0.0) - Turn_the_Blower_Off(); - else - { - Turn_the_Blower_On(); - intvoltage = voltage; - Control_Voltage_To_Blower(intvoltage); - } - break; - default: - break; - } - - size_t container_size = message_container__pack(&responseContainer, container_buffer); - free(responseContainer.data.data); - SendChars(container_buffer, container_size); - //free(container_buffer); - //free(requestContainer); - set_component_value_request__free_unpacked(request,NULL); - - return OK; -} - diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c index 185d4ac66..b035ff97b 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c @@ -69,6 +69,8 @@ float CalculateDispenserPressure (int DispenserId) //DispenserPressure[DispenserId] *=10000000; //uBar; //DispenserPressure[DispenserId] *=145.0377; //PSI; + DispenserPressure[DispenserId] *= 10; //MPascal -> Bar + return(DispenserPressure[DispenserId]); } 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 581a27f1f..68b79edeb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c @@ -12,7 +12,7 @@ #include "Drivers/USB_Communication/USBCDCD.h" - +//#include "drivers/twine_graphicslib/graphics_adapter.h" #include "Stub_Status.h" @@ -25,6 +25,20 @@ void Stub_CartridgeReadRequest(MessageContainer* requestContainer) //request->cartridgeid + //writeLine("cartridge Request: "); + + //writeFloat(request->cartridgeid); + + /* + int i; + for( i=0;i<8;i++) + { + Read_MidTank_Pressure_Sensor(i); + SysCtlDelay(1); + } + + */ + StubCartridgeReadResponse response = STUB_CARTRIDGE_READ_RESPONSE__INIT; response.cartridgeid = request->cartridgeid; @@ -43,8 +57,20 @@ 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); @@ -71,8 +97,19 @@ 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; @@ -83,7 +120,13 @@ 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); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c index 0bcc9f7c9..7c0a4c980 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c @@ -9,6 +9,7 @@ #include "Drivers/USB_Communication/USBCDCD.h" #include "drivers/adc_sampling/adc.h" +#include "modules/ids/ids_ex.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c index f478e9428..51c92ed8c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c @@ -300,10 +300,10 @@ void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer) StubExtFlashWriteWordsResponse response = STUB_EXT_FLASH_WRITE_WORDS_RESPONSE__INIT; - response.address = 0;// alwayes send sddress 0 - response.has_address = true; + uint32_t Current_Start_address = ExtFlashWriteBuf(/*0,*/request->n_wordtwrite, request->wordtwrite);// alwayes send sddress 0 - uint32_t Address = ExtFlashWriteBuf(0,request->n_wordtwrite, request->wordtwrite);// alwayes send sddress 0 + response.address = Current_Start_address; + response.has_address = true; status_response(status,&response.status, &response.statusword ,&response.has_statusword); @@ -331,6 +331,9 @@ void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer) response.readbytes = ExtFlashReadBuf(request->address,request->number_of_words); response.n_readbytes = request->number_of_words; + response.address = request->address; + response.has_address = true; + status_response(status,&response.status, &response.statusword ,&response.has_statusword); responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashReadWordsResponse, requestContainer->token, true, &response, &stub_ext_flash_read_words_response__pack, &stub_ext_flash_read_words_response__get_packed_size); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c index a433be2ce..eea594817 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c @@ -34,6 +34,7 @@ #include "drivers/SPI/SPI_Comm.h" #include "drivers/FPGA/FPGA_SSI_Comm.h" #include "Modules/Thread/Thread_ex.h" +#include <Drivers/SSI_Comm/Speed_Sensor/Speed_Sensor.h> #include "Modules/thread/thread.h" |
