QMsmTst is a test for the QMsm state machine based on Chapter 2 of the PSiCC2 book.
Test active object
: QMsm(Q_STATE_CAST(&QMsmTst::initial))
(void)e; // avoid compiler warning
me->m_foo = 0U;
BSP_display("top-INIT;");
BSP_display("s-ENTRY;");
BSP_display("s-EXIT;");
BSP_display("s-INIT;");
me->m_foo
me->m_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->m_foo
me->m_foo = true;
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->m_foo
me->m_foo = false;
BSP_display("s11-D;");
BSP_display("s11-G;");
BSP_display("s2-ENTRY;");
BSP_display("s2-EXIT;");
BSP_display("s2-INIT;");
!me->m_foo
me->m_foo = true;
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 qmsmtst_h
#define qmsmtst_h
namespace QMSMTST {
enum QMsmTstSignals {
A_SIG = QP::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
};
extern QP::QMsm * const the_msm; // opaque pointer to the test MSM
// BSP functions to dispaly a message and exit
void BSP_display(char_t const *msg);
void BSP_terminate(int16_t const result);
} // namespace QMSMTST
#endif // qmsmtst_h
#include "qpcpp.h"
#include "qmsmtst.h"
namespace QMSMTST {
$declare(SMs::QMsmTst)
static QMsmTst l_msmtst; // the only instance of the QMsmTst class
// global-scope definitions -----------------------------------------
QP::QMsm * const the_msm = &l_msmtst; // the opaque pointer
$define(SMs::QMsmTst)
} // namespace QMSMTST