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
|
/*
* 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"
#include "drivers/Heater/Heater.h"
#include "modules/ids/ids_ex.h"
/********************************************************************************
*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 = my_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);
my_free(responseContainer.data.data);
SendChars(container_buffer, container_size);
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 = my_malloc(message_container__get_packed_size(&responseContainer));
switch (request->interfaceio)
{
case INTERFACE_IOS__Midtank1Air:
case INTERFACE_IOS__Midtank2Air:
case INTERFACE_IOS__Midtank3Air:
case INTERFACE_IOS__Midtank4Air:
case INTERFACE_IOS__Midtank5Air:
case INTERFACE_IOS__Midtank6Air:
case INTERFACE_IOS__Midtank7Air:
case INTERFACE_IOS__Midtank8Air:
portId = (request->interfaceio - INTERFACE_IOS__Midtank1Air) ; //0-7
Valve_Set(IDS_Id_to_AirValve[portId], request->value ); //Atm_MidTank_OFF/ON
break;
case INTERFACE_IOS__Midtank1Cartridge:
case INTERFACE_IOS__Midtank2Cartridge:
case INTERFACE_IOS__Midtank3Cartridge:
case INTERFACE_IOS__Midtank4Cartridge:
case INTERFACE_IOS__Midtank5Cartridge:
case INTERFACE_IOS__Midtank6Cartridge:
case INTERFACE_IOS__Midtank7Cartridge:
case INTERFACE_IOS__Midtank8Cartridge:
portId = (request->interfaceio - INTERFACE_IOS__Midtank1Cartridge) ; //0-7
Valve_Set(IDS_Id_to_CartrideValve[portId], request->value ); //Atm_MidTank_OFF/ON
break;
case INTERFACE_IOS__GPO_DRYER_SSR3_CTRL:
if (request->value == true)
ActivateHeater(0);
else
DeActivateHeater(0);
break;
case INTERFACE_IOS__GPO_DRYER_SSR1_CTRL:
if (request->value == true)
ActivateHeater(1);
else
DeActivateHeater(1);
break;
case INTERFACE_IOS__GPO_DRYER_SSR2_CTRL:
if (request->value == true)
ActivateHeater(2);
else
DeActivateHeater(2);
break;
case INTERFACE_IOS__GPO_DYEINGH_SSR8_CTRL:
if (request->value == true)
ActivateHeater(3);
else
DeActivateHeater(3);
break;
case INTERFACE_IOS__GPO_DYEINGH_SSR7_CTRL:
if (request->value == true)
ActivateHeater(4);
else
DeActivateHeater(4);
break;
case INTERFACE_IOS__GPO_DYEINGH_SSR6_CTRL:
if (request->value == true)
ActivateHeater(5);
else
DeActivateHeater(5);
break;
case INTERFACE_IOS__GPO_DYEINGH_SSR5_CTRL:
if (request->value == true)
ActivateHeater(6);
else
DeActivateHeater(6);
break;
case INTERFACE_IOS__GPO_DILUTORPUMP_SSR10_CTRL:
if (request->value == true)
ActivateHeater(7);
else
DeActivateHeater(7);
break;
case INTERFACE_IOS__GPO_EXTWINDER_SSR11_CTRL:
if (request->value == true)
ActivateHeater(8);
else
DeActivateHeater(8);
break;
case INTERFACE_IOS__GPO_MIXCHIP_SSR4_CTRL:
if (request->value == true)
ActivateHeater(9);
else
DeActivateHeater(9);
break;
default:
status = ERROR;
responseContainer.has_error = true;
responseContainer.error = ERROR_CODE__GENERAL_ERROR;
break;
}
size_t container_size = message_container__pack(&responseContainer, container_buffer);
my_free(responseContainer.data.data);
SendChars(container_buffer, container_size);
set_digital_out_request__free_unpacked(request,NULL);
return OK;
}
|