58 JUNO_SM_OPTION_STATE_T tOptionNextState;
66 JUNO_RESULT_BOOL_T (*
ShouldExit)(JUNO_SM_STATE_T *ptJunoSm);
73 JUNO_SM_STATE_T *ptCurrentState;
88 if(ptSmState->tOptionNextState.bIsSome)
98 ptStateRoot->ptSm = (JUNO_SM_T *) ptSm;
99 ptStateRoot->_pfcnFailureHandler = pfcnFailureHandler;
100 ptStateRoot->_pvFailureUserData = pvFailureUserData;
101 ptStateRoot->ptApi = ptStateApi;
104 ptStateRoot->tOptionNextState.bIsSome =
true;
105 ptStateRoot->tOptionNextState.tSome = (JUNO_SM_STATE_T *) ptNextState;
113 ptSmRoot->ptCurrentState = (JUNO_SM_STATE_T *) ptStartState;
114 ptSmRoot->_pfcnFailureHandler = pfcnFailureHandler;
115 ptSmRoot->_pvFailureUserData = pvFailureUserData;
127 tResult.tOk = ptSmRoot->ptCurrentState;
138 if(ptCurrentStateRoot->tOptionNextState.bIsSome)
140 ptSmRoot->ptCurrentState = ptCurrentStateRoot->tOptionNextState.tSome;
141 tResult.tOk.bIsSome =
true;
142 tResult.tOk.tSome = ptSmRoot->ptCurrentState;
146 tResult.tOk.bIsSome =
false;
147 tResult.tOk.tSome = NULL;
#define JUNO_ASSERT_EXISTS(ptr)
Definition macros.h:28
#define JUNO_ASSERT_SUCCESS(tStatus, failOp)
Definition macros.h:52
#define JUNO_MODULE_DECLARE(NAME_T)
Definition module.h:102
#define JUNO_MODULE_RESULT(NAME_T, OK_T)
Defines a result type combining a status and a success payload.
Definition module.h:223
#define JUNO_MODULE_ROOT(API_T,...)
Definition module.h:182
#define JUNO_MODULE_OPTION(NAME_T, SOME_T)
Defines an option type combining a flag to indicate some and a success payload.
Definition module.h:242
static JUNO_STATUS_T JunoSm_StateVerify(JUNO_SM_STATE_ROOT_T *ptSmState)
Definition sm_api.h:84
static JUNO_STATUS_T JunoSm_Init(JUNO_SM_ROOT_T *ptSmRoot, JUNO_SM_STATE_ROOT_T *ptStartState, JUNO_FAILURE_HANDLER_T pfcnFailureHandler, JUNO_USER_DATA_T *pvFailureUserData)
Definition sm_api.h:110
struct JUNO_SM_STATE_ROOT_TAG JUNO_SM_STATE_ROOT_T
Definition sm_api.h:45
static JUNO_STATUS_T JunoSm_StateInit(JUNO_SM_ROOT_T *ptSm, JUNO_SM_STATE_ROOT_T *ptStateRoot, JUNO_SM_STATE_ROOT_T *ptNextState, const JUNO_SM_STATE_API_T *ptStateApi, JUNO_FAILURE_HANDLER_T pfcnFailureHandler, JUNO_USER_DATA_T *pvFailureUserData)
Definition sm_api.h:95
static JUNO_SM_RESULT_OPTION_STATE_T JunoSm_TransitionState(JUNO_SM_ROOT_T *ptSmRoot)
Definition sm_api.h:131
static JUNO_STATUS_T JunoSm_Verify(JUNO_SM_ROOT_T *ptSmRoot)
Verify if this is a valid state machine.
Definition sm_api.h:77
static JUNO_SM_RESULT_STATE_T JunoSm_GetCurrentState(JUNO_SM_ROOT_T *ptSmRoot)
Definition sm_api.h:121
struct JUNO_SM_ROOT_TAG JUNO_SM_ROOT_T
Definition sm_api.h:40
#define JUNO_STATUS_ERR
Definition status.h:25
void(* JUNO_FAILURE_HANDLER_T)(JUNO_STATUS_T tStatus, const char *pcCustomMessage, JUNO_USER_DATA_T *pvUserData)
Definition status.h:43
int32_t JUNO_STATUS_T
Definition status.h:23
#define JUNO_STATUS_SUCCESS
Definition status.h:24
void JUNO_USER_DATA_T
Definition status.h:42
JUNO_RESULT_BOOL_T(* ShouldExit)(JUNO_SM_STATE_T *ptJunoSm)
Returns a bool result whether the current state should exit.
Definition sm_api.h:66
JUNO_STATUS_T(* StateAction)(JUNO_SM_STATE_T *ptJunoSm)
The action that should be executed in this state.
Definition sm_api.h:64
JUNO_STATUS_T(* ResetState)(JUNO_SM_STATE_T *ptJunoSm)
Reset the state.
Definition sm_api.h:68