qpc/doxygen/snippets/qf_state.c

21 lines
600 B
C
Raw Normal View History

2013-09-23 14:34:35 -04:00
QState Philo_eating(Philo * const me, QEvt const * const e) {
2012-08-14 18:07:04 -04:00
TableEvt *pe;
switch (e->sig) {
case Q_ENTRY_SIG: {
2013-09-23 14:34:35 -04:00
QTimeEvt_armX(&me->timeEvt, EAT_TIME, 0U); /* one shot */
2012-08-14 18:07:04 -04:00
return Q_HANDLED();
}
case Q_EXIT_SIG: {
2013-09-23 14:34:35 -04:00
QTimeEvt_disarm(&me->timeEvt);
2012-08-14 18:07:04 -04:00
pe = Q_NEW(TableEvt, DONE_SIG);
pe->philNum = me->num;
2013-09-23 14:34:35 -04:00
QF_PUBLISH((QEvt *)pe, me);
2012-08-14 18:07:04 -04:00
return Q_HANDLED();
}
2013-09-23 14:34:35 -04:00
case TIMEOUT_SIG: {
return Q_TRAN(&Philosopher_thinking);
}
2012-08-14 18:07:04 -04:00
}
return Q_SUPER(&QHsm_top);
}