aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
blob: c98bb68d40ea3894f3014366d0e5c30c7cf82eab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
/************************************************************************************************************************
 * control.c
 * Control module
 *
************************************************************************************************************************/
#include <Container.h>
#include <DataDef.h>
#include "include.h"
#include "GeneralHardware.h"
#include "thread/thread.h"
#include "ids/ids.h"
#include "control/control.h"
#include "heaters/heaters_ex.h"
#include "PMR/common/MessageContainer.pb-c.h"
#include "PMR/Hardware/UploadHardWareConfigurationRequest.pb-c.h"
#include "PMR/Hardware/UploadHardWareConfigurationResponse.pb-c.h"
#include "PMR/Hardware/SystemResetRequest.pb-c.h"
#include "PMR/Hardware/SystemResetResponse.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;
    if (request->n_winders == 1)
        status += InternalWinderConfigMessage(request->winders);
    status += MotorsInit();

    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++)
    {
        if (request->pidcontrols[PID_i]->hardwarepidcontroltype <= HARDWARE_PID_CONTROL_TYPE__MixerHeater)
            status += HeaterConfigRequestMessage(request->pidcontrols[PID_i]);
        else if ((request->pidcontrols[PID_i]->hardwarepidcontroltype >= HARDWARE_PID_CONTROL_TYPE__MotorDryer)&&
                (request->pidcontrols[PID_i]->hardwarepidcontroltype < HARDWARE_PID_CONTROL_TYPE__Dispenser1))
            status += MotorPidRequestMessage(request->pidcontrols[PID_i]);
        else if (request->pidcontrols[PID_i]->hardwarepidcontroltype >= HARDWARE_PID_CONTROL_TYPE__Dispenser1)
            status += DispenserPidRequestMessage(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);

    ControlStart();
    ThreadInitialTestStub(request);


    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);
    free(responseContainer.data.data);
    upload_hardware_configuration_request__free_unpacked(UploadRequest,NULL);
    SendChars(container_buffer, container_size);
    //free(container_buffer);
    //free(requestContainer);

    return OK;



}

void HWSystemResetRequest(MessageContainer* requestContainer)
{
    uint32_t status = FAILED;

    MessageContainer responseContainer;
    SystemResetRequest* request = system_reset_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);

    status = 0;

    SystemResetResponse response =   SYSTEM_RESET_RESPONSE__INIT;


    responseContainer = createContainer(MESSAGE_TYPE__SystemResetResponse, requestContainer->token, true, &response, &system_reset_response__pack, &system_reset_response__get_packed_size);

    Write_status_response(status);

    //free(request);
    system_reset_request__free_unpacked(request,NULL);
    //-------------------------------------------------------------------------------------------
    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);

    ROM_SysCtlDelay(SYS_CLK_FREQ);

    SysCtlReset();

    HWREG(NVIC_APINT) = NVIC_APINT_VECTKEY |  NVIC_APINT_SYSRESETREQ;

}