QHsmTst is a contrived state machine from Chapter 2 of the PSiCC2 book for testing all possible transition topologies with up to 4-levels of state nesting. { A_SIG = Q_USER_SIG, B_SIG, C_SIG, D_SIG, E_SIG, F_SIG, G_SIG, H_SIG, I_SIG, TERMINATE_SIG, IGNORE_SIG, MAX_SIG }; opaque pointer to the test SM = &QHsmTst_inst.super.super; QHsmTst *me = &QHsmTst_inst; QHsm_ctor(&me->super, Q_STATE_CAST(&QHsmTst_initial)); Test active object Q_UNUSED_PAR(par); me->foo = 0U; BSP_display("top-INIT;"); QS_SIG_DICTIONARY(A_SIG, (void *)0); QS_SIG_DICTIONARY(B_SIG, (void *)0); QS_SIG_DICTIONARY(C_SIG, (void *)0); QS_SIG_DICTIONARY(D_SIG, (void *)0); QS_SIG_DICTIONARY(E_SIG, (void *)0); QS_SIG_DICTIONARY(F_SIG, (void *)0); QS_SIG_DICTIONARY(G_SIG, (void *)0); QS_SIG_DICTIONARY(H_SIG, (void *)0); QS_SIG_DICTIONARY(I_SIG, (void *)0); QS_SIG_DICTIONARY(IGNORE_SIG, (void *)0); QS_SIG_DICTIONARY(TERMINATE_SIG, (void *)0); BSP_display("s-ENTRY;"); BSP_display("s-EXIT;"); BSP_display("s-INIT;"); me->foo me->foo = 0U; BSP_display("s-I;"); BSP_display("s-E;"); BSP_terminate(0); BSP_display("s1-ENTRY;"); BSP_display("s1-EXIT;"); BSP_display("s1-INIT;"); BSP_display("s1-I;"); !me->foo me->foo = 1U; BSP_display("s1-D;"); BSP_display("s1-A;"); BSP_display("s1-B;"); BSP_display("s1-F;"); BSP_display("s1-C;"); BSP_display("s11-ENTRY;"); BSP_display("s11-EXIT;"); BSP_display("s11-H;"); me->foo me->foo = 0U; BSP_display("s11-D;"); BSP_display("s11-G;"); BSP_display("s2-ENTRY;"); BSP_display("s2-EXIT;"); BSP_display("s2-INIT;"); !me->foo me->foo = 1U; BSP_display("s2-I;"); BSP_display("s2-F;"); BSP_display("s2-C;"); BSP_display("s21-ENTRY;"); BSP_display("s21-EXIT;"); BSP_display("s21-INIT;"); BSP_display("s21-G;"); BSP_display("s21-A;"); BSP_display("s21-B;"); BSP_display("s211-ENTRY;"); BSP_display("s211-EXIT;"); BSP_display("s211-H;"); BSP_display("s211-D;"); #ifndef QHSMTST_H_ #define QHSMTST_H_ $declare ${Shared} #endif // QHSMTST_H_ #include "qpc.h" // QP/C framework #include "qhsmtst.h" // this application $declare ${SMs::QHsmTst} $define ${Shared::the_sm} $define ${Shared::QHsmTst_ctor} $define ${SMs::QHsmTst}