/*.$file${.::history.c} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /* * Model: history.qm * File: ${.::history.c} * * This code has been generated by QM 4.6.0 . * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost. * * This code is covered by the following QP license: * License # : QPC-EVAL * Issued to : Institution or an individual evaluating the QP/C framework * Framework(s): qpc * Support ends: 2020-12-31 * Product(s) : * This license is available only for evaluation purposes and * the generated code is still licensed under the terms of GPL. * Please submit request for extension of the evaluaion period at: * /licensing/#RequestForm */ /*.$endhead${.::history.c} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ #include "qpc.h" #include "history.h" #include #include #include //Q_DEFINE_THIS_FILE /*.$declare${SMs::ToastOven} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /*.${SMs::ToastOven} .......................................................*/ typedef struct { /* protected: */ QMsm super; /* private state histories */ QMState const *hist_doorClosed; } ToastOven; /* protected: */ static QState ToastOven_initial(ToastOven * const me, QEvt const * const e); static QState ToastOven_doorClosed (ToastOven * const me, QEvt const * const e); static QState ToastOven_doorClosed_e(ToastOven * const me); static QState ToastOven_doorClosed_x(ToastOven * const me); static QState ToastOven_doorClosed_i(ToastOven * const me); static QMState const ToastOven_doorClosed_s = { QM_STATE_NULL, /* superstate (top) */ Q_STATE_CAST(&ToastOven_doorClosed), Q_ACTION_CAST(&ToastOven_doorClosed_e), Q_ACTION_CAST(&ToastOven_doorClosed_x), Q_ACTION_CAST(&ToastOven_doorClosed_i) }; static QState ToastOven_heating (ToastOven * const me, QEvt const * const e); static QState ToastOven_heating_e(ToastOven * const me); static QState ToastOven_heating_x(ToastOven * const me); static QState ToastOven_heating_i(ToastOven * const me); static QMState const ToastOven_heating_s = { &ToastOven_doorClosed_s, /* superstate */ Q_STATE_CAST(&ToastOven_heating), Q_ACTION_CAST(&ToastOven_heating_e), Q_ACTION_CAST(&ToastOven_heating_x), Q_ACTION_CAST(&ToastOven_heating_i) }; static QState ToastOven_toasting (ToastOven * const me, QEvt const * const e); static QState ToastOven_toasting_e(ToastOven * const me); static QMState const ToastOven_toasting_s = { &ToastOven_heating_s, /* superstate */ Q_STATE_CAST(&ToastOven_toasting), Q_ACTION_CAST(&ToastOven_toasting_e), Q_ACTION_NULL, /* no exit action */ Q_ACTION_NULL /* no initial tran. */ }; static QState ToastOven_baking (ToastOven * const me, QEvt const * const e); static QState ToastOven_baking_e(ToastOven * const me); static QMState const ToastOven_baking_s = { &ToastOven_heating_s, /* superstate */ Q_STATE_CAST(&ToastOven_baking), Q_ACTION_CAST(&ToastOven_baking_e), Q_ACTION_NULL, /* no exit action */ Q_ACTION_NULL /* no initial tran. */ }; static QState ToastOven_off (ToastOven * const me, QEvt const * const e); static QState ToastOven_off_e(ToastOven * const me); static QMState const ToastOven_off_s = { &ToastOven_doorClosed_s, /* superstate */ Q_STATE_CAST(&ToastOven_off), Q_ACTION_CAST(&ToastOven_off_e), Q_ACTION_NULL, /* no exit action */ Q_ACTION_NULL /* no initial tran. */ }; static QState ToastOven_doorOpen (ToastOven * const me, QEvt const * const e); static QState ToastOven_doorOpen_e(ToastOven * const me); static QState ToastOven_doorOpen_x(ToastOven * const me); static QMState const ToastOven_doorOpen_s = { QM_STATE_NULL, /* superstate (top) */ Q_STATE_CAST(&ToastOven_doorOpen), Q_ACTION_CAST(&ToastOven_doorOpen_e), Q_ACTION_CAST(&ToastOven_doorOpen_x), Q_ACTION_NULL /* no initial tran. */ }; static QState ToastOven_final (ToastOven * const me, QEvt const * const e); static QState ToastOven_final_e(ToastOven * const me); static QMState const ToastOven_final_s = { QM_STATE_NULL, /* superstate (top) */ Q_STATE_CAST(&ToastOven_final), Q_ACTION_CAST(&ToastOven_final_e), Q_ACTION_NULL, /* no exit action */ Q_ACTION_NULL /* no initial tran. */ }; /*.$enddecl${SMs::ToastOven} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ static ToastOven l_oven; /* the only instance of the ToastOven class */ /* global-scope definitions -----------------------------------------*/ QMsm * const the_oven = (QMsm *)&l_oven; /* the opaque pointer */ /*.$skip${QP_VERSION} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /*. Check for the minimum required QP version */ #if (QP_VERSION < 650U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U)) #error qpc version 6.5.0 or higher required #endif /*.$endskip${QP_VERSION} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ /*.$define${SMs::ToastOven_ctor} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /*.${SMs::ToastOven_ctor} ..................................................*/ void ToastOven_ctor(void) { ToastOven *me = &l_oven; QMsm_ctor(&me->super, Q_STATE_CAST(&ToastOven_initial)); } /*.$enddef${SMs::ToastOven_ctor} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ /*.$define${SMs::ToastOven} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/ /*.${SMs::ToastOven} .......................................................*/ /*.${SMs::ToastOven::SM} ...................................................*/ static QState ToastOven_initial(ToastOven * const me, QEvt const * const e) { static struct { QMState const *target; QActionHandler act[3]; } const tatbl_ = { /* tran-action table */ &ToastOven_doorClosed_s, /* target state */ { Q_ACTION_CAST(&ToastOven_doorClosed_e), /* entry */ Q_ACTION_CAST(&ToastOven_doorClosed_i), /* initial tran. */ Q_ACTION_NULL /* zero terminator */ } }; /*.${SMs::ToastOven::SM::initial} */ (void)e; /* avoid compiler warning */ /* state history attributes */ me->hist_doorClosed = &ToastOven_off_s; return QM_TRAN_INIT(&tatbl_); } /*.${SMs::ToastOven::SM::doorClosed} .......................................*/ /*.${SMs::ToastOven::SM::doorClosed} */ static QState ToastOven_doorClosed_e(ToastOven * const me) { printf("door-Closed;"); (void)me; /* unused parameter */ return QM_ENTRY(&ToastOven_doorClosed_s); } /*.${SMs::ToastOven::SM::doorClosed} */ static QState ToastOven_doorClosed_x(ToastOven * const me) { /* save deep history */ me->hist_doorClosed = QMsm_stateObj(me); return QM_EXIT(&ToastOven_doorClosed_s); } /*.${SMs::ToastOven::SM::doorClosed::initial} */ static QState ToastOven_doorClosed_i(ToastOven * const me) { static struct { QMState const *target; QActionHandler act[2]; } const tatbl_ = { /* tran-action table */ &ToastOven_off_s, /* target state */ { Q_ACTION_CAST(&ToastOven_off_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; /*.${SMs::ToastOven::SM::doorClosed::initial} */ return QM_TRAN_INIT(&tatbl_); } /*.${SMs::ToastOven::SM::doorClosed} */ static QState ToastOven_doorClosed(ToastOven * const me, QEvt const * const e) { QState status_; switch (e->sig) { /*.${SMs::ToastOven::SM::doorClosed::TERMINATE} */ case TERMINATE_SIG: { static struct { QMState const *target; QActionHandler act[3]; } const tatbl_ = { /* tran-action table */ &ToastOven_final_s, /* target state */ { Q_ACTION_CAST(&ToastOven_doorClosed_x), /* exit */ Q_ACTION_CAST(&ToastOven_final_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; status_ = QM_TRAN(&tatbl_); break; } /*.${SMs::ToastOven::SM::doorClosed::OPEN} */ case OPEN_SIG: { static struct { QMState const *target; QActionHandler act[3]; } const tatbl_ = { /* tran-action table */ &ToastOven_doorOpen_s, /* target state */ { Q_ACTION_CAST(&ToastOven_doorClosed_x), /* exit */ Q_ACTION_CAST(&ToastOven_doorOpen_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; status_ = QM_TRAN(&tatbl_); break; } /*.${SMs::ToastOven::SM::doorClosed::TOAST} */ case TOAST_SIG: { static struct { QMState const *target; QActionHandler act[3]; } const tatbl_ = { /* tran-action table */ &ToastOven_toasting_s, /* target state */ { Q_ACTION_CAST(&ToastOven_heating_e), /* entry */ Q_ACTION_CAST(&ToastOven_toasting_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; status_ = QM_TRAN(&tatbl_); break; } /*.${SMs::ToastOven::SM::doorClosed::BAKE} */ case BAKE_SIG: { static struct { QMState const *target; QActionHandler act[3]; } const tatbl_ = { /* tran-action table */ &ToastOven_baking_s, /* target state */ { Q_ACTION_CAST(&ToastOven_heating_e), /* entry */ Q_ACTION_CAST(&ToastOven_baking_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; status_ = QM_TRAN(&tatbl_); break; } /*.${SMs::ToastOven::SM::doorClosed::OFF} */ case OFF_SIG: { static struct { QMState const *target; QActionHandler act[2]; } const tatbl_ = { /* tran-action table */ &ToastOven_off_s, /* target state */ { Q_ACTION_CAST(&ToastOven_off_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; status_ = QM_TRAN(&tatbl_); break; } default: { status_ = QM_SUPER(); break; } } return status_; } /*.${SMs::ToastOven::SM::doorClosed::heating} ..............................*/ /*.${SMs::ToastOven::SM::doorClosed::heating} */ static QState ToastOven_heating_e(ToastOven * const me) { printf("heater-On;"); (void)me; /* unused parameter */ return QM_ENTRY(&ToastOven_heating_s); } /*.${SMs::ToastOven::SM::doorClosed::heating} */ static QState ToastOven_heating_x(ToastOven * const me) { printf("heater-Off;"); (void)me; /* unused parameter */ return QM_EXIT(&ToastOven_heating_s); } /*.${SMs::ToastOven::SM::doorClosed::heating::initial} */ static QState ToastOven_heating_i(ToastOven * const me) { static struct { QMState const *target; QActionHandler act[2]; } const tatbl_ = { /* tran-action table */ &ToastOven_toasting_s, /* target state */ { Q_ACTION_CAST(&ToastOven_toasting_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; /*.${SMs::ToastOven::SM::doorClosed::heating::initial} */ return QM_TRAN_INIT(&tatbl_); } /*.${SMs::ToastOven::SM::doorClosed::heating} */ static QState ToastOven_heating(ToastOven * const me, QEvt const * const e) { QState status_; switch (e->sig) { default: { status_ = QM_SUPER(); break; } } (void)me; /* unused parameter */ return status_; } /*.${SMs::ToastOven::SM::doorClosed::heating::toasting} ....................*/ /*.${SMs::ToastOven::SM::doorClosed::heating::toasting} */ static QState ToastOven_toasting_e(ToastOven * const me) { printf("toasting;"); (void)me; /* unused parameter */ return QM_ENTRY(&ToastOven_toasting_s); } /*.${SMs::ToastOven::SM::doorClosed::heating::toasting} */ static QState ToastOven_toasting(ToastOven * const me, QEvt const * const e) { QState status_; switch (e->sig) { default: { status_ = QM_SUPER(); break; } } (void)me; /* unused parameter */ return status_; } /*.${SMs::ToastOven::SM::doorClosed::heating::baking} ......................*/ /*.${SMs::ToastOven::SM::doorClosed::heating::baking} */ static QState ToastOven_baking_e(ToastOven * const me) { printf("baking;"); (void)me; /* unused parameter */ return QM_ENTRY(&ToastOven_baking_s); } /*.${SMs::ToastOven::SM::doorClosed::heating::baking} */ static QState ToastOven_baking(ToastOven * const me, QEvt const * const e) { QState status_; switch (e->sig) { default: { status_ = QM_SUPER(); break; } } (void)me; /* unused parameter */ return status_; } /*.${SMs::ToastOven::SM::doorClosed::off} ..................................*/ /*.${SMs::ToastOven::SM::doorClosed::off} */ static QState ToastOven_off_e(ToastOven * const me) { printf("toaster-Off;"); (void)me; /* unused parameter */ return QM_ENTRY(&ToastOven_off_s); } /*.${SMs::ToastOven::SM::doorClosed::off} */ static QState ToastOven_off(ToastOven * const me, QEvt const * const e) { QState status_; switch (e->sig) { default: { status_ = QM_SUPER(); break; } } (void)me; /* unused parameter */ return status_; } /*.${SMs::ToastOven::SM::doorOpen} .........................................*/ /*.${SMs::ToastOven::SM::doorOpen} */ static QState ToastOven_doorOpen_e(ToastOven * const me) { printf("door-Open,lamp-On;"); (void)me; /* unused parameter */ return QM_ENTRY(&ToastOven_doorOpen_s); } /*.${SMs::ToastOven::SM::doorOpen} */ static QState ToastOven_doorOpen_x(ToastOven * const me) { printf("lamp-Off;"); (void)me; /* unused parameter */ return QM_EXIT(&ToastOven_doorOpen_s); } /*.${SMs::ToastOven::SM::doorOpen} */ static QState ToastOven_doorOpen(ToastOven * const me, QEvt const * const e) { QState status_; switch (e->sig) { /*.${SMs::ToastOven::SM::doorOpen::CLOSE} */ case CLOSE_SIG: { static struct { QMState const *target; QActionHandler act[3]; } const tatbl_ = { /* tran-action table */ &ToastOven_doorClosed_s, /* target state */ { Q_ACTION_CAST(&ToastOven_doorOpen_x), /* exit */ Q_ACTION_CAST(&ToastOven_doorClosed_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; status_ = QM_TRAN_HIST(me->hist_doorClosed, &tatbl_); break; } /*.${SMs::ToastOven::SM::doorOpen::TERMINATE} */ case TERMINATE_SIG: { static struct { QMState const *target; QActionHandler act[3]; } const tatbl_ = { /* tran-action table */ &ToastOven_final_s, /* target state */ { Q_ACTION_CAST(&ToastOven_doorOpen_x), /* exit */ Q_ACTION_CAST(&ToastOven_final_e), /* entry */ Q_ACTION_NULL /* zero terminator */ } }; status_ = QM_TRAN(&tatbl_); break; } default: { status_ = QM_SUPER(); break; } } return status_; } /*.${SMs::ToastOven::SM::final} ............................................*/ /*.${SMs::ToastOven::SM::final} */ static QState ToastOven_final_e(ToastOven * const me) { printf("\nBye! Bye!\n"); QF_onCleanup(); exit(0); (void)me; /* unused parameter */ return QM_ENTRY(&ToastOven_final_s); } /*.${SMs::ToastOven::SM::final} */ static QState ToastOven_final(ToastOven * const me, QEvt const * const e) { QState status_; switch (e->sig) { default: { status_ = QM_SUPER(); break; } } (void)me; /* unused parameter */ return status_; } /*.$enddef${SMs::ToastOven} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/