Finite State Machine (FSM) module for the SPP core. More...
Go to the source code of this file.
Data Structures | |
| struct | FSM_Transition_t |
| A single row in the FSM transition table. More... | |
| struct | FSM_Handle_t |
| FSM handle — holds the current and previous state of the machine. More... | |
Macros | |
| #define | K_FSM_TIMEOUT_MS 10000U |
| #define | K_FSM_MAX_TABLE_SIZE 10U |
Enumerations | |
| enum | FSM_State_t { FSM_STATE_INIT = 0 , FSM_STATE_READY , FSM_STATE_FLIGHT , FSM_STATE_LANDED } |
| Top-level FSM states. More... | |
| enum | FSM_SubState_t { FSM_SUBSTATE_NONE = 0 , FSM_SUBSTATE_FLIGHT_ASCENDING , FSM_SUBSTATE_FLIGHT_DESCENDING , FSM_SUBSTATE_FLIGHT_PARACHUTE_DEPLOYED } |
| FSM sub-states. Use FSM_SUBSTATE_NONE for states with no sub-state. More... | |
Functions | |
| spp_uint16_t * | SPP_CORE_FSM_getErrorsBit (void) |
| Get the pointer to the FSM errors bit. | |
| SPP_RetVal_t | FSM_init (const FSM_Transition_t *p_transitionTable, const spp_uint8_t tableSize) |
| Initialize the FSM. | |
| void | FSM_tick (void) |
| Evaluate the transition table and advance the FSM if a guard passes. Call this once per superloop tick. | |
Finite State Machine (FSM) module for the SPP core.
Definition in file fsm.h.
| #define K_FSM_MAX_TABLE_SIZE 10U |
Definition at line 16 of file fsm.h.
Referenced by FSM_init().
| enum FSM_State_t |
| enum FSM_SubState_t |
| spp_uint16_t * SPP_CORE_FSM_getErrorsBit | ( | void | ) |
Get the pointer to the FSM errors bit.
Definition at line 33 of file fsm.c.
References s_fsmErrors, and SPP_CORE_FSM_getErrorsBit().
Referenced by SPP_CORE_FSM_getErrorsBit(), SPP_SERVICES_DATALOGGER_init(), SPP_SERVICES_ICM20948_init(), and SPP_SERVICES_M10M_init().
| SPP_RetVal_t FSM_init | ( | const FSM_Transition_t * | p_transitionTable, |
| const spp_uint8_t | tableSize ) |
Initialize the FSM.
| p_halPorts | Pointer to the HAL ports. |
| p_transitiontable | Pointer to the FSM table for operation. |
| tableSize | Size of the table. |
Definition at line 38 of file fsm.c.
References FSM_init(), K_FSM_MAX_TABLE_SIZE, K_SPP_ERROR_INVALID_PARAMETER, K_SPP_ERROR_NULL_POINTER, K_SPP_OK, p_s_transitionTable, and s_tableSize.
Referenced by app_main(), and FSM_init().
| void FSM_tick | ( | void | ) |
Evaluate the transition table and advance the FSM if a guard passes. Call this once per superloop tick.
Definition at line 58 of file fsm.c.
References FSM_Transition_t::action, FSM_Transition_t::fromState, FSM_Transition_t::fromSubState, FSM_tick(), FSM_Transition_t::guard, p_s_transitionTable, FSM_Handle_t::prevState, FSM_Handle_t::prevSubState, s_fsmHandle, s_tableSize, FSM_Handle_t::state, FSM_Transition_t::stateFunction, FSM_Handle_t::subState, FSM_Transition_t::toState, and FSM_Transition_t::toSubState.
Referenced by app_main(), and FSM_tick().