updated the state_machine and added it to main

This commit is contained in:
2024-05-23 22:41:21 +03:00
parent 665d1ffed6
commit fe3bcb6ebb
2 changed files with 118 additions and 74 deletions

View File

@ -17,13 +17,13 @@
#define RELAY_CLOSE_WAIT 10 // ms
typedef enum { // valid transitions: (all could transition to error)
INACTIVE, // INACTIVE -> PRECHARGE, CHARGING, ERROR
PRECHARGE, // PRECHARGE -> INACTIVE, READY, DISCHARGE, ERROR
READY, // READY -> ACTIVE, DISCHARGE, ERROR
ACTIVE, // ACTIVE -> READY, DISCHARGE, ERROR
DISCHARGE, // DISCHARGE -> INACTIVE, PRECHARGE, ERROR
CHARGING, // CHARGING -> INACTIVE, DISCHARGE, ERROR
ERROR, // ERROR -> INACTIVE, DISCHARGE, ERROR
STATE_INACTIVE, // INACTIVE -> PRECHARGE, CHARGING, ERROR
STATE_PRECHARGE, // PRECHARGE -> INACTIVE, READY, DISCHARGE, ERROR
STATE_READY, // READY -> ACTIVE, DISCHARGE, ERROR
STATE_ACTIVE, // ACTIVE -> READY, DISCHARGE, ERROR
STATE_DISCHARGE, // DISCHARGE -> INACTIVE, PRECHARGE, ERROR
STATE_CHARGING, // CHARGING -> INACTIVE, DISCHARGE, ERROR
STATE_ERROR, // ERROR -> INACTIVE, DISCHARGE, ERROR
} State;
typedef struct {
@ -60,10 +60,10 @@ State sm_update_discharge();
State sm_update_charging();
State sm_update_error();
typedef enum { RELAY_POS, RELAY_PRECHARGE } Relay;
typedef enum { RELAY_MAIN, RELAY_PRECHARGE } Relay;
void sm_set_relay_positions(State state);
void sm_set_relay_position(Relay relay, int closed);
void sm_check_close_wait(int *is_closed, int should_close);
void sm_set_relay(Relay relay, bool closed);
void sm_check_precharge_discharge(int *is_closed, int should_close);
void sm_handle_ams_in(const uint8_t *data);