42#define QP_VERSION 700U
48#define QP_VERSION_STR "7.0.0"
51#define QP_RELEASE 0x7CCAAA13U
83 #define Q_SIGNAL_SIZE 2U
85#if (Q_SIGNAL_SIZE == 1U)
87#elif (Q_SIGNAL_SIZE == 2U)
98#elif (Q_SIGNAL_SIZE == 4U)
101 #error "Q_SIGNAL_SIZE defined incorrectly, expected 1U, 2U, or 4U"
158#define Q_EVT_CAST(class_) ((class_ const *)e)
166#define Q_UINT2PTR_CAST(type_, uintptr_) ((type_ *)(uintptr_))
196#define Q_STATE_CAST(handler_) ((QStateHandler)(handler_))
207#define Q_ACTION_CAST(action_) ((QActionHandler)(action_))
264 void (*
init)(
QHsm *
const me,
void const *
const e,
265 uint_fast8_t
const qs_id);
269 uint_fast8_t
const qs_id);
274 void (*
init)(
QHsm *
const me,
void const *
const e);
296 #define QHSM_INIT(me_, par_, qs_id_) do { \
297 Q_ASSERT((me_)->vptr); \
298 (*(me_)->vptr->init)((me_), (par_), (qs_id_)); \
305 uint_fast8_t
const qs_id);
308 #define QHSM_INIT(me_, par_, dummy) do { \
309 Q_ASSERT((me_)->vptr); \
310 (*(me_)->vptr->init)((me_), (par_)); \
330 #define QHSM_DISPATCH(me_, e_, qs_id_) \
331 ((*(me_)->vptr->dispatch)((me_), (e_), (qs_id_)))
337 uint_fast8_t
const qs_id);
345 #define QHSM_DISPATCH(me_, e_, dummy) \
346 ((*(me_)->vptr->dispatch)((me_), (e_)))
365#define Q_HSM_UPCAST(ptr_) ((QHsm *)(ptr_))
496 uint_fast8_t
const qs_id);
506 uint_fast8_t
const qs_id);
526#define Q_TRAN(target_) \
527 ((Q_HSM_UPCAST(me))->temp.fun = Q_STATE_CAST(target_), (QState)Q_RET_TRAN)
537#define Q_TRAN_HIST(hist_) \
538 ((Q_HSM_UPCAST(me))->temp.fun = (hist_), (QState)Q_RET_TRAN_HIST)
548#define Q_SUPER(super_) \
549 ((Q_HSM_UPCAST(me))->temp.fun = Q_STATE_CAST(super_), (QState)Q_RET_SUPER)
554#define Q_HANDLED() ((QState)Q_RET_HANDLED)
560#define Q_UNHANDLED() ((QState)Q_RET_UNHANDLED)
565#define Q_ACTION_NULL ((QActionHandler)0)
602 #define QM_ENTRY(state_) \
603 ((Q_HSM_UPCAST(me))->temp.obj = (state_), (QState)Q_RET_ENTRY)
608 #define QM_EXIT(state_) \
609 ((Q_HSM_UPCAST(me))->temp.obj = (state_), (QState)Q_RET_EXIT)
612 #define QM_ENTRY(dummy) ((QState)Q_RET_ENTRY)
614 #define QM_EXIT(dummy) ((QState)Q_RET_EXIT)
621#define QM_SM_EXIT(state_) \
622 ((Q_HSM_UPCAST(me))->temp.obj = (state_), (QState)Q_RET_EXIT)
627#define QM_TRAN(tatbl_) ((Q_HSM_UPCAST(me))->temp.tatbl \
628 = (QMTranActTable const *)(tatbl_), (QState)Q_RET_TRAN)
633#define QM_TRAN_INIT(tatbl_) ((Q_HSM_UPCAST(me))->temp.tatbl \
634 = (QMTranActTable const *)(tatbl_), (QState)Q_RET_TRAN_INIT)
639#define QM_TRAN_HIST(history_, tatbl_) \
640 ((((Q_HSM_UPCAST(me))->state.obj = (history_)), \
641 ((Q_HSM_UPCAST(me))->temp.tatbl = (QMTranActTable const *)(tatbl_))), \
642 (QState)Q_RET_TRAN_HIST)
647#define QM_TRAN_EP(tatbl_) ((Q_HSM_UPCAST(me))->temp.tatbl \
648 = (QMTranActTable const *)(tatbl_), (QState)Q_RET_TRAN_EP)
653#define QM_TRAN_XP(xp_, tatbl_) \
654 ((((Q_HSM_UPCAST(me))->state.act = (xp_)), \
655 ((Q_HSM_UPCAST(me))->temp.tatbl = (QMTranActTable const *)(tatbl_))), \
656 (QState)Q_RET_TRAN_XP)
661#define QM_HANDLED() ((QState)Q_RET_HANDLED)
668#define QM_UNHANDLED() ((QState)Q_RET_UNHANDLED)
673#define QM_SUPER() ((QState)Q_RET_SUPER)
678#define QM_SUPER_SUB(host_) \
679 ((Q_HSM_UPCAST(me))->temp.obj = (host_), (QState)Q_RET_SUPER_SUB)
684#define QM_STATE_NULL ((QMState *)0)
#define Q_STATE_CAST(handler_)
QState(* QStateHandler)(void *const me, QEvt const *const e)
void(* QXThreadHandler)(QXThread *const me)
char const QP_versionStr[7]
QState(* QActionHandler)(void *const me)
bool QHsm_isIn(QHsm *const me, QStateHandler const state)
struct QHsmVtable const * vptr
void QHsm_ctor(QHsm *const me, QStateHandler initial)
static QStateHandler QHsm_state(QHsm *const me)
void QHsm_init_(QHsm *const me, void const *const e, uint_fast8_t const qs_id)
QState QHsm_top(void const *const me, QEvt const *const e)
QStateHandler QHsm_getStateHandler_(QHsm *const me)
void QHsm_dispatch_(QHsm *const me, QEvt const *const e, uint_fast8_t const qs_id)
QStateHandler QHsm_childState(QHsm *const me, QStateHandler const parent)
void(* init)(QHsm *const me, void const *const e, uint_fast8_t const qs_id)
void(* dispatch)(QHsm *const me, QEvt const *const e, uint_fast8_t const qs_id)
QStateHandler(* getStateHandler)(QHsm *const me)
struct QMState const * superstate
QActionHandler const entryAction
QActionHandler const initAction
QActionHandler const exitAction
QStateHandler const stateHandler
QActionHandler const act[1]
struct QMState const * target
static QMState const * QMsm_stateObj(QHsm *const me)
QStateHandler QMsm_getStateHandler_(QHsm *const me)
void QMsm_init_(QHsm *const me, void const *const e, uint_fast8_t const qs_id)
void QMsm_dispatch_(QHsm *const me, QEvt const *const e, uint_fast8_t const qs_id)
QMState const * QMsm_childStateObj(QHsm const *const me, QMState const *const parent)
bool QMsm_isInState(QMsm const *const me, QMState const *const state)
void QMsm_ctor(QMsm *const me, QStateHandler initial)
QMTranActTable const * tatbl
struct QMState const * obj