//${Comp::Philo::SM::thinking} ............................................... Q_STATE_DEF(Philo, thinking) { QP::QState status_; switch (e->sig) { //${Comp::Philo::SM::thinking} case Q_ENTRY_SIG: { m_timeEvt.armX(think_time(), 0U); status_ = Q_RET_HANDLED; break; } //${Comp::Philo::SM::thinking} case Q_EXIT_SIG: { (void)m_timeEvt.disarm(); status_ = Q_RET_HANDLED; break; } //${Comp::Philo::SM::thinking::TIMEOUT} case TIMEOUT_SIG: { status_ = tran(&hungry); break; } //${Comp::Philo::SM::thinking::TEST} case TEST_SIG: { status_ = Q_RET_HANDLED; break; } default: { status_ = super(&top); break; } } return status_; }
// @(/3/0/2/1) ............................................................... QP::QState Philo::thinking(Philo * const me, QP::QEvt const * const e) { QP::QState status_; switch (e->sig) { // @(/3/0/2/1) case Q_ENTRY_SIG: { me->m_timeEvt.armX(think_time()); status_ = Q_HANDLED(); break; } // @(/3/0/2/1) case Q_EXIT_SIG: { (void)me->m_timeEvt.disarm(); status_ = Q_HANDLED(); break; } // @(/3/0/2/1/0) case TIMEOUT_SIG: { status_ = Q_TRAN(&Philo::hungry); break; } // @(/3/0/2/1/1) case EAT_SIG: // intentionally fall through case DONE_SIG: { /* EAT or 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_; }
//${AOs::Philo::SM::thinking} ................................................ Q_STATE_DEF(Philo, thinking) { QP::QState status_; switch (e->sig) { //${AOs::Philo::SM::thinking} case Q_ENTRY_SIG: { m_timeEvt.armX(think_time(), 0U); status_ = Q_RET_HANDLED; break; } //${AOs::Philo::SM::thinking} case Q_EXIT_SIG: { (void)m_timeEvt.disarm(); status_ = Q_RET_HANDLED; break; } //${AOs::Philo::SM::thinking::TIMEOUT} case TIMEOUT_SIG: { status_ = tran(&hungry); break; } //${AOs::Philo::SM::thinking::EAT, DONE} case EAT_SIG: // intentionally fall through case DONE_SIG: { // EAT or DONE must be for other Philos than this one Q_ASSERT(Q_EVT_CAST(TableEvt)->philoNum != PHILO_ID(this)); status_ = Q_RET_HANDLED; break; } //${AOs::Philo::SM::thinking::TEST} case TEST_SIG: { status_ = Q_RET_HANDLED; break; } default: { status_ = super(&top); break; } } return status_; }
QP::QState Philo::eating_e(Philo * const me) { me->m_timeEvt.armX(think_time(), 0U); return QM_ENTRY(&eating_s); }