/*..........................................................................*/ QState UI_num_handler(UI_num *me, QEvt const *e) { switch (e->sig) { case Q_ENTRY_SIG: { /* send object dictionaries for UI objects */ QS_OBJ_DICTIONARY(&me->num_entry); /* instantiate the state-local objects */ NumEntry_ctor(&me->num_entry); /* take the initial transition in the component */ QHsm_init((QHsm *)&me->num_entry, (QEvt *)0); return Q_HANDLED(); } case Q_EXIT_SIG: { me->super.history = QHsm_state((QHsm const *)me);/*save history */ /* destroy the state-local objects... */ NumEntry_xtor(&me->num_entry); return Q_HANDLED(); } case Q_INIT_SIG: { return Q_TRAN(&UI_num_sd_handler); } case HELP_SIG: { return Q_TRAN(&UI_help_handler); /* Help screen */ } } return Q_SUPER(&UI_top_handler); }
/*..........................................................................*/ QState ToasterOven_doorClosed(ToasterOven *me) { switch (Q_SIG(me)) { case Q_ENTRY_SIG: { printf("door-Closed;"); return Q_HANDLED(); } case Q_EXIT_SIG: { me->doorClosed_history = QHsm_state(&me->super);/*<-save HISTORY*/ return Q_HANDLED(); } case Q_INIT_SIG: { return Q_TRAN(&ToasterOven_off); } case OPEN_SIG: { return Q_TRAN(&ToasterOven_doorOpen); } case TOAST_SIG: { return Q_TRAN(&ToasterOven_toasting); } case BAKE_SIG: { return Q_TRAN(&ToasterOven_baking); } case OFF_SIG: { return Q_TRAN(&ToasterOven_off); } case TERMINATE_SIG: { return Q_TRAN(&ToasterOven_final); } } return Q_SUPER(&QHsm_top); }
/*${SMs::ToastOven::SM::doorClosed} ........................................*/ static QState ToastOven_doorClosed(ToastOven * const me) { QState status_; switch (Q_SIG(me)) { /*${SMs::ToastOven::SM::doorClosed} */ case Q_ENTRY_SIG: { printf("door-Closed;"); status_ = Q_HANDLED(); break; } /*${SMs::ToastOven::SM::doorClosed} */ case Q_EXIT_SIG: { /* save deep history */ me->hist_doorClosed = QHsm_state(me); status_ = Q_HANDLED(); break; } /*${SMs::ToastOven::SM::doorClosed::initial} */ case Q_INIT_SIG: { status_ = Q_TRAN(&ToastOven_off); break; } /*${SMs::ToastOven::SM::doorClosed::TERMINATE} */ case TERMINATE_SIG: { status_ = Q_TRAN(&ToastOven_final); break; } /*${SMs::ToastOven::SM::doorClosed::OPEN} */ case OPEN_SIG: { status_ = Q_TRAN(&ToastOven_doorOpen); break; } /*${SMs::ToastOven::SM::doorClosed::TOAST} */ case TOAST_SIG: { status_ = Q_TRAN(&ToastOven_toasting); break; } /*${SMs::ToastOven::SM::doorClosed::BAKE} */ case BAKE_SIG: { status_ = Q_TRAN(&ToastOven_baking); break; } /*${SMs::ToastOven::SM::doorClosed::OFF} */ case OFF_SIG: { status_ = Q_TRAN(&ToastOven_off); break; } default: { status_ = Q_SUPER(&QHsm_top); break; } } return status_; }
/*..........................................................................*/ static QState ToastOven_doorClosed(ToastOven * const me, QEvt const * const e) { QState status; switch (e->sig) { case Q_ENTRY_SIG: { printf("door-Closed;"); status = Q_HANDLED(); break; } case Q_EXIT_SIG: { me->doorClosed_history = QHsm_state(&me->super); status = Q_HANDLED(); break; } case Q_INIT_SIG: { status = Q_TRAN(&ToastOven_off); break; } case OPEN_SIG: { status = Q_TRAN(&ToastOven_doorOpen); break; } case TOAST_SIG: { status = Q_TRAN(&ToastOven_toasting); break; } case BAKE_SIG: { status = Q_TRAN(&ToastOven_baking); break; } case OFF_SIG: { status = Q_TRAN(&ToastOven_off); break; } case TERMINATE_SIG: { status = Q_TRAN(&ToastOven_final); break; } default: { status = Q_SUPER(&QHsm_top); break; } } return status; }