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 0:9601fa787c8b 1 //////////////////////////////////////////////////////////////////////////////
QL 0:9601fa787c8b 2 // Model: pelican.qm
QL 0:9601fa787c8b 3 // File: ./pelican.cpp
QL 0:9601fa787c8b 4 //
QL 0:9601fa787c8b 5 // This file has been generated automatically by QP Modeler (QM).
QL 0:9601fa787c8b 6 // DO NOT EDIT THIS FILE MANUALLY.
QL 0:9601fa787c8b 7 //
QL 0:9601fa787c8b 8 // Please visit www.state-machine.com/qm for more information.
QL 0:9601fa787c8b 9 //////////////////////////////////////////////////////////////////////////////
QL 0:9601fa787c8b 10 #include "qp_port.h"
QL 0:9601fa787c8b 11 #include "bsp.h"
QL 0:9601fa787c8b 12 #include "pelican.h"
QL 0:9601fa787c8b 13
QL 0:9601fa787c8b 14 Q_DEFINE_THIS_FILE
QL 0:9601fa787c8b 15
QL 0:9601fa787c8b 16 enum PelicanTimeouts { // various timeouts in ticks
QL 0:9601fa787c8b 17 CARS_GREEN_MIN_TOUT = BSP_TICKS_PER_SEC * 8, // min green for cars
QL 0:9601fa787c8b 18 CARS_YELLOW_TOUT = BSP_TICKS_PER_SEC * 3, // yellow for cars
QL 0:9601fa787c8b 19 PEDS_WALK_TOUT = BSP_TICKS_PER_SEC * 3, // walking time for peds
QL 0:9601fa787c8b 20 PEDS_FLASH_TOUT = BSP_TICKS_PER_SEC / 5, // flashing timeout for peds
QL 0:9601fa787c8b 21 PEDS_FLASH_NUM = 5*2, // number of flashes for peds
QL 0:9601fa787c8b 22 OFF_FLASH_TOUT = BSP_TICKS_PER_SEC / 2 // flashing timeout when off
QL 0:9601fa787c8b 23 };
QL 0:9601fa787c8b 24
QL 0:9601fa787c8b 25 // Pelican class -------------------------------------------------------------
QL 0:9601fa787c8b 26 // $(components::Pelican) ....................................................
QL 1:3fe0c7f27d97 27 /// PEdestrian LIght CONtrolled (PELICAN) crossing
QL 0:9601fa787c8b 28 class Pelican : public QActive {
QL 0:9601fa787c8b 29 private:
QL 0:9601fa787c8b 30 QTimeEvt m_timeout;
QL 0:9601fa787c8b 31 uint8_t m_flashCtr;
QL 0:9601fa787c8b 32
QL 0:9601fa787c8b 33 public:
QL 1:3fe0c7f27d97 34 /// constructor
QL 0:9601fa787c8b 35 Pelican() : QActive((QStateHandler)&Pelican::initial), m_timeout(TIMEOUT_SIG) {
QL 0:9601fa787c8b 36 }
QL 0:9601fa787c8b 37
QL 0:9601fa787c8b 38 protected:
QL 0:9601fa787c8b 39 static QState initial(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 40 static QState operational(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 41 static QState carsEnabled(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 42 static QState carsGreen(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 43 static QState carsGreenNoPed(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 44 static QState carsGreenInt(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 45 static QState carsGreenPedWait(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 46 static QState carsYellow(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 47 static QState pedsEnabled(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 48 static QState pedsWalk(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 49 static QState pedsFlash(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 50 static QState offline(Pelican *me, QEvent const *e);
QL 0:9601fa787c8b 51 };
QL 0:9601fa787c8b 52
QL 0:9601fa787c8b 53 // Local objects -------------------------------------------------------------
QL 0:9601fa787c8b 54 static Pelican l_Pelican; // the single instance of Pelican active object
QL 0:9601fa787c8b 55
QL 0:9601fa787c8b 56 // Global objects ------------------------------------------------------------
QL 0:9601fa787c8b 57 QActive * const AO_Pelican = &l_Pelican; // the opaque pointer
QL 0:9601fa787c8b 58
QL 0:9601fa787c8b 59 // Pelican class definition --------------------------------------------------
QL 0:9601fa787c8b 60 // $(components::Pelican) ....................................................
QL 0:9601fa787c8b 61
QL 0:9601fa787c8b 62 // $(components::Pelican::Statechart) ........................................
QL 0:9601fa787c8b 63 // @(/1/0/3/0)
QL 0:9601fa787c8b 64 QState Pelican::initial(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 65 me->subscribe(PEDS_WAITING_SIG);
QL 0:9601fa787c8b 66
QL 0:9601fa787c8b 67 QS_OBJ_DICTIONARY(&l_Pelican);
QL 1:3fe0c7f27d97 68 QS_OBJ_DICTIONARY(&l_Pelican.m_timeout);
QL 0:9601fa787c8b 69
QL 0:9601fa787c8b 70 QS_FUN_DICTIONARY(&QHsm::top);
QL 0:9601fa787c8b 71 QS_FUN_DICTIONARY(&Pelican::initial);
QL 0:9601fa787c8b 72 QS_FUN_DICTIONARY(&Pelican::offline);
QL 0:9601fa787c8b 73 QS_FUN_DICTIONARY(&Pelican::operational);
QL 0:9601fa787c8b 74 QS_FUN_DICTIONARY(&Pelican::carsEnabled);
QL 0:9601fa787c8b 75 QS_FUN_DICTIONARY(&Pelican::carsGreen);
QL 0:9601fa787c8b 76 QS_FUN_DICTIONARY(&Pelican::carsGreenNoPed);
QL 0:9601fa787c8b 77 QS_FUN_DICTIONARY(&Pelican::carsGreenPedWait);
QL 0:9601fa787c8b 78 QS_FUN_DICTIONARY(&Pelican::carsGreenInt);
QL 0:9601fa787c8b 79 QS_FUN_DICTIONARY(&Pelican::carsYellow);
QL 0:9601fa787c8b 80 QS_FUN_DICTIONARY(&Pelican::pedsEnabled);
QL 0:9601fa787c8b 81 QS_FUN_DICTIONARY(&Pelican::pedsWalk);
QL 0:9601fa787c8b 82 QS_FUN_DICTIONARY(&Pelican::pedsFlash);
QL 0:9601fa787c8b 83
QL 0:9601fa787c8b 84 QS_SIG_DICTIONARY(PEDS_WAITING_SIG, 0); // global signals
QL 0:9601fa787c8b 85 QS_SIG_DICTIONARY(ON_SIG, 0);
QL 0:9601fa787c8b 86 QS_SIG_DICTIONARY(OFF_SIG, 0);
QL 0:9601fa787c8b 87
QL 0:9601fa787c8b 88 QS_SIG_DICTIONARY(TIMEOUT_SIG, &l_Pelican); // just for Pelican
QL 0:9601fa787c8b 89 return Q_TRAN(&Pelican::operational);
QL 0:9601fa787c8b 90 }
QL 0:9601fa787c8b 91 // $(components::Pelican::Statechart::operational) ...........................
QL 0:9601fa787c8b 92 QState Pelican::operational(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 93 switch (e->sig) {
QL 0:9601fa787c8b 94 // @(/1/0/3/1)
QL 0:9601fa787c8b 95 case Q_ENTRY_SIG: {
QL 0:9601fa787c8b 96 BSP_signalCars(CARS_RED);
QL 0:9601fa787c8b 97 BSP_signalPeds(PEDS_DONT_WALK);
QL 0:9601fa787c8b 98 return Q_HANDLED();
QL 0:9601fa787c8b 99 }
QL 0:9601fa787c8b 100 // @(/1/0/3/1/0)
QL 0:9601fa787c8b 101 case Q_INIT_SIG: {
QL 0:9601fa787c8b 102 return Q_TRAN(&Pelican::carsEnabled);
QL 0:9601fa787c8b 103 }
QL 0:9601fa787c8b 104 // @(/1/0/3/1/1)
QL 0:9601fa787c8b 105 case OFF_SIG: {
QL 0:9601fa787c8b 106 return Q_TRAN(&Pelican::offline);
QL 0:9601fa787c8b 107 }
QL 0:9601fa787c8b 108 }
QL 0:9601fa787c8b 109 return Q_SUPER(&QHsm::top);
QL 0:9601fa787c8b 110 }
QL 0:9601fa787c8b 111 // $(components::Pelican::Statechart::operational::carsEnabled) ..............
QL 0:9601fa787c8b 112 QState Pelican::carsEnabled(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 113 switch (e->sig) {
QL 0:9601fa787c8b 114 // @(/1/0/3/1/2)
QL 0:9601fa787c8b 115 case Q_EXIT_SIG: {
QL 0:9601fa787c8b 116 BSP_signalCars(CARS_RED);
QL 0:9601fa787c8b 117 return Q_HANDLED();
QL 0:9601fa787c8b 118 }
QL 0:9601fa787c8b 119 // @(/1/0/3/1/2/0)
QL 0:9601fa787c8b 120 case Q_INIT_SIG: {
QL 0:9601fa787c8b 121 return Q_TRAN(&Pelican::carsGreen);
QL 0:9601fa787c8b 122 }
QL 0:9601fa787c8b 123 }
QL 0:9601fa787c8b 124 return Q_SUPER(&Pelican::operational);
QL 0:9601fa787c8b 125 }
QL 0:9601fa787c8b 126 // $(components::Pelican::Statechart::operational::carsEnabled::carsGreen) ...
QL 0:9601fa787c8b 127 QState Pelican::carsGreen(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 128 switch (e->sig) {
QL 0:9601fa787c8b 129 // @(/1/0/3/1/2/1)
QL 0:9601fa787c8b 130 case Q_ENTRY_SIG: {
QL 0:9601fa787c8b 131 BSP_signalCars(CARS_GREEN);
QL 0:9601fa787c8b 132 me->m_timeout.postIn(me, CARS_GREEN_MIN_TOUT);
QL 0:9601fa787c8b 133 return Q_HANDLED();
QL 0:9601fa787c8b 134 }
QL 0:9601fa787c8b 135 // @(/1/0/3/1/2/1)
QL 0:9601fa787c8b 136 case Q_EXIT_SIG: {
QL 0:9601fa787c8b 137 me->m_timeout.disarm();
QL 0:9601fa787c8b 138 return Q_HANDLED();
QL 0:9601fa787c8b 139 }
QL 0:9601fa787c8b 140 // @(/1/0/3/1/2/1/0)
QL 0:9601fa787c8b 141 case Q_INIT_SIG: {
QL 0:9601fa787c8b 142 return Q_TRAN(&Pelican::carsGreenNoPed);
QL 0:9601fa787c8b 143 }
QL 0:9601fa787c8b 144 }
QL 0:9601fa787c8b 145 return Q_SUPER(&Pelican::carsEnabled);
QL 0:9601fa787c8b 146 }
QL 0:9601fa787c8b 147 // $(components::Pelican::Statechart::operational::carsEnabled::carsGreen::carsGreenNoPed)
QL 0:9601fa787c8b 148 QState Pelican::carsGreenNoPed(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 149 switch (e->sig) {
QL 0:9601fa787c8b 150 // @(/1/0/3/1/2/1/1)
QL 0:9601fa787c8b 151 case Q_ENTRY_SIG: {
QL 0:9601fa787c8b 152 BSP_showState("carsGreenNoPed");
QL 0:9601fa787c8b 153 return Q_HANDLED();
QL 0:9601fa787c8b 154 }
QL 0:9601fa787c8b 155 // @(/1/0/3/1/2/1/1/0)
QL 0:9601fa787c8b 156 case PEDS_WAITING_SIG: {
QL 0:9601fa787c8b 157 return Q_TRAN(&Pelican::carsGreenPedWait);
QL 0:9601fa787c8b 158 }
QL 0:9601fa787c8b 159 // @(/1/0/3/1/2/1/1/1)
QL 0:9601fa787c8b 160 case TIMEOUT_SIG: {
QL 0:9601fa787c8b 161 return Q_TRAN(&Pelican::carsGreenInt);
QL 0:9601fa787c8b 162 }
QL 0:9601fa787c8b 163 }
QL 0:9601fa787c8b 164 return Q_SUPER(&Pelican::carsGreen);
QL 0:9601fa787c8b 165 }
QL 0:9601fa787c8b 166 // $(components::Pelican::Statechart::operational::carsEnabled::carsGreen::carsGreenInt)
QL 0:9601fa787c8b 167 QState Pelican::carsGreenInt(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 168 switch (e->sig) {
QL 0:9601fa787c8b 169 // @(/1/0/3/1/2/1/2)
QL 0:9601fa787c8b 170 case Q_ENTRY_SIG: {
QL 0:9601fa787c8b 171 BSP_showState("carsGreenInt");
QL 0:9601fa787c8b 172 return Q_HANDLED();
QL 0:9601fa787c8b 173 }
QL 0:9601fa787c8b 174 // @(/1/0/3/1/2/1/2/0)
QL 0:9601fa787c8b 175 case PEDS_WAITING_SIG: {
QL 0:9601fa787c8b 176 return Q_TRAN(&Pelican::carsYellow);
QL 0:9601fa787c8b 177 }
QL 0:9601fa787c8b 178 }
QL 0:9601fa787c8b 179 return Q_SUPER(&Pelican::carsGreen);
QL 0:9601fa787c8b 180 }
QL 0:9601fa787c8b 181 // $(components::Pelican::Statechart::operational::carsEnabled::carsGreen::carsGreenPedWait)
QL 0:9601fa787c8b 182 QState Pelican::carsGreenPedWait(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 183 switch (e->sig) {
QL 0:9601fa787c8b 184 // @(/1/0/3/1/2/1/3)
QL 0:9601fa787c8b 185 case Q_ENTRY_SIG: {
QL 0:9601fa787c8b 186 BSP_showState("carsGreenPedWait");
QL 0:9601fa787c8b 187 return Q_HANDLED();
QL 0:9601fa787c8b 188 }
QL 0:9601fa787c8b 189 // @(/1/0/3/1/2/1/3/0)
QL 0:9601fa787c8b 190 case TIMEOUT_SIG: {
QL 0:9601fa787c8b 191 return Q_TRAN(&Pelican::carsYellow);
QL 0:9601fa787c8b 192 }
QL 0:9601fa787c8b 193 }
QL 0:9601fa787c8b 194 return Q_SUPER(&Pelican::carsGreen);
QL 0:9601fa787c8b 195 }
QL 0:9601fa787c8b 196 // $(components::Pelican::Statechart::operational::carsEnabled::carsYellow) ..
QL 0:9601fa787c8b 197 QState Pelican::carsYellow(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 198 switch (e->sig) {
QL 0:9601fa787c8b 199 // @(/1/0/3/1/2/2)
QL 0:9601fa787c8b 200 case Q_ENTRY_SIG: {
QL 0:9601fa787c8b 201 BSP_showState("carsYellow");
QL 0:9601fa787c8b 202 BSP_signalCars(CARS_YELLOW);
QL 0:9601fa787c8b 203 me->m_timeout.postIn(me, CARS_YELLOW_TOUT);
QL 0:9601fa787c8b 204 return Q_HANDLED();
QL 0:9601fa787c8b 205 }
QL 0:9601fa787c8b 206 // @(/1/0/3/1/2/2)
QL 0:9601fa787c8b 207 case Q_EXIT_SIG: {
QL 0:9601fa787c8b 208 me->m_timeout.disarm();
QL 0:9601fa787c8b 209 return Q_HANDLED();
QL 0:9601fa787c8b 210 }
QL 0:9601fa787c8b 211 // @(/1/0/3/1/2/2/0)
QL 0:9601fa787c8b 212 case TIMEOUT_SIG: {
QL 0:9601fa787c8b 213 return Q_TRAN(&Pelican::pedsEnabled);
QL 0:9601fa787c8b 214 }
QL 0:9601fa787c8b 215 }
QL 0:9601fa787c8b 216 return Q_SUPER(&Pelican::carsEnabled);
QL 0:9601fa787c8b 217 }
QL 0:9601fa787c8b 218 // $(components::Pelican::Statechart::operational::pedsEnabled) ..............
QL 0:9601fa787c8b 219 QState Pelican::pedsEnabled(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 220 switch (e->sig) {
QL 0:9601fa787c8b 221 // @(/1/0/3/1/3)
QL 0:9601fa787c8b 222 case Q_EXIT_SIG: {
QL 0:9601fa787c8b 223 BSP_signalPeds(PEDS_DONT_WALK);
QL 0:9601fa787c8b 224 return Q_HANDLED();
QL 0:9601fa787c8b 225 }
QL 0:9601fa787c8b 226 // @(/1/0/3/1/3/0)
QL 0:9601fa787c8b 227 case Q_INIT_SIG: {
QL 0:9601fa787c8b 228 return Q_TRAN(&Pelican::pedsWalk);
QL 0:9601fa787c8b 229 }
QL 0:9601fa787c8b 230 }
QL 0:9601fa787c8b 231 return Q_SUPER(&Pelican::operational);
QL 0:9601fa787c8b 232 }
QL 0:9601fa787c8b 233 // $(components::Pelican::Statechart::operational::pedsEnabled::pedsWalk) ....
QL 0:9601fa787c8b 234 QState Pelican::pedsWalk(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 235 switch (e->sig) {
QL 0:9601fa787c8b 236 // @(/1/0/3/1/3/1)
QL 0:9601fa787c8b 237 case Q_ENTRY_SIG: {
QL 0:9601fa787c8b 238 BSP_showState("pedsWalk");
QL 0:9601fa787c8b 239 BSP_signalPeds(PEDS_WALK);
QL 0:9601fa787c8b 240 me->m_timeout.postIn(me, PEDS_WALK_TOUT);
QL 0:9601fa787c8b 241 return Q_HANDLED();
QL 0:9601fa787c8b 242 }
QL 0:9601fa787c8b 243 // @(/1/0/3/1/3/1)
QL 0:9601fa787c8b 244 case Q_EXIT_SIG: {
QL 0:9601fa787c8b 245 me->m_timeout.disarm();
QL 0:9601fa787c8b 246 return Q_HANDLED();
QL 0:9601fa787c8b 247 }
QL 0:9601fa787c8b 248 // @(/1/0/3/1/3/1/0)
QL 0:9601fa787c8b 249 case TIMEOUT_SIG: {
QL 0:9601fa787c8b 250 return Q_TRAN(&Pelican::pedsFlash);
QL 0:9601fa787c8b 251 }
QL 0:9601fa787c8b 252 }
QL 0:9601fa787c8b 253 return Q_SUPER(&Pelican::pedsEnabled);
QL 0:9601fa787c8b 254 }
QL 0:9601fa787c8b 255 // $(components::Pelican::Statechart::operational::pedsEnabled::pedsFlash) ...
QL 0:9601fa787c8b 256 QState Pelican::pedsFlash(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 257 switch (e->sig) {
QL 0:9601fa787c8b 258 // @(/1/0/3/1/3/2)
QL 0:9601fa787c8b 259 case Q_ENTRY_SIG: {
QL 1:3fe0c7f27d97 260 BSP_showState("pedsFlash");
QL 0:9601fa787c8b 261 me->m_timeout.postEvery(me, PEDS_FLASH_TOUT);
QL 0:9601fa787c8b 262 me->m_flashCtr = PEDS_FLASH_NUM*2 + 1;
QL 0:9601fa787c8b 263 return Q_HANDLED();
QL 0:9601fa787c8b 264 }
QL 0:9601fa787c8b 265 // @(/1/0/3/1/3/2)
QL 0:9601fa787c8b 266 case Q_EXIT_SIG: {
QL 0:9601fa787c8b 267 me->m_timeout.disarm();
QL 0:9601fa787c8b 268 return Q_HANDLED();
QL 0:9601fa787c8b 269 }
QL 0:9601fa787c8b 270 // @(/1/0/3/1/3/2/0)
QL 0:9601fa787c8b 271 case TIMEOUT_SIG: {
QL 0:9601fa787c8b 272 // @(/1/0/3/1/3/2/0/0)
QL 0:9601fa787c8b 273 if (me->m_flashCtr != 0) {
QL 0:9601fa787c8b 274 --me->m_flashCtr;
QL 0:9601fa787c8b 275 // @(/1/0/3/1/3/2/0/0/0)
QL 0:9601fa787c8b 276 if ((me->m_flashCtr & 1) == 0) {
QL 0:9601fa787c8b 277 BSP_signalPeds(PEDS_DONT_WALK);
QL 0:9601fa787c8b 278 return Q_HANDLED();
QL 0:9601fa787c8b 279 }
QL 0:9601fa787c8b 280 // @(/1/0/3/1/3/2/0/0/1)
QL 0:9601fa787c8b 281 else {
QL 0:9601fa787c8b 282 BSP_signalPeds(PEDS_BLANK);
QL 0:9601fa787c8b 283 return Q_HANDLED();
QL 0:9601fa787c8b 284 }
QL 0:9601fa787c8b 285 }
QL 0:9601fa787c8b 286 // @(/1/0/3/1/3/2/0/1)
QL 0:9601fa787c8b 287 else {
QL 0:9601fa787c8b 288 return Q_TRAN(&Pelican::carsEnabled);
QL 0:9601fa787c8b 289 }
QL 0:9601fa787c8b 290 }
QL 0:9601fa787c8b 291 }
QL 0:9601fa787c8b 292 return Q_SUPER(&Pelican::pedsEnabled);
QL 0:9601fa787c8b 293 }
QL 0:9601fa787c8b 294 // $(components::Pelican::Statechart::offline) ...............................
QL 0:9601fa787c8b 295 QState Pelican::offline(Pelican *me, QEvent const *e) {
QL 0:9601fa787c8b 296 switch (e->sig) {
QL 0:9601fa787c8b 297 // @(/1/0/3/2)
QL 0:9601fa787c8b 298 case Q_ENTRY_SIG: {
QL 0:9601fa787c8b 299 BSP_showState("offline");
QL 0:9601fa787c8b 300 me->m_timeout.postEvery(me, OFF_FLASH_TOUT);
QL 0:9601fa787c8b 301 me->m_flashCtr = 0;
QL 0:9601fa787c8b 302 return Q_HANDLED();
QL 0:9601fa787c8b 303 }
QL 0:9601fa787c8b 304 // @(/1/0/3/2)
QL 0:9601fa787c8b 305 case Q_EXIT_SIG: {
QL 0:9601fa787c8b 306 me->m_timeout.disarm();
QL 0:9601fa787c8b 307 return Q_HANDLED();
QL 0:9601fa787c8b 308 }
QL 0:9601fa787c8b 309 // @(/1/0/3/2/0)
QL 0:9601fa787c8b 310 case TIMEOUT_SIG: {
QL 0:9601fa787c8b 311 me->m_flashCtr ^= 1;
QL 0:9601fa787c8b 312 // @(/1/0/3/2/0/0)
QL 0:9601fa787c8b 313 if ((me->m_flashCtr & 1) == 0) {
QL 0:9601fa787c8b 314 BSP_signalCars(CARS_RED);
QL 0:9601fa787c8b 315 BSP_signalPeds(PEDS_DONT_WALK);
QL 0:9601fa787c8b 316 return Q_HANDLED();
QL 0:9601fa787c8b 317 }
QL 0:9601fa787c8b 318 // @(/1/0/3/2/0/1)
QL 0:9601fa787c8b 319 else {
QL 0:9601fa787c8b 320 BSP_signalCars(CARS_BLANK);
QL 0:9601fa787c8b 321 BSP_signalPeds(PEDS_BLANK);
QL 0:9601fa787c8b 322 return Q_HANDLED();
QL 0:9601fa787c8b 323 }
QL 0:9601fa787c8b 324 }
QL 0:9601fa787c8b 325 // @(/1/0/3/2/1)
QL 0:9601fa787c8b 326 case ON_SIG: {
QL 0:9601fa787c8b 327 return Q_TRAN(&Pelican::operational);
QL 0:9601fa787c8b 328 }
QL 0:9601fa787c8b 329 }
QL 0:9601fa787c8b 330 return Q_SUPER(&QHsm::top);
QL 2:27716f570c3d 331 }
QL 2:27716f570c3d 332