コード例 #1
0
/* @(/2/1/4/1/3) ...........................................................*/
static QState Ship_flying_e(Ship * const me) {
    ScoreEvt *sev;
    me->score = 0U; /* reset the score */
    sev = Q_NEW(ScoreEvt, SCORE_SIG);
    sev->score = me->score;
    QACTIVE_POST(AO_Tunnel, (QEvt *)sev, me);
    return QM_ENTRY(&Ship_flying_s);
}
コード例 #2
0
ファイル: table.cpp プロジェクト: alisonjoe/qpcpp
// ${AOs::Table::SM::active::serving}
QP::QState Table::serving_e(Table * const me) {
    for (uint8_t n = 0U; n < N_PHILO; ++n) { // give permissions to eat...
        if (me->m_isHungry[n]
            && (me->m_fork[LEFT(n)] == FREE)
            && (me->m_fork[n] == FREE))
        {
            me->m_fork[LEFT(n)] = USED;
            me->m_fork[n] = USED;
            QP::QF::PUBLISH(Q_NEW(TableEvt, EAT_SIG, n), me);
            me->m_isHungry[n] = false;
            BSP_displayPhilStat(n, EATING);
        }
    }
    return QM_ENTRY(&serving_s);
}
コード例 #3
0
/* @(/1/0/1/1/2/1/3) .......................................................*/
static QState Pelican_carsGreenPedWait_e(Pelican * const me) {
    BSP_showState(me->super.prio, "carsGreenPedWait");
    return QM_ENTRY(&Pelican_carsGreenPedWait_s);
}
コード例 #4
0
/* @(/1/0/1/1/2/2) .........................................................*/
static QState Pelican_carsYellow_e(Pelican * const me) {
    BSP_showState(me->super.prio, "carsYellow");
    BSP_signalCars(CARS_YELLOW);
    QActive_armX(&me->super, 0U, CARS_YELLOW_TOUT);
    return QM_ENTRY(&Pelican_carsYellow_s);
}
コード例 #5
0
ファイル: calc.c プロジェクト: KnightSch/qpc
/* ${SMs::Calc::SM::on::opEntered} */
static QState Calc_opEntered_e(Calc * const me) {
    BSP_message("opEntered-ENTRY;");
    (void)me; /* avoid compiler warning in case 'me' is not used */
    return QM_ENTRY(&Calc_opEntered_s);
}
コード例 #6
0
/* @(/1/0/1/1/2/1) .........................................................*/
static QState Pelican_carsGreen_e(Pelican * const me) {
    BSP_signalCars(CARS_GREEN);
    QActive_armX(&me->super, 0U, CARS_GREEN_MIN_TOUT);
    return QM_ENTRY(&Pelican_carsGreen_s);
}
コード例 #7
0
/* @(/1/0/0/1) .............................................................*/
static QState Philo_thinking_e(Philo * const me) {
    QActive_armX(&me->super, 0U, THINK_TIME);
    return QM_ENTRY(&Philo_thinking_s);
}
コード例 #8
0
/* @(/1/0/0/3) .............................................................*/
static QState Philo_eating_e(Philo * const me) {
    QActive_armX(&me->super, 0U, EAT_TIME);
    return QM_ENTRY(&Philo_eating_s);
}
コード例 #9
0
QP::QState Philo::eating_e(Philo * const me) {
    me->m_timeEvt.armX(think_time(), 0U);
    return QM_ENTRY(&eating_s);
}
コード例 #10
0
/* @(/1/0/1/2) .............................................................*/
static QState Pelican_offline_e(Pelican * const me) {
    BSP_showState(me->super.prio, "offline");
    QActive_armX(&me->super, 0U, OFF_FLASH_TOUT);
    me->flashCtr = 0U;
    return QM_ENTRY(&Pelican_offline_s);
}
コード例 #11
0
/* @(/1/0/1/1/5/4/4) .......................................................*/
static QState QMsmTst_s211_e(QMsmTst * const me) {
    BSP_display("s211-ENTRY;");
    return QM_ENTRY(&QMsmTst_s211_s);
}
コード例 #12
0
QP::QState Philo::hungry_e(Philo * const me) {
    AO_Table->POST(Q_NEW(TableEvt, HUNGRY_SIG, PHILO_ID(me)), me);
    return QM_ENTRY(&hungry_s);
}
コード例 #13
0
/* @(/1/1/1/1) .............................................................*/
static QState Ped_wait_e(Ped * const me) {
    me->retryCtr = N_ATTEMPTS;
    QActive_armX(&me->super, 0U, WAIT_TOUT);
    return QM_ENTRY(&Ped_wait_s);
}
コード例 #14
0
/* @(/1/1/1/2) .............................................................*/
static QState Ped_off_e(Ped * const me) {
    QActive_armX(&me->super, 0U, OFF_TOUT);
    QACTIVE_POST((QActive *)&AO_Pelican, OFF_SIG);
    return QM_ENTRY(&Ped_off_s);
}
コード例 #15
0
ファイル: calc.c プロジェクト: KnightSch/qpc
/* ${SMs::Calc::SM::on::negated2} */
static QState Calc_negated2_e(Calc * const me) {
    BSP_message("negated2-ENTRY;");
    BSP_negate();
    (void)me; /* avoid compiler warning in case 'me' is not used */
    return QM_ENTRY(&Calc_negated2_s);
}
コード例 #16
0
/* @(/1/0/1/1/3/1) .........................................................*/
static QState Pelican_pedsWalk_e(Pelican * const me) {
    BSP_showState(me->super.prio, "pedsWalk");
    BSP_signalPeds(PEDS_WALK);
    QActive_armX(&me->super, 0U, PEDS_WALK_TOUT);
    return QM_ENTRY(&Pelican_pedsWalk_s);
}
コード例 #17
0
ファイル: philo.c プロジェクト: sesamemucho/qsm_study
/* ${AOs::Philo::SM::thinking} */
static QState Philo_thinking_e(Philo * const me) {
    QTimeEvt_armX(&me->timeEvt, THINK_TIME, 0U);
    return QM_ENTRY(&Philo_thinking_s);
}
コード例 #18
0
/* @(/1/0/1/1/3/2) .........................................................*/
static QState Pelican_pedsFlash_e(Pelican * const me) {
    BSP_showState(me->super.prio, "pedsFlash");
    QActive_armX(&me->super, 0U, PEDS_FLASH_TOUT);
    me->flashCtr = (PEDS_FLASH_NUM * 2U) + 1U;
    return QM_ENTRY(&Pelican_pedsFlash_s);
}
コード例 #19
0
ファイル: philo.c プロジェクト: sesamemucho/qsm_study
/* ${AOs::Philo::SM::hungry} */
static QState Philo_hungry_e(Philo * const me) {
    TableEvt *pe = Q_NEW(TableEvt, HUNGRY_SIG);
    pe->philoNum = PHILO_ID(me);
    QACTIVE_POST(AO_Table, &pe->super, me);
    return QM_ENTRY(&Philo_hungry_s);
}
コード例 #20
0
/* @(/2/4/3/2/2) ...........................................................*/
static QState Mine2_exploding_e(Mine2 * const me) {
    me->exp_ctr = 0U;
    return QM_ENTRY(&Mine2_exploding_s);
}
コード例 #21
0
/* @(/2/1/4/1/4) ...........................................................*/
static QState Ship_exploding_e(Ship * const me) {
    me->exp_ctr = 0U;
    return QM_ENTRY(&Ship_exploding_s);
}
コード例 #22
0
/* @(/1/0/0/2) .............................................................*/
static QState Philo_hungry_e(Philo * const me) {
    QACTIVE_POST((QActive *)&AO_Table, HUNGRY_SIG, me->super.prio);
    return QM_ENTRY(&Philo_hungry_s);
}
コード例 #23
0
ファイル: table.cpp プロジェクト: alisonjoe/qpcpp
// ${AOs::Table::SM::active::paused}
QP::QState Table::paused_e(Table * const me) {
    BSP_displayPaused(1U);
    (void)me; // avoid compiler warning in case 'me' is not used
    return QM_ENTRY(&paused_s);
}
コード例 #24
0
ファイル: philo.c プロジェクト: sesamemucho/qsm_study
/* ${AOs::Philo::SM::eating} */
static QState Philo_eating_e(Philo * const me) {
    QTimeEvt_armX(&me->timeEvt, EAT_TIME, 0U);
    return QM_ENTRY(&Philo_eating_s);
}
コード例 #25
0
ファイル: calc.c プロジェクト: KnightSch/qpc
/* ${SMs::Calc::SM::final} */
static QState Calc_final_e(Calc * const me) {
    BSP_message("final-ENTRY;");
    BSP_exit();
    (void)me; /* avoid compiler warning in case 'me' is not used */
    return QM_ENTRY(&Calc_final_s);
}
コード例 #26
0
QP::QState Mine1::exploding_e(Mine1 * const me) {
    me->m_exp_ctr = 0U;
    return QM_ENTRY(&exploding_s);
}
コード例 #27
0
/* @(/1/0/1/1) .............................................................*/
static QState Pelican_operational_e(Pelican * const me) {
    BSP_signalCars(CARS_RED);
    BSP_signalPeds(PEDS_DONT_WALK);
    return QM_ENTRY(&Pelican_operational_s);
}