56#define QP_VERSION 722U
65#define QP_VERSION_STR "7.2.2"
68#define QP_RELEASE 0x76BAD85DU
117#define Q_SIGNAL_SIZE 2U
129#if (Q_SIGNAL_SIZE == 2U)
144#if (Q_SIGNAL_SIZE == 1U)
149#if (Q_SIGNAL_SIZE == 4U)
417bool QHsm_isIn(
QHsm *
const me,
492void QHsm_ctor(
QHsm *
const me,
516 QEvt const *
const e);
539void QHsm_init_(
QHsm *
const me,
540 void const *
const e,
541 uint_fast8_t
const qs_id);
565void QHsm_dispatch_(
QHsm *
const me,
566 QEvt const *
const e,
567 uint_fast8_t
const qs_id);
594 uint_fast8_t
const qs_id);
604void QHsm_state_entry_(
QHsm *
const me,
606 uint_fast8_t
const qs_id);
620bool QHsm_state_exit_(
QHsm *
const me,
622 uint_fast8_t
const qs_id);
632 void (*
init)(
QHsm *
const me,
void const *
const e,
633 uint_fast8_t
const qs_id);
637 uint_fast8_t
const qs_id);
695bool QMsm_isInState(
QMsm const *
const me,
708QMState const * QMsm_stateObj(
QHsm const *
const me);
732QMState const * QMsm_childStateObj(
733 QHsm const *
const me,
764void QMsm_ctor(
QMsm *
const me,
790 void const *
const e,
791 uint_fast8_t
const qs_id);
816 QEvt const *
const e,
817 uint_fast8_t
const qs_id);
850 uint_fast8_t
const qs_id);
865void QMsm_exitToTranSource_(
869 uint_fast8_t
const qs_id);
889 uint_fast8_t
const qs_id);
913#define QHSM_INIT(me_, par_, qs_id_) do { \
914 Q_ASSERT((me_)->vptr); \
915 (*(me_)->vptr->init)((me_), (par_), (qs_id_)); \
921#define QHSM_INIT(me_, par_, dummy) do { \
922 Q_ASSERT((me_)->vptr); \
923 (*(me_)->vptr->init)((me_), (par_), 0U); \
944#define QHSM_DISPATCH(me_, e_, qs_id_) \
945 ((*(me_)->vptr->dispatch)((me_), (e_), (qs_id_)))
950#define QHSM_DISPATCH(me_, e_, dummy) \
951 ((*(me_)->vptr->dispatch)((me_), (e_), 0U))
972#define Q_HSM_UPCAST(ptr_) ((QHsm *)(ptr_))
994#define Q_TRAN(target_) \
995 ((Q_HSM_UPCAST(me))->temp.fun = Q_STATE_CAST(target_), \
1010#define Q_TRAN_HIST(hist_) \
1011 ((Q_HSM_UPCAST(me))->temp.fun = (hist_), \
1012 (QState)Q_RET_TRAN_HIST)
1027#define Q_SUPER(super_) \
1028 ((Q_HSM_UPCAST(me))->temp.fun = Q_STATE_CAST(super_), \
1029 (QState)Q_RET_SUPER)
1039#define Q_HANDLED() ((QState)Q_RET_HANDLED)
1046#define Q_UNHANDLED() ((QState)Q_RET_UNHANDLED)
1052#define Q_ACTION_NULL ((QActionHandler)0)
1071#define Q_EVT_CAST(class_) ((class_ const *)(e))
1089#define Q_STATE_CAST(handler_) ((QStateHandler)(handler_))
1104#define Q_ACTION_CAST(action_) ((QActionHandler)(action_))
1108#define Q_UNUSED_PAR(par_) ((void)(par_))
1116#define Q_DIM(array_) (sizeof(array_) / sizeof((array_)[0U]))
1127#define Q_UINT2PTR_CAST(type_, uint_) ((type_ *)(uint_))
1136#define QEVT_INITIALIZER(sig_) { (QSignal)(sig_), 0U, 0U }
1148#define QM_ENTRY(state_) \
1149 ((Q_HSM_UPCAST(me))->temp.obj = (state_), \
1150 (QState)Q_RET_ENTRY)
1155#define QM_ENTRY(dummy) ((QState)Q_RET_ENTRY)
1168#define QM_EXIT(state_) \
1169 ((Q_HSM_UPCAST(me))->temp.obj = (state_), \
1175#define QM_EXIT(dummy) ((QState)Q_RET_EXIT)
1187#define QM_SM_EXIT(state_) \
1188 ((Q_HSM_UPCAST(me))->temp.obj = (state_), \
1201#define QM_TRAN(tatbl_) ((Q_HSM_UPCAST(me))->temp.tatbl \
1202 = (struct QMTranActTable const *)(tatbl_), \
1215#define QM_TRAN_INIT(tatbl_) ((Q_HSM_UPCAST(me))->temp.tatbl \
1216 = (struct QMTranActTable const *)(tatbl_), \
1217 (QState)Q_RET_TRAN_INIT)
1228#define QM_TRAN_HIST(history_, tatbl_) \
1229 ((((Q_HSM_UPCAST(me))->state.obj = (history_)), \
1230 ((Q_HSM_UPCAST(me))->temp.tatbl = \
1231 (struct QMTranActTable const *)(tatbl_))), \
1232 (QState)Q_RET_TRAN_HIST)
1244#define QM_TRAN_EP(tatbl_) ((Q_HSM_UPCAST(me))->temp.tatbl \
1245 = (struct QMTranActTable const *)(tatbl_), \
1246 (QState)Q_RET_TRAN_EP)
1257#define QM_TRAN_XP(xp_, tatbl_) \
1258 ((((Q_HSM_UPCAST(me))->state.act = (xp_)), \
1259 ((Q_HSM_UPCAST(me))->temp.tatbl = \
1260 (struct QMTranActTable const *)(tatbl_))), \
1261 (QState)Q_RET_TRAN_XP)
1267#define QM_HANDLED() ((QState)Q_RET_HANDLED)
1275#define QM_UNHANDLED() ((QState)Q_RET_UNHANDLED)
1281#define QM_SUPER() ((QState)Q_RET_SUPER)
1291#define QM_SUPER_SUB(host_) \
1292 ((Q_HSM_UPCAST(me))->temp.obj = (host_), \
1293 (QState)Q_RET_SUPER_SUB)
1299#define QM_STATE_NULL ((QMState *)0)
QActionHandler const initAction
int_fast8_t QHsm_tran_(QHsm *const me, QStateHandler *const path, uint_fast8_t const qs_id)
QStateHandler const stateHandler
QActionHandler const act[1]
void(* QXThreadHandler)(struct QXThread *const me)
char const QP_versionStr[8]
QState(* QStateHandler)(void *const me, QEvt const *const e)
QActionHandler const entryAction
QState(* QActionHandler)(void *const me)
QActionHandler const exitAction
struct QMState const * superstate
State object for the QMsm class (QM State Machine).
Transition-Action Table for the QMsm State Machine.
void QEvt_ctor(QEvt *const me, enum_t const sig)
Hierarchical State Machine class.
struct QHsmVtable const * vptr
static QStateHandler QHsm_state(QHsm *const me)
Virtual table for the QHsm class.
void(* init)(QHsm *const me, void const *const e, uint_fast8_t const qs_id)
QStateHandler(* getStateHandler)(QHsm *const me)
void(* dispatch)(QHsm *const me, QEvt const *const e, uint_fast8_t const qs_id)
QM state machine implementation strategy.
eXtended (blocking) thread of the QXK preemptive kernel
Attribute of for the QHsm class (Hierarchical State Machine).
struct QMState const * obj
QMTranActTable const * tatbl