/*${components::aoWeight::SM::aboveTreshold} ...............................*/
static QState aoWeight_aboveTreshold(aoWeight * const me) {
    QState status_;
    switch (Q_SIG(me)) {
        /* ${components::aoWeight::SM::aboveTreshold} */
        case Q_ENTRY_SIG: {
            BSP_println("Weight above threshold.");
            status_ = Q_HANDLED();
            break;
        }
        /* ${components::aoWeight::SM::aboveTreshold::REFRESH} */
        case REFRESH_SIG: {
            /* ${components::aoWeight::SM::aboveTreshold::REFRESH::[Weight>TargetDose]} */
            if (Weight > TargetDose) {
                QActive_postISR((QActive *)&AO_Grinder, DOSE_REACHED_SIG, 0);
                status_ = Q_TRAN(&aoWeight_aboveDose);
            }
            /* ${components::aoWeight::SM::aboveTreshold::REFRESH::[<threshold]} */
            else if (Weight < (TargetDose + SCALE_TARGET_THRESHOLD)) {
                status_ = Q_TRAN(&aoWeight_positive);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
Пример #2
0
/* @(/1/6/0/1/2) ...........................................................*/
static QState QTTS_idle(QTTS * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/6/0/1/2/0) */
        case TTS_READMSG_SIG: {
            status_ = Q_TRAN(&QTTS_busy);
            break;
        }
        /* @(/1/6/0/1/2/1) */
        case ACC_OFF_SIG: {
            /* @(/1/6/0/1/2/1/0) */
            if (1) {
                status_ = Q_TRAN(&QTTS_sleep);
            }
            /* @(/1/6/0/1/2/1/1) */
            else if (0) {
                status_ = Q_HANDLED();
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QTTS_normal);
            break;
        }
    }
    return status_;
}
/*${components::aoWeight::SM::aboveDose} ...................................*/
static QState aoWeight_aboveDose(aoWeight * const me) {
    QState status_;
    switch (Q_SIG(me)) {
        /* ${components::aoWeight::SM::aboveDose} */
        case Q_ENTRY_SIG: {
            BSP_println("Weight above dose.");
            status_ = Q_HANDLED();
            break;
        }
        /* ${components::aoWeight::SM::aboveDose::REFRESH} */
        case REFRESH_SIG: {
            /* ${components::aoWeight::SM::aboveDose::REFRESH::[Weight<TargetDose]} */
            if (Weight < TargetDose) {
                status_ = Q_TRAN(&aoWeight_aboveTreshold);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
/*${components::aoWeight::SM::aroundZero} ..................................*/
static QState aoWeight_aroundZero(aoWeight * const me) {
    QState status_;
    switch (Q_SIG(me)) {
        /* ${components::aoWeight::SM::aroundZero} */
        case Q_ENTRY_SIG: {
            BSP_println("Weight around zero.");
            status_ = Q_HANDLED();
            break;
        }
        /* ${components::aoWeight::SM::aroundZero::REFRESH} */
        case REFRESH_SIG: {
            /* ${components::aoWeight::SM::aroundZero::REFRESH::[<zero]} */
            if (Weight < SCALE_NEGATIVE_THRESHOLD) {
                status_ = Q_TRAN(&aoWeight_negative);
            }
            /* ${components::aoWeight::SM::aroundZero::REFRESH::[>zero]} */
            else if (Weight > SCALE_ZERO_THRESHOLD) {
                status_ = Q_TRAN(&aoWeight_positive);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
/*${components::aoWeight::SM::positive} ....................................*/
static QState aoWeight_positive(aoWeight * const me) {
    QState status_;
    switch (Q_SIG(me)) {
        /* ${components::aoWeight::SM::positive} */
        case Q_ENTRY_SIG: {
            BSP_println("Weight positive.");
            status_ = Q_HANDLED();
            break;
        }
        /* ${components::aoWeight::SM::positive::REFRESH} */
        case REFRESH_SIG: {
            /* ${components::aoWeight::SM::positive::REFRESH::[>threshold]} */
            if (Weight > (TargetDose + SCALE_TARGET_THRESHOLD)) {
                QActive_postISR((QActive *)&AO_Grinder, THRESHOLD_REACHED_SIG, 0);
                status_ = Q_TRAN(&aoWeight_aboveTreshold);
            }
            /* ${components::aoWeight::SM::positive::REFRESH::[<zero]} */
            else if (Weight < SCALE_ZERO_THRESHOLD) {
                status_ = Q_TRAN(&aoWeight_aroundZero);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
/*${components::aoWeight::SM::negative} ....................................*/
static QState aoWeight_negative(aoWeight * const me) {
    QState status_;
    switch (Q_SIG(me)) {
        /* ${components::aoWeight::SM::negative} */
        case Q_ENTRY_SIG: {
            BSP_println("Weight negative.");
            QActive_postISR((QActive *)&AO_Grinder, NEGATIVE_REACHED_SIG, 0);
            status_ = Q_HANDLED();
            break;
        }
        /* ${components::aoWeight::SM::negative::REFRESH} */
        case REFRESH_SIG: {
            /* ${components::aoWeight::SM::negative::REFRESH::[>negative]} */
            if (Weight > SCALE_NEGATIVE_THRESHOLD) {
                status_ = Q_TRAN(&aoWeight_aroundZero);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
Пример #7
0
// @(/3/0/2/2) ...............................................................
QP::QState Philo::hungry(Philo * const me, QP::QEvt const * const e) {
    QP::QState status_;
    switch (e->sig) {
        // @(/3/0/2/2)
        case Q_ENTRY_SIG: {
            AO_Table->POST(Q_NEW(TableEvt, HUNGRY_SIG, PHILO_ID(me)), me);
            status_ = Q_HANDLED();
            break;
        }
        // @(/3/0/2/2/0)
        case EAT_SIG: {
            // @(/3/0/2/2/0/0)
            if (Q_EVT_CAST(TableEvt)->philoNum == PHILO_ID(me)) {
                status_ = Q_TRAN(&Philo::eating);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        // @(/3/0/2/2/1)
        case DONE_SIG: {
            /* DONE must be for other Philos than this one */
            Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(me));
            status_ = Q_HANDLED();
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm::top);
            break;
        }
    }
    return status_;
}
Пример #8
0
/*..........................................................................*/
static QState ModIo2Mgr_initial(ModIo2Mgr *me, QEvent const *e) {
    (void)e;        /* suppress the compiler warning about unused parameter */

    QActive_subscribe((QActive *)me, ENABLE_RELAY_SIG);
    QActive_subscribe((QActive *)me, DISABLE_RELAY_SIG);
    QActive_subscribe((QActive *)me, TERMINATE_SIG);

    QS_OBJ_DICTIONARY(&l_modIo2Mgr);
    QS_FUN_DICTIONARY(&QHsm_top);
    QS_FUN_DICTIONARY(&ModIo2Mgr_initial);
    QS_FUN_DICTIONARY(&ModIo2Mgr_running);

    QS_SIG_DICTIONARY(ENABLE_RELAY_SIG,  0);
    QS_SIG_DICTIONARY(DISABLE_RELAY_SIG, 0);
    QS_SIG_DICTIONARY(TERMINATE_SIG,     0);

    if (ModIO2_init() == Error)
    {
      LCDPutStr("Err MODIO2 init", 110, 5, LARGE, RED, WHITE);
      return Q_UNHANDLED();
    }
    else
    {
      return Q_TRAN(&ModIo2Mgr_running);
    }
}
/*..........................................................................*/
QState Calc_begin(Calc * const me, QEvt const * const e) {
    QState status;
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            BSP_message("begin-ENTRY;");
            status = Q_HANDLED();
            break;
        }
        case Q_EXIT_SIG: {
            BSP_message("begin-EXIT;");
            status = Q_HANDLED();
            break;
        }
        case OPER_SIG: {
            if (((CalcEvt const *)e)->key_code == KEY_MINUS) {
                status = Q_TRAN(&Calc_negated1);
            }
            else {
                status = Q_UNHANDLED();
            }
            break;
        }
        default: {
            status = Q_SUPER(&Calc_ready);
            break;
        }
    }
    return status;
}
Пример #10
0
/* @(/1/0/1/1) .............................................................*/
static QState QHsmTst_s(QHsmTst * const me) {
    QState status_;
    switch (Q_SIG(me)) {
        /* @(/1/0/1/1) */
        case Q_ENTRY_SIG: {
            BSP_display("s-ENTRY;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1) */
        case Q_EXIT_SIG: {
            BSP_display("s-EXIT;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1/0) */
        case Q_INIT_SIG: {
            BSP_display("s-INIT;");
            status_ = Q_TRAN(&QHsmTst_s11);
            break;
        }
        /* @(/1/0/1/1/1) */
        case I_SIG: {
            /* @(/1/0/1/1/1/0) */
            if (me->foo) {
                me->foo = 0U;
                BSP_display("s-I;");
                status_ = Q_HANDLED();
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        /* @(/1/0/1/1/2) */
        case E_SIG: {
            BSP_display("s-E;");
            status_ = Q_TRAN(&QHsmTst_s11);
            break;
        }
        /* @(/1/0/1/1/3) */
        case TERMINATE_SIG: {
            BSP_exit();
            status_ = Q_HANDLED();
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
Пример #11
0
/* @(/1/0/1/1/5) ...........................................................*/
static QState QHsmTst_s2(QHsmTst * const me) {
    QState status_;
    switch (Q_SIG(me)) {
        /* @(/1/0/1/1/5) */
        case Q_ENTRY_SIG: {
            BSP_display("s2-ENTRY;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1/5) */
        case Q_EXIT_SIG: {
            BSP_display("s2-EXIT;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1/5/0) */
        case Q_INIT_SIG: {
            BSP_display("s2-INIT;");
            status_ = Q_TRAN(&QHsmTst_s211);
            break;
        }
        /* @(/1/0/1/1/5/1) */
        case I_SIG: {
            /* @(/1/0/1/1/5/1/0) */
            if (!me->foo) {
                me->foo = 1U;
                BSP_display("s2-I;");
                status_ = Q_HANDLED();
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        /* @(/1/0/1/1/5/2) */
        case F_SIG: {
            BSP_display("s2-F;");
            status_ = Q_TRAN(&QHsmTst_s11);
            break;
        }
        /* @(/1/0/1/1/5/3) */
        case C_SIG: {
            BSP_display("s2-C;");
            status_ = Q_TRAN(&QHsmTst_s1);
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsmTst_s);
            break;
        }
    }
    return status_;
}
Пример #12
0
/*${HSMs::QHsmTst::SM::s} ..................................................*/
static QState QHsmTst_s(QHsmTst * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* ${HSMs::QHsmTst::SM::s} */
        case Q_ENTRY_SIG: {
            BSP_display("s-ENTRY;");
            status_ = Q_HANDLED();
            break;
        }
        /* ${HSMs::QHsmTst::SM::s} */
        case Q_EXIT_SIG: {
            BSP_display("s-EXIT;");
            status_ = Q_HANDLED();
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::initial} */
        case Q_INIT_SIG: {
            BSP_display("s-INIT;");
            status_ = Q_TRAN(&QHsmTst_s11);
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::I} */
        case I_SIG: {
            /* ${HSMs::QHsmTst::SM::s::I::[me->foo]} */
            if (me->foo) {
                me->foo = 0U;
                BSP_display("s-I;");
                status_ = Q_HANDLED();
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::E} */
        case E_SIG: {
            BSP_display("s-E;");
            status_ = Q_TRAN(&QHsmTst_s11);
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::TERMINATE} */
        case TERMINATE_SIG: {
            BSP_exit();
            status_ = Q_HANDLED();
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
Пример #13
0
/*${HSMs::QHsmTst::SM::s::s2} ..............................................*/
static QState QHsmTst_s2(QHsmTst * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* ${HSMs::QHsmTst::SM::s::s2} */
        case Q_ENTRY_SIG: {
            BSP_display("s2-ENTRY;");
            status_ = Q_HANDLED();
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s2} */
        case Q_EXIT_SIG: {
            BSP_display("s2-EXIT;");
            status_ = Q_HANDLED();
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s2::initial} */
        case Q_INIT_SIG: {
            BSP_display("s2-INIT;");
            status_ = Q_TRAN(&QHsmTst_s211);
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s2::I} */
        case I_SIG: {
            /* ${HSMs::QHsmTst::SM::s::s2::I::[!me->foo]} */
            if (!me->foo) {
                me->foo = 1U;
                BSP_display("s2-I;");
                status_ = Q_HANDLED();
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s2::F} */
        case F_SIG: {
            BSP_display("s2-F;");
            status_ = Q_TRAN(&QHsmTst_s11);
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s2::C} */
        case C_SIG: {
            BSP_display("s2-C;");
            status_ = Q_TRAN(&QHsmTst_s1);
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsmTst_s);
            break;
        }
    }
    return status_;
}
Пример #14
0
/* @(/1/0/1/1/4/7) .........................................................*/
static QState QHsmTst_s11(QHsmTst * const me) {
    QState status_;
    switch (Q_SIG(me)) {
        /* @(/1/0/1/1/4/7) */
        case Q_ENTRY_SIG: {
            BSP_display("s11-ENTRY;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1/4/7) */
        case Q_EXIT_SIG: {
            BSP_display("s11-EXIT;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1/4/7/0) */
        case H_SIG: {
            BSP_display("s11-H;");
            status_ = Q_TRAN(&QHsmTst_s);
            break;
        }
        /* @(/1/0/1/1/4/7/1) */
        case D_SIG: {
            /* @(/1/0/1/1/4/7/1/0) */
            if (me->foo) {
                me->foo = 0U;
                BSP_display("s11-D;");
                status_ = Q_TRAN(&QHsmTst_s1);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        /* @(/1/0/1/1/4/7/2) */
        case G_SIG: {
            BSP_display("s11-G;");
            status_ = Q_TRAN(&QHsmTst_s211);
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsmTst_s1);
            break;
        }
    }
    return status_;
}
Пример #15
0
/*${HSMs::QHsmTst::SM::s::s1::s11} .........................................*/
static QState QHsmTst_s11(QHsmTst * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* ${HSMs::QHsmTst::SM::s::s1::s11} */
        case Q_ENTRY_SIG: {
            BSP_display("s11-ENTRY;");
            status_ = Q_HANDLED();
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s1::s11} */
        case Q_EXIT_SIG: {
            BSP_display("s11-EXIT;");
            status_ = Q_HANDLED();
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s1::s11::H} */
        case H_SIG: {
            BSP_display("s11-H;");
            status_ = Q_TRAN(&QHsmTst_s);
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s1::s11::D} */
        case D_SIG: {
            /* ${HSMs::QHsmTst::SM::s::s1::s11::D::[me->foo]} */
            if (me->foo) {
                me->foo = 0U;
                BSP_display("s11-D;");
                status_ = Q_TRAN(&QHsmTst_s1);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        /* ${HSMs::QHsmTst::SM::s::s1::s11::G} */
        case G_SIG: {
            BSP_display("s11-G;");
            status_ = Q_TRAN(&QHsmTst_s211);
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsmTst_s1);
            break;
        }
    }
    return status_;
}
Пример #16
0
/* @(/1/0/1/1/4) ...........................................................*/
static QState QHsmTst_s1(QHsmTst * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/0/1/1/4) */
        case Q_ENTRY_SIG: {
            BSP_display("s1-ENTRY;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1/4) */
        case Q_EXIT_SIG: {
            BSP_display("s1-EXIT;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1/4/0) */
        case Q_INIT_SIG: {
            BSP_display("s1-INIT;");
            status_ = Q_TRAN(&QHsmTst_s11);
            break;
        }
        /* @(/1/0/1/1/4/1) */
        case I_SIG: {
            BSP_display("s1-I;");
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/0/1/1/4/2) */
        case D_SIG: {
            /* @(/1/0/1/1/4/2/0) */
            if (!me->foo) {
                me->foo = 1U;
                BSP_display("s1-D;");
                status_ = Q_TRAN(&QHsmTst_s);
            }
            else {
                status_ = Q_UNHANDLED();
            }
            break;
        }
        /* @(/1/0/1/1/4/3) */
        case A_SIG: {
            BSP_display("s1-A;");
            status_ = Q_TRAN(&QHsmTst_s1);
            break;
        }
        /* @(/1/0/1/1/4/4) */
        case B_SIG: {
            BSP_display("s1-B;");
            status_ = Q_TRAN(&QHsmTst_s11);
            break;
        }
        /* @(/1/0/1/1/4/5) */
        case F_SIG: {
            BSP_display("s1-F;");
            status_ = Q_TRAN(&QHsmTst_s211);
            break;
        }
        /* @(/1/0/1/1/4/6) */
        case C_SIG: {
            BSP_display("s1-C;");
            status_ = Q_TRAN(&QHsmTst_s2);
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsmTst_s);
            break;
        }
    }
    return status_;
}