aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/General
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/General')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c348
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h313
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c121
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.h16
4 files changed, 798 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
new file mode 100644
index 000000000..1f5e3aa84
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -0,0 +1,348 @@
+/************************************************************************************************************************
+ * control.c
+ * Control module
+ *
+************************************************************************************************************************/
+#include "include.h"
+#include "GeneralHardware.h"
+#include "thread/thread.h"
+#include "ids/ids.h"
+#include "control/control.h"
+#include "heaters/heaters_ex.h"
+#include <Modules/Stubs_Handler/DataDef.h>
+#include "PMR/common/MessageContainer.pb-c.h"
+#include "Modules/Stubs_Handler/Container.h"
+#include "PMR/Hardware/UploadHardWareConfigurationRequest.pb-c.h"
+#include "PMR/Hardware/UploadHardWareConfigurationResponse.pb-c.h"
+
+PortInfoStruct PortInfoTable[MAX_PORT_ENUM] = {
+ {ANALOG_MIXCHIP_TEMP,"ANALOG_MIXCHIP_TEMP"},
+ {AN_DYEINGH_CURSEN_1,"AN_DYEINGH_CURSEN_1"},
+ {AN_DYEINGH_CURSEN_2,"AN_DYEINGH_CURSEN_2"},
+ {AN_DYEINGH_CURSEN_3,"AN_DYEINGH_CURSEN_3"},
+ {AN_DYEINGH_CURSEN_4,"AN_DYEINGH_CURSEN_4"},
+ {AN_DYEINGH_CURSEN_5,"AN_DYEINGH_CURSEN_5"},
+ {ANALOG_DYEINGH_TEMP1,"ANALOG_DYEINGH_TEMP1"},
+ {ANALOG_DYEINGH_TEMP2,"ANALOG_DYEINGH_TEMP2"},
+ {ANALOG_DYEINGH_TEMP3,"ANALOG_DYEINGH_TEMP3"},
+ {ANALOG_DYEINGH_TEMP4,"ANALOG_DYEINGH_TEMP4"},
+ {ANALOG_DYEINGH_TEMP5,"ANALOG_DYEINGH_TEMP5"},
+ {AN_DRYER_CURSEN1,"AN_DRYER_CURSEN1"},
+ {AN_DRYER_CURSEN2,"AN_DRYER_CURSEN2"},
+ {AN_DRYER_CURSEN3,"AN_DRYER_CURSEN3"},
+ {ANALOG_DRYER_TEMP1,"ANALOG_DRYER_TEMP1"},
+ {ANALOG_DRYER_TEMP2,"ANALOG_DRYER_TEMP2"},
+ {ANALOG_DRYER_TEMP3,"ANALOG_DRYER_TEMP3"},
+ {AN_ENCLOSURETEMP1,"AN_ENCLOSURETEMP1"},
+ {AN_ENCLOSURETEMP2,"AN_ENCLOSURETEMP2"},
+ {AN_ENCLOSURETEMP3,"AN_ENCLOSURETEMP3"},
+ {AN_IDS_PRESSENS_1,"AN_IDS_PRESSENS_1"},
+ {AN_IDS_PRESSENS_2,"AN_IDS_PRESSENS_2"},
+ {AN_IDS_PRESSENS_3,"AN_IDS_PRESSENS_3"},
+ {AN_IDS_PRESSENS_4,"AN_IDS_PRESSENS_4"},
+ {AN_IDS_PRESSENS_5,"AN_IDS_PRESSENS_5"},
+ {AN_IDS_PRESSENS_6,"AN_IDS_PRESSENS_6"},
+ {AN_IDS_PRESSENS_7,"AN_IDS_PRESSENS_7"},
+ {AN_IDS_PRESSENS_8,"AN_IDS_PRESSENS_8"},
+ {AN_MIDTANK_PRESSENS1,"AN_MIDTANK_PRESSENS1"},
+ {AN_MIDTANK_PRESSENS2,"AN_MIDTANK_PRESSENS2"},
+ {AN_MIDTANK_PRESSENS3,"AN_MIDTANK_PRESSENS3"},
+ {AN_MIDTANK_PRESSENS4,"AN_MIDTANK_PRESSENS4"},
+ {AN_MIDTANK_PRESSENS5,"AN_MIDTANK_PRESSENS5"},
+ {AN_MIDTANK_PRESSENS6,"AN_MIDTANK_PRESSENS6"},
+ {AN_MIDTANK_PRESSENS7,"AN_MIDTANK_PRESSENS7"},
+ {AN_MIXCHIP_CURSENn,"AN_MIXCHIP_CURSENn"},
+ {AN5V_LDANCER1,"AN5V_LDANCER1"},
+ {AN5V_LDANCER2,"AN5V_LDANCER2"},
+ {AN5V_RDANCER,"AN5V_RDANCER"},
+ {AN10V_SPARE1,"AN10V_SPARE1"},
+ {AN10V_SPARE2,"AN10V_SPARE2"},
+ {AN_AIRPRESS_1,"AN_AIRPRESS_1"},
+ {AN_AIRPRESS_2,"AN_AIRPRESS_2"},
+ {AN_VOCSENS,"AN_VOCSENS"},
+ {AN_BLOWERCTRL,"AN_BLOWERCTRL"},
+ {LS_DH_LID_CLEANING,"LS_DH_LID_CLEANING"},
+ {LS_DH_LID_CLOSED,"LS_DH_LID_CLOSED"},
+ {LS_DH_CLEAN_UP,"LS_DH_CLEAN_UP"},
+ {LS_DH_CLEAN_RIGHT,"LS_DH_CLEAN_RIGHT"},
+ {LS_DH_SPARE1,"LS_DH_SPARE1"},
+ {LS_DH_LID_OPEN,"LS_DH_LID_OPEN"},
+ {LS_DH_CLEAN_DOWN,"LS_DH_CLEAN_DOWN"},
+ {LS_DH_CLEAN_LEFT,"LS_DH_CLEAN_LEFT"},
+ {LS_DRYER_LID_OPEN,"LS_DRYER_LID_OPEN"},
+ {LS_DRYER_SPARE3,"LS_DRYER_SPARE3"},
+ {LS_DRYER_LID_CLOSED,"LS_DRYER_LID_CLOSED"},
+ {LS_DRYER_SPARE4,"LS_DRYER_SPARE4"},
+ {LS_DRYER_SPARE1,"LS_DRYER_SPARE1"},
+ {LS_LOADARM_RIGHT,"LS_LOADARM_RIGHT"},
+ {LS_DRYER_SPARE2,"LS_DRYER_SPARE2"},
+ {LS_LOADARM_LEFT,"LS_LOADARM_LEFT"},
+ {GPI_PS1_DC_OK,"GPI_PS1_DC_OK"},
+ {GPI_PANSW2,"GPI_PANSW2"},
+ {GPI_PANSW4,"GPI_PANSW4"},
+ {GPI_PANSW1,"GPI_PANSW1"},
+ {GPI_PANSW3,"GPI_PANSW3"},
+ {GPI_PANSW5,"GPI_PANSW5"},
+ {GPI_PANSW6,"GPI_PANSW6"},
+ {GPI_TACTSW1,"GPI_TACTSW1"},
+ {GPI_TACTSW3,"GPI_TACTSW3"},
+ {GPI_PWRBUTTON,"GPI_PWRBUTTON"},
+ {GPI_TACTSW2,"GPI_TACTSW2"},
+ {GPI_TACTSW4,"GPI_TACTSW4"},
+ {GPI_EXTWINDER_1,"GPI_EXTWINDER_1"},
+ {GPI_EXTWINDER_2,"GPI_EXTWINDER_2"},
+ {GPI_EXTWINDER_3,"GPI_EXTWINDER_3"},
+ {GPI_EXTWINDER_1_rtn,"GPI_EXTWINDER_1_rtn"},
+ {GPI_EXTWINDER_2_rtn,"GPI_EXTWINDER_2_rtn"},
+ {GPI_EXTWINDER_3_rtn,"GPI_EXTWINDER_3_rtn"},
+ {LS_DISPENSER_UP_1,"LS_DISPENSER_UP_1"},
+ {LS_DISPENSER_25_1,"LS_DISPENSER_25_1"},
+ {LS_DISPENSER_75_1,"LS_DISPENSER_75_1"},
+ {LS_DISPENSER_UP_3,"LS_DISPENSER_UP_3"},
+ {LS_DISPENSER_25_3,"LS_DISPENSER_25_3"},
+ {LS_DISPENSER_75_3,"LS_DISPENSER_75_3"},
+ {LS_DISPENSER_UP_5,"LS_DISPENSER_UP_5"},
+ {LS_DISPENSER_25_5,"LS_DISPENSER_25_5"},
+ {LS_DISPENSER_75_5,"LS_DISPENSER_75_5"},
+ {LS_DISPENSER_UP_7,"LS_DISPENSER_UP_7"},
+ {LS_DISPENSER_25_7,"LS_DISPENSER_25_7"},
+ {LS_DISPENSER_75_7,"LS_DISPENSER_75_7"},
+ {LS_DISPENSER_DOWN_1,"LS_DISPENSER_DOWN_1"},
+ {LS_DISPENSER_50_1,"LS_DISPENSER_50_1"},
+ {LS_DISPENSER_SPARE_1,"LS_DISPENSER_SPARE_1"},
+ {LS_DISPENSER_DOWN_3,"LS_DISPENSER_DOWN_3"},
+ {LS_DISPENSER_50_3,"LS_DISPENSER_50_3"},
+ {LS_DISPENSER_SPARE_3,"LS_DISPENSER_SPARE_3"},
+ {LS_DISPENSER_DOWN_5,"LS_DISPENSER_DOWN_5"},
+ {LS_DISPENSER_50_5,"LS_DISPENSER_50_5"},
+ {LS_DISPENSER_SPARE_5,"LS_DISPENSER_SPARE_5"},
+ {LS_DISPENSER_DOWN_7,"LS_DISPENSER_DOWN_7"},
+ {LS_DISPENSER_50_7,"LS_DISPENSER_50_7"},
+ {LS_DISPENSER_SPARE_7,"LS_DISPENSER_SPARE_7"},
+ {LS_DISPENSER_UP_2,"LS_DISPENSER_UP_2"},
+ {LS_DISPENSER_25_2,"LS_DISPENSER_25_2"},
+ {LS_DISPENSER_75_2,"LS_DISPENSER_75_2"},
+ {LS_DISPENSER_UP_4,"LS_DISPENSER_UP_4"},
+ {LS_DISPENSER_25_4,"LS_DISPENSER_25_4"},
+ {LS_DISPENSER_75_4,"LS_DISPENSER_75_4"},
+ {LS_DISPENSER_UP_6,"LS_DISPENSER_UP_6"},
+ {LS_DISPENSER_25_6,"LS_DISPENSER_25_6"},
+ {LS_DISPENSER_75_6,"LS_DISPENSER_75_6"},
+ {LS_DISPENSER_UP_8,"LS_DISPENSER_UP_8"},
+ {LS_DISPENSER_25_8,"LS_DISPENSER_25_8"},
+ {LS_DISPENSER_75_8,"LS_DISPENSER_75_8"},
+ {LS_RLOADMOTOR_UP,"LS_RLOADMOTOR_UP"},
+ {LS_DISPENSER_DOWN_2,"LS_DISPENSER_DOWN_2"},
+ {LS_DISPENSER_50_2,"LS_DISPENSER_50_2"},
+ {LS_DISPENSER_SPARE_2,"LS_DISPENSER_SPARE_2"},
+ {LS_DISPENSER_DOWN_4,"LS_DISPENSER_DOWN_4"},
+ {LS_DISPENSER_50_4,"LS_DISPENSER_50_4"},
+ {LS_DISPENSER_SPARE_4,"LS_DISPENSER_SPARE_4"},
+ {LS_DISPENSER_DOWN_6,"LS_DISPENSER_DOWN_6"},
+ {LS_DISPENSER_50_6,"LS_DISPENSER_50_6"},
+ {LS_DISPENSER_SPARE_6,"LS_DISPENSER_SPARE_6"},
+ {LS_DISPENSER_DOWN_8,"LS_DISPENSER_DOWN_8"},
+ {LS_DISPENSER_50_8,"LS_DISPENSER_50_8"},
+ {LS_DISPENSER_SPARE_8,"LS_DISPENSER_SPARE_8"},
+ {LS_SCREW_LEFT,"LS_SCREW_LEFT"},
+ {SW_SPOOL_EXISTS,"SW_SPOOL_EXISTS"},
+ {LS_SCREW_RIGHT,"LS_SCREW_RIGHT"},
+ {SW_SPARE,"SW_SPARE"},
+ {LS_LDANCER1_DOWN,"LS_LDANCER1_DOWN"},
+ {LS_LDANCER2_DOWN,"LS_LDANCER2_DOWN"},
+ {LS_LPIVOT_DOWN,"LS_LPIVOT_DOWN"},
+ {LS_PIVOT_SPARE1,"LS_PIVOT_SPARE1"},
+ {LS_LDANCER1_UP,"LS_LDANCER1_UP"},
+ {LS_LDANCER2_UP,"LS_LDANCER2_UP"},
+ {LS_LPIVOT_UP,"LS_LPIVOT_UP"},
+ {LS_PIVOT_SPARE2,"LS_PIVOT_SPARE2"},
+ {LS_LLOADMOTOR_DOWN,"LS_LLOADMOTOR_DOWN"},
+ {LS_LSPARE1,"LS_LSPARE1"},
+ {LS_LLOADMOTOR_UP,"LS_LLOADMOTOR_UP"},
+ {LS_LSPARE2,"LS_LSPARE2"},
+ {LS_RDANCER_DOWN,"LS_RDANCER_DOWN"},
+ {LS_RLOADRAM_DOWN,"LS_RLOADRAM_DOWN"},
+ {LS_RDANCER_UP,"LS_RDANCER_UP"},
+ {LS_RLOADRAM_UP,"LS_RLOADRAM_UP"},
+ {LS_RLOADMOTOR_DOWN,"LS_RLOADMOTOR_DOWN"},
+ {GPI_TFEED_BREAK_1,"GPI_TFEED_BREAK_1"},
+ {GPI_TFEED_BREAK_2,"GPI_TFEED_BREAK_2"},
+ {LS_RSPARE1,"LS_RSPARE1"},
+ {LS_SPARE2_1,"LS_SPARE2_1"},
+ {LS_SPARE2_3,"LS_SPARE2_3"},
+ {LS_SPARE1_1,"LS_SPARE1_1"},
+ {LS_SPARE1_3,"LS_SPARE1_3"},
+ {LS_RSPARE2,"LS_RSPARE2"},
+ {LS_SPARE2_2,"LS_SPARE2_2"},
+ {LS_SPARE2_4,"LS_SPARE2_4"},
+ {LS_SPARE1_2,"LS_SPARE1_2"},
+ {LS_SPARE1_4,"LS_SPARE1_4"},
+ {GPI_WCONTAINER_WARN,"GPI_WCONTAINER_WARN"},
+ {GPI_SW_WCONTAINER_PRES,"GPI_SW_WCONTAINER_PRES"},
+ {GPI_CHILLER_FAULT,"GPI_CHILLER_FAULT"},
+ {GPI_CHILLER_STAT1,"GPI_CHILLER_STAT1"},
+ {GPI_BLOWER_TACH,"GPI_BLOWER_TACH"},
+ {GPI_WCONTAINER_FULL,"GPI_WCONTAINER_FULL"},
+ {GPI_AIRFLOW_FLAP,"GPI_AIRFLOW_FLAP"},
+ {GPO_MIXCHIP_SSR4_CTRL,"GPO_MIXCHIP_SSR4_CTRL"},
+ {GPO_DYEINGH_SSR7_CTRL,"GPO_DYEINGH_SSR7_CTRL"},
+ {GPO_DYEINGH_SSR8_CTRL,"GPO_DYEINGH_SSR8_CTRL"},
+ {GPO_DYEINGH_SSR5_CTRL,"GPO_DYEINGH_SSR5_CTRL"},
+ {GPO_DYEINGH_SSR6_CTRL,"GPO_DYEINGH_SSR6_CTRL"},
+ {GPO_DRYER_SSR3_CTRL,"GPO_DRYER_SSR3_CTRL"},
+ {GPO_DRYER_SSR1_CTRL,"GPO_DRYER_SSR1_CTRL"},
+ {GPO_DRYER_SSR2_CTRL,"GPO_DRYER_SSR2_CTRL"},
+ {GPO_SPARE_SSR12_CTRL,"GPO_SPARE_SSR12_CTRL"},
+ {GPO_SPARE_SSR13_CTRL,"GPO_SPARE_SSR13_CTRL"},
+ {GPO_PDOWN_RL1_CTRL,"GPO_PDOWN_RL1_CTRL"},
+ {GPO_LED1,"GPO_LED1"},
+ {GPO_LED3,"GPO_LED3"},
+ {GPO_LED2,"GPO_LED2"},
+ {GPO_LED4,"GPO_LED4"},
+ {GPO_BUZZER,"GPO_BUZZER"},
+ {GPO_EXTWINDER_SSR11_CTRL,"GPO_EXTWINDER_SSR11_CTRL"},
+ {GPO_EXTWINDER_1,"GPO_EXTWINDER_1"},
+ {GPO_EXTWINDER_2,"GPO_EXTWINDER_2"},
+ {GPO_EXTWINDER_3,"GPO_EXTWINDER_3"},
+ {GPO_DILUTORPUMP_SSR10_CTRL,"GPO_DILUTORPUMP_SSR10_CTRL"},
+ {GPO_WASTECH_PUMP1,"GPO_WASTECH_PUMP1"},
+ {GPO_WASTECH_PUMP2,"GPO_WASTECH_PUMP2"},
+ {GPO_TFEED_BREAK_1,"GPO_TFEED_BREAK_1"},
+ {GPO_TFEED_BREAK_2,"GPO_TFEED_BREAK_2"},
+ {GPO_SPARE1_1,"GPO_SPARE1_1"},
+ {GPO_SPARE2_1,"GPO_SPARE2_1"},
+ {GPO_SPARE1_2,"GPO_SPARE1_2"},
+ {GPO_SPARE2_2,"GPO_SPARE2_2"},
+ {GPO_BLOWER_PWM,"GPO_BLOWER_PWM"},
+ {GPO_WHS_WTANKPUMP2,"GPO_WHS_WTANKPUMP2"},
+ {GPO_CHILLER_SSR9_CTRL,"GPO_CHILLER_SSR9_CTRL"},
+ {DH2,"DH2"},
+ {DH1,"DH1"},
+ {DRYER2,"DRYER2"},
+ {DRYER1,"DRYER1"},
+ {ELECTRICALENC,"ELECTRICALENC"},
+ {USERPANEL,"USERPANEL"},
+ {EXTWINDINGUNIT,"EXTWINDINGUNIT"},
+ {DISPENSER_1,"DISPENSER_1"},
+ {DISPENSER_3,"DISPENSER_3"},
+ {DISPENSER_5,"DISPENSER_5"},
+ {DISPENSER_7,"DISPENSER_7"},
+ {MIDTANK3_1,"MIDTANK3_1"},
+ {DISPENSER_2,"DISPENSER_2"},
+ {DISPENSER_4,"DISPENSER_4"},
+ {DISPENSER_6,"DISPENSER_6"},
+ {DISPENSER_8,"DISPENSER_8"},
+ {CART3,"CART3"},
+ {CART1,"CART1"},
+ {CART2,"CART2"},
+ {CART4,"CART4"},
+ {CART7,"CART7"},
+ {CART5,"CART5"},
+ {CART6,"CART6"},
+ {CART8,"CART8"},
+ {INTWINDINGUNIT,"INTWINDINGUNIT"},
+ {LTFEEDUNIT2,"LTFEEDUNIT2"},
+ {LTFEEDUNIT1,"LTFEEDUNIT1"},
+ {RTFEEDUNIT2,"RTFEEDUNIT2"},
+ {RTFEEDUNIT1,"RTFEEDUNIT1"},
+ {SPARE2,"SPARE2"},
+ {SPARE1,"SPARE1"},
+ {WHS,"WHS"},
+ {MIDTANK3_2,"MIDTANK3_2"},
+ {MOTO_DH_CLEANHEAD,"MOTO_DH_CLEANHEAD"},
+ {MOTO_DH_CLEANMECH,"MOTO_DH_CLEANMECH"},
+ {MOTO_DH_LID,"MOTO_DH_LID"},
+ {MOTO_DRYER_DRIVING,"MOTO_DRYER_DRIVING"},
+ {MOTO_DRYER_LID,"MOTO_DRYER_LID"},
+ {MOTO_DRYER_LOADARM,"MOTO_DRYER_LOADARM"},
+ {MOTO_DISPENSER_1,"MOTO_DISPENSER_1"},
+ {MOTO_DISPENSER_2,"MOTO_DISPENSER_2"},
+ {MOTO_DISPENSER_3,"MOTO_DISPENSER_3"},
+ {MOTO_DISPENSER_4,"MOTO_DISPENSER_4"},
+ {MOTO_DISPENSER_5,"MOTO_DISPENSER_5"},
+ {MOTO_DISPENSER_6,"MOTO_DISPENSER_6"},
+ {MOTO_DISPENSER_7,"MOTO_DISPENSER_7"},
+ {MOTO_DISPENSER_8,"MOTO_DISPENSER_8"},
+ {MOTO_SCREW,"MOTO_SCREW"},
+ {MOTO_WINDER,"MOTO_WINDER"},
+ {MOTO_LDANCER1,"MOTO_LDANCER1"},
+ {MOTO_LDANCER2,"MOTO_LDANCER2"},
+ {MOTO_LDRIVING,"MOTO_LDRIVING"},
+ {MOTO_LLOADING,"MOTO_LLOADING"},
+ {MOTO_LPIVOT1,"MOTO_LPIVOT1"},
+ {MOTO_RDANCER,"MOTO_RDANCER"},
+ {MOTO_RDRIVING,"MOTO_RDRIVING"},
+ {MOTO_RLOADARM,"MOTO_RLOADARM"},
+ {MOTO_RLOADING,"MOTO_RLOADING"},
+ {MOTO_SPARE1_1,"MOTO_SPARE1_1"},
+ {MOTO_SPARE1_2,"MOTO_SPARE1_2"},
+ {MOTO_SPARE2_1,"MOTO_SPARE2_1"},
+ {MOTO_SPARE2_2,"MOTO_SPARE2_2"},
+ {DRYER_LOADARM_ROTENC,"DRYER_LOADARM_ROTENC"},
+ {DISPENSER_ROTENC1,"DISPENSER_ROTENC1"},
+ {DISPENSER_ROTENC2,"DISPENSER_ROTENC2"},
+ {DISPENSER_ROTENC3,"DISPENSER_ROTENC3"},
+ {DISPENSER_ROTENC4,"DISPENSER_ROTENC4"},
+ {DISPENSER_ROTENC5,"DISPENSER_ROTENC5"},
+ {DISPENSER_ROTENC6,"DISPENSER_ROTENC6"},
+ {DISPENSER_ROTENC7,"DISPENSER_ROTENC7"},
+ {DISPENSER_ROTENC8,"DISPENSER_ROTENC8"},
+ {SCREW_ROTENC,"SCREW_ROTENC"},
+ {LDANCER1_ROTENC2,"LDANCER1_ROTENC2"},
+ {LDANCER2_ROTENC2,"LDANCER2_ROTENC2"},
+ {LSPARE_ROTENC,"LSPARE_ROTENC"},
+ {LSPARE_ROTENCn,"LSPARE_ROTENCn"},
+ {LSPARE1_ROTENC,"LSPARE1_ROTENC"},
+ {LSPARE2_ROTENC,"LSPARE2_ROTENC"},
+ {RDANCER_ROTENC2,"RDANCER_ROTENC2"},
+ {RSPARE_ROTENC,"RSPARE_ROTENC"},
+ {RSPEEDSENS_ROTENC,"RSPEEDSENS_ROTENC"},
+ {SPARE1_ROTENC,"SPARE1_ROTENC"},
+ {SPARE2_ROTENC,"SPARE2_ROTENC"},
+ {FAN_TACHO1,"FAN_TACHO1"},
+ {FAN_TACHO3,"FAN_TACHO3"},
+ {FAN_TACHO2,"FAN_TACHO2"},
+ {FAN1_TACH,"FAN1_TACH"},
+ {FAN2_TACH,"FAN2_TACH"},
+ {FAN5_TACH,"FAN5_TACH"},
+ {FAN3_TACH,"FAN3_TACH"},
+ {FAN4_TACH,"FAN4_TACH"},
+};
+
+
+
+uint32_t HWConfigurationFunc(MessageContainer* requestContainer)
+{
+ uint32_t status = 0;
+ int Motor_i, Dancer_i, Dispenser_i,PID_i;
+ MessageContainer responseContainer;
+ UploadHardwareConfigurationResponse response = UPLOAD_HARDWARE_CONFIGURATION_RESPONSE__INIT;
+
+ UploadHardwareConfigurationRequest* UploadRequest = upload_hardware_configuration_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+ HardwareConfiguration *request = UploadRequest->hardwareconfiguration;
+ status += InternalWinderConfigMessage(request->winders);
+ for (Motor_i = 0; Motor_i < request->n_motors ; Motor_i++)
+ status += MotorsConfigMessage(request->motors[Motor_i]);
+ for (Dancer_i = 0; Dancer_i < request->n_dancers ; Dancer_i++)
+ status += DancerConfigMessage(request->dancers[Dancer_i]);
+ for (PID_i = 0; PID_i < request->n_pidcontrols ; PID_i++)
+ status += HeaterConfigRequestMessage(request->pidcontrols[PID_i]);
+ for (Dispenser_i = 0; Dispenser_i < request->n_dispensers ; Dispenser_i++)
+ status += DispenserConfigMessage(request->dispensers[Dispenser_i]);
+ //status += HeaterConfigSetSharedHeatersParams (request->outputproportionalcycletime, request->outputproportionalsinglestep);
+
+
+
+
+ responseContainer = createContainer(MESSAGE_TYPE__UploadHardwareConfigurationResponse, requestContainer->token, true, &response, &upload_hardware_configuration_response__pack, &upload_hardware_configuration_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);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+
+ return OK;
+
+
+
+}
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
new file mode 100644
index 000000000..ab55c3e57
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
@@ -0,0 +1,313 @@
+#ifndef GENERALHARDWARE_H
+#define GENERALHARDWARE_H
+
+#include "include.h"
+#include <Modules/Stubs_Handler/DataDef.h>
+#include "PMR/common/MessageContainer.pb-c.h"
+#include "Modules/Stubs_Handler/Container.h"
+
+typedef enum
+{
+ ANALOG_MIXCHIP_TEMP,
+ AN_DYEINGH_CURSEN_1,
+ AN_DYEINGH_CURSEN_2,
+ AN_DYEINGH_CURSEN_3,
+ AN_DYEINGH_CURSEN_4,
+ AN_DYEINGH_CURSEN_5,
+ ANALOG_DYEINGH_TEMP1,
+ ANALOG_DYEINGH_TEMP2,
+ ANALOG_DYEINGH_TEMP3,
+ ANALOG_DYEINGH_TEMP4,
+ ANALOG_DYEINGH_TEMP5,
+ AN_DRYER_CURSEN1,
+ AN_DRYER_CURSEN2,
+ AN_DRYER_CURSEN3,
+ ANALOG_DRYER_TEMP1,
+ ANALOG_DRYER_TEMP2,
+ ANALOG_DRYER_TEMP3,
+ AN_ENCLOSURETEMP1,
+ AN_ENCLOSURETEMP2,
+ AN_ENCLOSURETEMP3,
+ AN_IDS_PRESSENS_1,
+ AN_IDS_PRESSENS_2,
+ AN_IDS_PRESSENS_3,
+ AN_IDS_PRESSENS_4,
+ AN_IDS_PRESSENS_5,
+ AN_IDS_PRESSENS_6,
+ AN_IDS_PRESSENS_7,
+ AN_IDS_PRESSENS_8,
+ AN_MIDTANK_PRESSENS1,
+ AN_MIDTANK_PRESSENS2,
+ AN_MIDTANK_PRESSENS3,
+ AN_MIDTANK_PRESSENS4,
+ AN_MIDTANK_PRESSENS5,
+ AN_MIDTANK_PRESSENS6,
+ AN_MIDTANK_PRESSENS7,
+ AN_MIXCHIP_CURSENn,
+ AN5V_LDANCER1,
+ AN5V_LDANCER2,
+ AN5V_RDANCER,
+ AN10V_SPARE1,
+ AN10V_SPARE2,
+ AN_AIRPRESS_1,
+ AN_AIRPRESS_2,
+ AN_VOCSENS,
+ AN_BLOWERCTRL,
+ LS_DH_LID_CLEANING,
+ LS_DH_LID_CLOSED,
+ LS_DH_CLEAN_UP,
+ LS_DH_CLEAN_RIGHT,
+ LS_DH_SPARE1,
+ LS_DH_LID_OPEN,
+ LS_DH_CLEAN_DOWN,
+ LS_DH_CLEAN_LEFT,
+ LS_DRYER_LID_OPEN,
+ LS_DRYER_SPARE3,
+ LS_DRYER_LID_CLOSED,
+ LS_DRYER_SPARE4,
+ LS_DRYER_SPARE1,
+ LS_LOADARM_RIGHT,
+ LS_DRYER_SPARE2,
+ LS_LOADARM_LEFT,
+ GPI_PS1_DC_OK,
+ GPI_PANSW2,
+ GPI_PANSW4,
+ GPI_PANSW1,
+ GPI_PANSW3,
+ GPI_PANSW5,
+ GPI_PANSW6,
+ GPI_TACTSW1,
+ GPI_TACTSW3,
+ GPI_PWRBUTTON,
+ GPI_TACTSW2,
+ GPI_TACTSW4,
+ GPI_EXTWINDER_1,
+ GPI_EXTWINDER_2,
+ GPI_EXTWINDER_3,
+ GPI_EXTWINDER_1_rtn,
+ GPI_EXTWINDER_2_rtn,
+ GPI_EXTWINDER_3_rtn,
+ LS_DISPENSER_UP_1,
+ LS_DISPENSER_25_1,
+ LS_DISPENSER_75_1,
+ LS_DISPENSER_UP_3,
+ LS_DISPENSER_25_3,
+ LS_DISPENSER_75_3,
+ LS_DISPENSER_UP_5,
+ LS_DISPENSER_25_5,
+ LS_DISPENSER_75_5,
+ LS_DISPENSER_UP_7,
+ LS_DISPENSER_25_7,
+ LS_DISPENSER_75_7,
+ LS_DISPENSER_DOWN_1,
+ LS_DISPENSER_50_1,
+ LS_DISPENSER_SPARE_1,
+ LS_DISPENSER_DOWN_3,
+ LS_DISPENSER_50_3,
+ LS_DISPENSER_SPARE_3,
+ LS_DISPENSER_DOWN_5,
+ LS_DISPENSER_50_5,
+ LS_DISPENSER_SPARE_5,
+ LS_DISPENSER_DOWN_7,
+ LS_DISPENSER_50_7,
+ LS_DISPENSER_SPARE_7,
+ LS_DISPENSER_UP_2,
+ LS_DISPENSER_25_2,
+ LS_DISPENSER_75_2,
+ LS_DISPENSER_UP_4,
+ LS_DISPENSER_25_4,
+ LS_DISPENSER_75_4,
+ LS_DISPENSER_UP_6,
+ LS_DISPENSER_25_6,
+ LS_DISPENSER_75_6,
+ LS_DISPENSER_UP_8,
+ LS_DISPENSER_25_8,
+ LS_DISPENSER_75_8,
+ LS_RLOADMOTOR_UP,
+ LS_DISPENSER_DOWN_2,
+ LS_DISPENSER_50_2,
+ LS_DISPENSER_SPARE_2,
+ LS_DISPENSER_DOWN_4,
+ LS_DISPENSER_50_4,
+ LS_DISPENSER_SPARE_4,
+ LS_DISPENSER_DOWN_6,
+ LS_DISPENSER_50_6,
+ LS_DISPENSER_SPARE_6,
+ LS_DISPENSER_DOWN_8,
+ LS_DISPENSER_50_8,
+ LS_DISPENSER_SPARE_8,
+ LS_SCREW_LEFT,
+ SW_SPOOL_EXISTS,
+ LS_SCREW_RIGHT,
+ SW_SPARE,
+ LS_LDANCER1_DOWN,
+ LS_LDANCER2_DOWN,
+ LS_LPIVOT_DOWN,
+ LS_PIVOT_SPARE1,
+ LS_LDANCER1_UP,
+ LS_LDANCER2_UP,
+ LS_LPIVOT_UP,
+ LS_PIVOT_SPARE2,
+ LS_LLOADMOTOR_DOWN,
+ LS_LSPARE1,
+ LS_LLOADMOTOR_UP,
+ LS_LSPARE2,
+ LS_RDANCER_DOWN,
+ LS_RLOADRAM_DOWN,
+ LS_RDANCER_UP,
+ LS_RLOADRAM_UP,
+ LS_RLOADMOTOR_DOWN,
+ GPI_TFEED_BREAK_1,
+ GPI_TFEED_BREAK_2,
+ LS_RSPARE1,
+ LS_SPARE2_1,
+ LS_SPARE2_3,
+ LS_SPARE1_1,
+ LS_SPARE1_3,
+ LS_RSPARE2,
+ LS_SPARE2_2,
+ LS_SPARE2_4,
+ LS_SPARE1_2,
+ LS_SPARE1_4,
+ GPI_WCONTAINER_WARN,
+ GPI_SW_WCONTAINER_PRES,
+ GPI_CHILLER_FAULT,
+ GPI_CHILLER_STAT1,
+ GPI_BLOWER_TACH,
+ GPI_WCONTAINER_FULL,
+ GPI_AIRFLOW_FLAP,
+ GPO_MIXCHIP_SSR4_CTRL,
+ GPO_DYEINGH_SSR7_CTRL,
+ GPO_DYEINGH_SSR8_CTRL,
+ GPO_DYEINGH_SSR5_CTRL,
+ GPO_DYEINGH_SSR6_CTRL,
+ GPO_DRYER_SSR3_CTRL,
+ GPO_DRYER_SSR1_CTRL,
+ GPO_DRYER_SSR2_CTRL,
+ GPO_SPARE_SSR12_CTRL,
+ GPO_SPARE_SSR13_CTRL,
+ GPO_PDOWN_RL1_CTRL,
+ GPO_LED1,
+ GPO_LED3,
+ GPO_LED2,
+ GPO_LED4,
+ GPO_BUZZER,
+ GPO_EXTWINDER_SSR11_CTRL,
+ GPO_EXTWINDER_1,
+ GPO_EXTWINDER_2,
+ GPO_EXTWINDER_3,
+ GPO_DILUTORPUMP_SSR10_CTRL,
+ GPO_WASTECH_PUMP1,
+ GPO_WASTECH_PUMP2,
+ GPO_TFEED_BREAK_1,
+ GPO_TFEED_BREAK_2,
+ GPO_SPARE1_1,
+ GPO_SPARE2_1,
+ GPO_SPARE1_2,
+ GPO_SPARE2_2,
+ GPO_BLOWER_PWM,
+ GPO_WHS_WTANKPUMP2,
+ GPO_CHILLER_SSR9_CTRL,
+ DH2,
+ DH1,
+ DRYER2,
+ DRYER1,
+ ELECTRICALENC,
+ USERPANEL,
+ EXTWINDINGUNIT,
+ DISPENSER_1,
+ DISPENSER_3,
+ DISPENSER_5,
+ DISPENSER_7,
+ MIDTANK3_1,
+ DISPENSER_2,
+ DISPENSER_4,
+ DISPENSER_6,
+ DISPENSER_8,
+ CART3,
+ CART1,
+ CART2,
+ CART4,
+ CART7,
+ CART5,
+ CART6,
+ CART8,
+ INTWINDINGUNIT,
+ LTFEEDUNIT2,
+ LTFEEDUNIT1,
+ RTFEEDUNIT2,
+ RTFEEDUNIT1,
+ SPARE2,
+ SPARE1,
+ WHS,
+ MIDTANK3_2,
+ MOTO_DH_CLEANHEAD,
+ MOTO_DH_CLEANMECH,
+ MOTO_DH_LID,
+ MOTO_DRYER_DRIVING,
+ MOTO_DRYER_LID,
+ MOTO_DRYER_LOADARM,
+ MOTO_DISPENSER_1,
+ MOTO_DISPENSER_2,
+ MOTO_DISPENSER_3,
+ MOTO_DISPENSER_4,
+ MOTO_DISPENSER_5,
+ MOTO_DISPENSER_6,
+ MOTO_DISPENSER_7,
+ MOTO_DISPENSER_8,
+ MOTO_SCREW,
+ MOTO_WINDER,
+ MOTO_LDANCER1,
+ MOTO_LDANCER2,
+ MOTO_LDRIVING,
+ MOTO_LLOADING,
+ MOTO_LPIVOT1,
+ MOTO_RDANCER,
+ MOTO_RDRIVING,
+ MOTO_RLOADARM,
+ MOTO_RLOADING,
+ MOTO_SPARE1_1,
+ MOTO_SPARE1_2,
+ MOTO_SPARE2_1,
+ MOTO_SPARE2_2,
+ DRYER_LOADARM_ROTENC,
+ DISPENSER_ROTENC1,
+ DISPENSER_ROTENC2,
+ DISPENSER_ROTENC3,
+ DISPENSER_ROTENC4,
+ DISPENSER_ROTENC5,
+ DISPENSER_ROTENC6,
+ DISPENSER_ROTENC7,
+ DISPENSER_ROTENC8,
+ SCREW_ROTENC,
+ LDANCER1_ROTENC2,
+ LDANCER2_ROTENC2,
+ LSPARE_ROTENC,
+ LSPARE_ROTENCn,
+ LSPARE1_ROTENC,
+ LSPARE2_ROTENC,
+ RDANCER_ROTENC2,
+ RSPARE_ROTENC,
+ RSPEEDSENS_ROTENC,
+ SPARE1_ROTENC,
+ SPARE2_ROTENC,
+ FAN_TACHO1,
+ FAN_TACHO3,
+ FAN_TACHO2,
+ FAN1_TACH,
+ FAN2_TACH,
+ FAN5_TACH,
+ FAN3_TACH,
+ FAN4_TACH,
+ MAX_PORT_ENUM
+}SYSTEM_PORTS_ENUM;
+typedef struct
+{
+ SYSTEM_PORTS_ENUM PortId;
+ char PortName[30];
+}PortInfoStruct;
+
+extern PortInfoStruct PortInfoTable[MAX_PORT_ENUM];
+extern uint32_t HWConfigurationFunc(MessageContainer* requestContainer);
+
+#endif
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c
new file mode 100644
index 000000000..f15c65f22
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/General/process.c
@@ -0,0 +1,121 @@
+/*
+ * process.c
+ *
+ * Created on: 4 במרץ 2018
+ * Author: shlomo
+ */
+//********************************************************************************************************************
+#include "include.h"
+#include "process.h"
+
+#include <Modules/Stubs_Handler/DataDef.h>
+#include "heaters/heaters_ex.h"
+#include "PMR/Printing/UploadProcessParametersRequest.pb-c.h"
+#include "PMR/Printing/UploadProcessParametersResponse.pb-c.h"
+#include "PMR/Hardware/HardwarePidControlType.pb-c.h"
+#include "PMR/common/MessageContainer.pb-c.h"
+
+void ProcessRequestFunc(MessageContainer* requestContainer)
+{
+ MessageContainer responseContainer;
+ uint8_t* container_buffer;
+ uint32_t status = 0;
+
+ UploadProcessParametersRequest* request = upload_process_parameters_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+ ProcessParameters* ProcessParams = request->processparameters;
+
+
+ UploadProcessParametersResponse response = UPLOAD_PROCESS_PARAMETERS_RESPONSE__INIT;
+
+ responseContainer = createContainer(MESSAGE_TYPE__UploadProcessParametersResponse, requestContainer->token, true, &response, &upload_process_parameters_request__pack, &upload_process_parameters_request__get_packed_size);
+ container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+
+
+ /*
+ *
+ * uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
+ *
+ struct _ProcessParameters
+{
+ protobuf_c_boolean has_dyeingspeed;
+ double dyeingspeed;
+ protobuf_c_boolean has_dryerbufferlength;
+ double dryerbufferlength;
+ protobuf_c_boolean has_mininkuptake;
+ double mininkuptake;
+ protobuf_c_boolean has_feedertension;
+ double feedertension;
+ protobuf_c_boolean has_pullertension;
+ double pullertension;
+ protobuf_c_boolean has_windertension;
+ double windertension;
+ protobuf_c_boolean has_headairflow;
+ double headairflow;
+ protobuf_c_boolean has_dryerairflow;
+ double dryerairflow;
+ protobuf_c_boolean has_tableindex;
+ int32_t tableindex;
+};
+
+
+ */
+ if (ProcessParams->has_mixertemp)
+ {
+ if(ProcessParams->mixertemp)
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__MixerHeater, true, ProcessParams->mixertemp);
+ else
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__MixerHeater, false, ProcessParams->mixertemp);
+ }
+ if (ProcessParams->has_headzone1temp)
+ {
+ if(ProcessParams->headzone1temp)
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true, ProcessParams->headzone1temp);
+ else
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false, ProcessParams->headzone1temp);
+ }
+ if (ProcessParams->has_headzone2temp)
+ {
+ if(ProcessParams->headzone2temp)
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true, ProcessParams->headzone2temp);
+ else
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false, ProcessParams->headzone2temp);
+ }
+ if (ProcessParams->has_headzone3temp)
+ {
+ if(ProcessParams->headzone3temp)
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true, ProcessParams->headzone3temp);
+ else
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, false, ProcessParams->headzone3temp);
+ }
+ if (ProcessParams->has_dryerzone1temp)
+ {
+ if(ProcessParams->dryerzone1temp)
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w, true, ProcessParams->dryerzone1temp);
+ else
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w, false, ProcessParams->dryerzone1temp);
+ }
+ if (ProcessParams->has_dryerzone2temp)
+ {
+ if(ProcessParams->dryerzone2temp)
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1, true, ProcessParams->dryerzone2temp);
+ else
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1, false, ProcessParams->dryerzone2temp);
+ }
+ if (ProcessParams->has_dryerzone3temp)
+ {
+ if(ProcessParams->dryerzone3temp)
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2, true, ProcessParams->dryerzone3temp);
+ else
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2, false, ProcessParams->dryerzone3temp);
+ }
+
+ if (status)
+ {
+ responseContainer.has_error = true;
+ responseContainer.error = (ErrorCode)status;
+ }
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+}
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.h b/Software/Embedded_SW/Embedded/Modules/General/process.h
new file mode 100644
index 000000000..aa7b157a2
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/General/process.h
@@ -0,0 +1,16 @@
+/*
+ * process.h
+ *
+ * Created on: 4 במרץ 2018
+ * Author: shlomo
+ */
+
+#ifndef MODULES_GENERAL_PROCESS_H_
+#define MODULES_GENERAL_PROCESS_H_
+
+
+void ProcessRequestFunc(MessageContainer* requestContainer);
+
+
+
+#endif /* MODULES_GENERAL_PROCESS_H_ */