no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
state_machine.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef __STATE_MACHINE_H__
34#define __STATE_MACHINE_H__
35
36#include <stdint.h>
37
38#define FIRMWARE_VERSION ("v30923")
39#define LED_NO (4u)
40
56
62 /* No error */
64 /* Relay error */
66 /* Input Vin error*/
68 /* Input undervoltage*/
70 /*Input overvoltage*/
72 /* RCD error */
74 /* Init RCD error */
76 /* Pilot error */
78 /* Diode error */
80 /* Overcurrent */
82 /* Overtemperature fault*/
84#if defined(REV_D)
85 /*PE upstream error*/
86 INTF_PE_UPSTREAM_ERR,
87#endif
88 /*PE fault*/
90};
91
97 /* Supply undervoltage */
99 /* RCD */
101 /* Overcurrent */
103 /* EV disconnected/no Earth */
105 /* Diode error */
107 /* Pilot error */
109 /* RCD test initiated */
111 /* RCD test completed */
113 /* RCD test failed */
115 /* Ventilation required */
117 /* Wait for 5 seconds for check overcurrent */
119 /* No event */
121 /*Initial check done*/
123 /*Wait*/
125 /*EV connected*/
127 /*Charging C*/
129 /*Charging D*/
131 /*Charging stopped*/
133 /* EVSE ready*/
135 /* Charging session requested*/
137 /* Charging started*/
139 /* Stop charging*/
141 /* Stop charging when cable unplugged while charging*/
143 /*Check relay*/
145 /*Relay check passed*/
147 /*IDLE B*/
149 /*Diode check*/
151 /*Diode check done*/
153 /*Vin undervoltage recovered*/
155 /*Undervoltage wait*/
157 /*Overtemeperature 1 reduce power*/
159 /*Overtemperature 2 stop*/
161 /*Overvoltage*/
163 /*PE error*/
165
166};
167
172struct stout {
173 /* AD9113 device structure */
175 /* Relay descriptor */
177 /* LED descriptors */
179 /* Current state */
181 /* Previous state */
183 /* PWM low value measured */
184 uint32_t pwm_low_val;
185 /* PWM low value measured */
186 uint32_t pwm_high_val;
187 /* V2 max */
188 int32_t v2_val;
189 /* V2 max */
190 int32_t v1_val;
191 /* I val */
192 int32_t i_val;
193 /* Temperature*/
194 int32_t temperature;
195 /* Pilot AC/DC */
196 uint8_t ac_dc;
197 /* grid type 0 - 230V, 1 - 120V*/
198 uint8_t grid;
199 /* Maximum current */
200 uint16_t i_limit;
201 /* Maximum current not charging*/
203 /* RCD pins */
207 /* Current error status */
209};
210
212
213 /* I rms value */
214 int32_t i_rms;
215 /* V1 rms value */
216 int32_t v1_rms;
217 /* V2 rms value */
218 int32_t v2_rms;
219 /* I ADC value */
220 int32_t i_rms_adc;
221 /* V1 ADC value */
222 int32_t v1_rms_adc;
223 /* V2 ADC value */
224 int32_t v2_rms_adc;
225};
226
228int state_machine();
229
232 enum state_machine_events_e event_in);
233
236 enum state_machine_events_e event_in);
237
240 struct stout *stout,
241 enum state_machine_events_e event_in);
242
244uint16_t get_action(void);
245
247void set_action_flag(void);
248
250void reset_action_flag(void);
251
253void inc_action_flag(void);
254
256void start_charging(void);
257
259void stop_charging(void);
260
262uint8_t car_is_charging(void);
263
264#endif /* __STATE_MACHINE_H__ */
uint16_t get_action(void)
Get take action flag.
Definition state_machine.c:1308
charger_state_e
ADE9113 waveorm data.
Definition state_machine.h:45
@ STATE_POWER_ON
Definition state_machine.h:46
@ STATE_RCD_SELF_TEST
Definition state_machine.h:47
@ STATE_B
Definition state_machine.h:49
@ STATE_D
Definition state_machine.h:51
@ STATE_RELAY_OPEN
Definition state_machine.h:52
@ STATE_A
Definition state_machine.h:48
@ STATE_FAULT
Definition state_machine.h:54
@ STATE_CHECK_RELAY
Definition state_machine.h:53
@ STATE_C
Definition state_machine.h:50
void inc_action_flag(void)
Increment take action flag.
Definition state_machine.c:1335
interface_err_status_e
State machine fault condition.
Definition state_machine.h:61
@ INTF_PILOT_ERROR
Definition state_machine.h:77
@ INTF_INPUT_V_ERR_U
Definition state_machine.h:69
@ INTF_NO_ERR
Definition state_machine.h:63
@ INTF_DIODE_ERR
Definition state_machine.h:79
@ INTF_INIT_RCD_ERROR
Definition state_machine.h:75
@ INTF_RCD_ERROR
Definition state_machine.h:73
@ INTF_INPUT_V_ERR
Definition state_machine.h:67
@ INTF_RELAY_ERR
Definition state_machine.h:65
@ INTF_INPUT_V_ERR_O
Definition state_machine.h:71
@ INTF_TEMPERATURE_ERR
Definition state_machine.h:83
@ INTF_OVERCURRENT_ERR
Definition state_machine.h:81
@ INTF_PE_ERROR
Definition state_machine.h:89
void stop_charging(void)
Signal that EV stops charging.
Definition state_machine.c:1353
enum state_machine_events_e state_machine_det_event_cp(struct stout *stout, enum state_machine_events_e event_in)
Determine next state based on CP measurements and previous events.
Definition state_machine.c:910
void set_action_flag(void)
Set take action flag.
Definition state_machine.c:1317
#define LED_NO
Definition state_machine.h:39
void start_charging(void)
Signal that EV starts charging.
Definition state_machine.c:1344
uint8_t car_is_charging(void)
Get charging state.
Definition state_machine.c:1363
int state_machine()
State machine main execution.
Definition state_machine.c:63
enum state_machine_events_e state_machine_det_event_supply(struct stout *stout, enum state_machine_events_e event_in)
Determine next state based on supply measurements and previous events.
Definition state_machine.c:1232
enum state_machine_events_e state_machine_det_event_temperature(struct stout *stout, enum state_machine_events_e event_in)
Determine next state based on temperature measurements and previous events.
Definition state_machine.c:1194
state_machine_events_e
State machine event.
Definition state_machine.h:96
@ S_M_EVSE_READY
Definition state_machine.h:134
@ S_M_CP_ERROR
Definition state_machine.h:108
@ S_M_OVER_TEMPERATURE_1
Definition state_machine.h:158
@ S_M_RCD_TEST_COMPLETED
Definition state_machine.h:112
@ S_M_CHARGING_STOPPED
Definition state_machine.h:132
@ S_M_CHECK_STUCK_RELAY
Definition state_machine.h:144
@ S_M_WAIT_B
Definition state_machine.h:148
@ S_M_DIODE_ERR_CHECK
Definition state_machine.h:150
@ S_M_CHARGING_REQ
Definition state_machine.h:136
@ S_M_DIODE_CHECK_DONE
Definition state_machine.h:152
@ S_M_STOP_CHARGING_2
Definition state_machine.h:142
@ S_M_VENTILATION_REQ
Definition state_machine.h:116
@ S_M_OVERCURRENT_WAIT
Definition state_machine.h:118
@ S_M_UNDERVOLTAGE_WAIT
Definition state_machine.h:156
@ S_M_CHECK_RELAY_PASSED
Definition state_machine.h:146
@ S_M_STOP_CHARGING
Definition state_machine.h:140
@ S_M_DISCONNECTED
Definition state_machine.h:104
@ S_M_RCD_TEST_FAIL
Definition state_machine.h:114
@ S_M_PE_ERROR
Definition state_machine.h:164
@ S_M_OVERCURRENT
Definition state_machine.h:102
@ S_M_RCD_TEST_TRIGGERED
Definition state_machine.h:110
@ S_M_CHARGING_D
Definition state_machine.h:130
@ S_M_INITIAL_CHECK_DONE
Definition state_machine.h:122
@ S_M_DIODE_ERR
Definition state_machine.h:106
@ S_M_CHARGING_START
Definition state_machine.h:138
@ S_M_OVERVOLTAGE
Definition state_machine.h:162
@ S_M_VIN_RECOVER
Definition state_machine.h:154
@ S_M_UNDERVOLTAGE
Definition state_machine.h:98
@ S_M_RCD
Definition state_machine.h:100
@ S_M_OVER_TEMPERATURE_2
Definition state_machine.h:160
@ S_M_EV_CONNECTED
Definition state_machine.h:126
@ S_M_NO_EVENT
Definition state_machine.h:120
@ S_M_WAIT
Definition state_machine.h:124
@ S_M_CHARGING
Definition state_machine.h:128
void reset_action_flag(void)
Reset take action flag.
Definition state_machine.c:1326
ADE9113 Device structure.
Definition ade9113.h:337
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Definition state_machine.h:211
int32_t v2_rms_adc
Definition state_machine.h:224
int32_t v1_rms
Definition state_machine.h:216
int32_t v1_rms_adc
Definition state_machine.h:222
int32_t i_rms_adc
Definition state_machine.h:220
int32_t v2_rms
Definition state_machine.h:218
int32_t i_rms
Definition state_machine.h:214
Structure for Stout machine.
Definition state_machine.h:172
int32_t v1_val
Definition state_machine.h:190
struct no_os_gpio_desc * gpio_rcdac
Definition state_machine.h:206
int32_t i_val
Definition state_machine.h:192
enum interface_err_status_e err_status
Definition state_machine.h:208
struct ade9113_dev * ade9113
Definition state_machine.h:174
uint16_t i_limit
Definition state_machine.h:200
uint16_t i_limit_not_ch
Definition state_machine.h:202
enum charger_state_e current_state
Definition state_machine.h:180
uint32_t pwm_high_val
Definition state_machine.h:186
int32_t v2_val
Definition state_machine.h:188
uint8_t ac_dc
Definition state_machine.h:196
struct no_os_gpio_desc * relay
Definition state_machine.h:176
struct no_os_gpio_desc * gpio_rcddc
Definition state_machine.h:205
uint32_t pwm_low_val
Definition state_machine.h:184
struct no_os_gpio_desc * gpio_led[LED_NO]
Definition state_machine.h:178
enum charger_state_e previous_state
Definition state_machine.h:182
struct no_os_gpio_desc * gpio_rcm_test
Definition state_machine.h:204
int32_t temperature
Definition state_machine.h:194
uint8_t grid
Definition state_machine.h:198