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}