Deleted.

Committer:
QL
Date:
Mon Sep 26 02:20:21 2011 +0000
Revision:
2:27716f570c3d
Parent:
1:3fe0c7f27d97
Updated for QP 4.2.04 and for QM 2.0.00

Who changed what in which revision?

UserRevisionLine numberNew contents of line
QL 2:27716f570c3d 1 //////////////////////////////////////////////////////////////////////////////
QL 2:27716f570c3d 2 // Model: pelican.qm
QL 2:27716f570c3d 3 // File: ./ped.cpp
QL 2:27716f570c3d 4 //
QL 2:27716f570c3d 5 // This file has been generated automatically by QP Modeler (QM).
QL 2:27716f570c3d 6 // DO NOT EDIT THIS FILE MANUALLY.
QL 2:27716f570c3d 7 //
QL 2:27716f570c3d 8 // Please visit www.state-machine.com/qm for more information.
QL 2:27716f570c3d 9 //////////////////////////////////////////////////////////////////////////////
QL 2:27716f570c3d 10 #include "qp_port.h"
QL 2:27716f570c3d 11 #include "bsp.h"
QL 2:27716f570c3d 12 #include "pelican.h"
QL 2:27716f570c3d 13
QL 2:27716f570c3d 14 Q_DEFINE_THIS_FILE
QL 2:27716f570c3d 15
QL 2:27716f570c3d 16 enum PedTimeouts { // various timeouts in ticks
QL 2:27716f570c3d 17 N_ATTEMPTS = 10, // number of PED_WAITING attempts
QL 2:27716f570c3d 18 WAIT_TOUT = BSP_TICKS_PER_SEC * 3, // wait between posting PED_WAITING
QL 2:27716f570c3d 19 OFF_TOUT = BSP_TICKS_PER_SEC * 8 // wait time after posting OFF_SIG
QL 2:27716f570c3d 20 };
QL 2:27716f570c3d 21
QL 2:27716f570c3d 22 // Ped class -----------------------------------------------------------------
QL 2:27716f570c3d 23 // $(components::Ped) ........................................................
QL 2:27716f570c3d 24 /// Ped (Pedestrian) active object.
QL 2:27716f570c3d 25 ///
QL 2:27716f570c3d 26 /// NOTE: The mbed borad does not provide a push button (at least not out of the box) to provide the PEDS_WAITING event to the system. Instead, to be able to run this example on a bare-bones mbed board, the Pedestrian is *simulated* as the Ped active object.
QL 2:27716f570c3d 27 class Ped : public QActive {
QL 2:27716f570c3d 28 private:
QL 2:27716f570c3d 29 QTimeEvt m_timeout;
QL 2:27716f570c3d 30 uint8_t m_retryCtr;
QL 2:27716f570c3d 31
QL 2:27716f570c3d 32 public:
QL 2:27716f570c3d 33 Ped();
QL 2:27716f570c3d 34
QL 2:27716f570c3d 35 protected:
QL 2:27716f570c3d 36 static QState initial(Ped *me, QEvent const *e);
QL 2:27716f570c3d 37 static QState wait(Ped *me, QEvent const *e);
QL 2:27716f570c3d 38 static QState off(Ped *me, QEvent const *e);
QL 2:27716f570c3d 39 };
QL 2:27716f570c3d 40
QL 2:27716f570c3d 41 // Local objects -------------------------------------------------------------
QL 2:27716f570c3d 42 static Ped l_Ped; // the single instance of Ped active object
QL 2:27716f570c3d 43
QL 2:27716f570c3d 44 // Global objects ------------------------------------------------------------
QL 2:27716f570c3d 45 QActive * const AO_Ped = &l_Ped; // the opaque pointer
QL 2:27716f570c3d 46
QL 2:27716f570c3d 47 // Ped class definition ------------------------------------------------------
QL 2:27716f570c3d 48 // $(components::Ped) ........................................................
QL 2:27716f570c3d 49 // $(components::Ped::Ped) ...................................................
QL 2:27716f570c3d 50 Ped::Ped() : QActive((QStateHandler)&Ped::initial), m_timeout(TIMEOUT_SIG) {
QL 2:27716f570c3d 51 }
QL 2:27716f570c3d 52 // $(components::Ped::Statechart) ............................................
QL 2:27716f570c3d 53 // @(/1/1/3/0)
QL 2:27716f570c3d 54 QState Ped::initial(Ped *me, QEvent const *e) {
QL 2:27716f570c3d 55 QS_OBJ_DICTIONARY(&l_Ped);
QL 2:27716f570c3d 56 QS_OBJ_DICTIONARY(&l_Ped.m_timeout);
QL 2:27716f570c3d 57
QL 2:27716f570c3d 58 QS_FUN_DICTIONARY(&Ped::initial);
QL 2:27716f570c3d 59 QS_FUN_DICTIONARY(&Ped::wait);
QL 2:27716f570c3d 60 QS_FUN_DICTIONARY(&Ped::off);
QL 2:27716f570c3d 61
QL 2:27716f570c3d 62 QS_SIG_DICTIONARY(TIMEOUT_SIG, &l_Ped); // just for Ped
QL 2:27716f570c3d 63 return Q_TRAN(&Ped::wait);
QL 2:27716f570c3d 64 }
QL 2:27716f570c3d 65 // $(components::Ped::Statechart::wait) ......................................
QL 2:27716f570c3d 66 QState Ped::wait(Ped *me, QEvent const *e) {
QL 2:27716f570c3d 67 switch (e->sig) {
QL 2:27716f570c3d 68 // @(/1/1/3/1)
QL 2:27716f570c3d 69 case Q_ENTRY_SIG: {
QL 2:27716f570c3d 70 me->m_retryCtr = N_ATTEMPTS;
QL 2:27716f570c3d 71 me->m_timeout.postEvery(me, WAIT_TOUT);
QL 2:27716f570c3d 72 return Q_HANDLED();
QL 2:27716f570c3d 73 }
QL 2:27716f570c3d 74 // @(/1/1/3/1)
QL 2:27716f570c3d 75 case Q_EXIT_SIG: {
QL 2:27716f570c3d 76 me->m_timeout.disarm();
QL 2:27716f570c3d 77 return Q_HANDLED();
QL 2:27716f570c3d 78 }
QL 2:27716f570c3d 79 // @(/1/1/3/1/0)
QL 2:27716f570c3d 80 case TIMEOUT_SIG: {
QL 2:27716f570c3d 81 --me->m_retryCtr;
QL 2:27716f570c3d 82 // @(/1/1/3/1/0/1)
QL 2:27716f570c3d 83 if (me->m_retryCtr != 0) {
QL 2:27716f570c3d 84 QF::PUBLISH(Q_NEW(QEvent, PEDS_WAITING_SIG), me);
QL 2:27716f570c3d 85 return Q_HANDLED();
QL 2:27716f570c3d 86 }
QL 2:27716f570c3d 87 // @(/1/1/3/1/0/0)
QL 2:27716f570c3d 88 else {
QL 2:27716f570c3d 89 return Q_TRAN(&Ped::off);
QL 2:27716f570c3d 90 }
QL 2:27716f570c3d 91 }
QL 2:27716f570c3d 92 }
QL 2:27716f570c3d 93 return Q_SUPER(&QHsm::top);
QL 2:27716f570c3d 94 }
QL 2:27716f570c3d 95 // $(components::Ped::Statechart::off) .......................................
QL 2:27716f570c3d 96 QState Ped::off(Ped *me, QEvent const *e) {
QL 2:27716f570c3d 97 switch (e->sig) {
QL 2:27716f570c3d 98 // @(/1/1/3/2)
QL 2:27716f570c3d 99 case Q_ENTRY_SIG: {
QL 2:27716f570c3d 100 me->m_timeout.postEvery(me, OFF_TOUT);
QL 2:27716f570c3d 101 AO_Pelican->POST(Q_NEW(QEvent, OFF_SIG), me);
QL 2:27716f570c3d 102 return Q_HANDLED();
QL 2:27716f570c3d 103 }
QL 2:27716f570c3d 104 // @(/1/1/3/2)
QL 2:27716f570c3d 105 case Q_EXIT_SIG: {
QL 2:27716f570c3d 106 me->m_timeout.disarm();
QL 2:27716f570c3d 107 return Q_HANDLED();
QL 2:27716f570c3d 108 }
QL 2:27716f570c3d 109 // @(/1/1/3/2/0)
QL 2:27716f570c3d 110 case TIMEOUT_SIG: {
QL 2:27716f570c3d 111 AO_Pelican->POST(Q_NEW(QEvent, ON_SIG), me);
QL 2:27716f570c3d 112 return Q_TRAN(&Ped::wait);
QL 2:27716f570c3d 113 }
QL 2:27716f570c3d 114 }
QL 2:27716f570c3d 115 return Q_SUPER(&QHsm::top);
QL 2:27716f570c3d 116 }