コード例 #1
0
/*..........................................................................*/
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);
}
コード例 #2
0
/*..........................................................................*/
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);
}
コード例 #3
0
ファイル: history.c プロジェクト: QuantumLeaps/qpn
/*${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_;
}
コード例 #4
0
/*..........................................................................*/
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;
}