= &Blinky1_inst.super; = &Blinky2_inst.super; event for blink-pattern QActive_ctor(&me->super, Q_STATE_CAST(&Blinky1_initial)); QTimeEvt_ctorX(&me->te, &me->super, TIMEOUT_SIG, 0U); QTimeEvt_armX(&me->te, 2U, 2U); me->iter = 1500U; QTimeEvt_disarm(&me->te); QTimeEvt_armX(&me->te, ((BlinkPatternEvt const *)e)->ticks, ((BlinkPatternEvt const *)e)->ticks); me->iter = ((BlinkPatternEvt const *)e)->iter; for (uint32_t volatile i = me->iter; i != 0U; --i) { BSP_ledGreenOn(); BSP_ledGreenOff(); } QActive_ctor(&me->super, Q_STATE_CAST(&Blinky2_initial)); me->seq = 0U; enum { N_SEQ = 2 }; static uint8_t const n_ticks[N_SEQ] = { 2U, 1U }; static uint32_t const n_iter[N_SEQ] = { 1500U, 750U }; /* advance and wrap-around the sequence counter */ me->seq = (me->seq + 1U) % N_SEQ; BlinkPatternEvt *bpe = Q_NEW(BlinkPatternEvt, BLINK_PATTERN_SIG); bpe->ticks = n_ticks[me->seq]; for (uint32_t volatile i = 1500U; i != 0U; --i) { BSP_ledBlueOn(); BSP_ledBlueOff(); } bpe->iter = n_iter[me->seq]; QACTIVE_POST(AO_Blinky1, &bpe->super, 0U); for (uint32_t volatile i = 2*1500U; i != 0U; --i) { BSP_ledBlueOn(); BSP_ledBlueOff(); } #include "qpc.h" #include "bsp.h" Q_DEFINE_THIS_FILE $declare ${AOs} static QEvt const *blinky1_queue[10]; static QEvt const *blinky2_queue[10]; static BlinkPatternEvt evtPool[10]; int main() { BSP_init(); QF_init(); /* initialize the event pools... */ QF_poolInit(evtPool, sizeof(evtPool), sizeof(evtPool[0])); /* initialize and start Blinky1 AO */ Blinky1_ctor(&Blinky1_inst); QACTIVE_START(&Blinky1_inst, 5U, /* priority */ blinky1_queue, Q_DIM(blinky1_queue), /* event queue */ (void *)0, 0, /* stack memory, stack size (not used) */ (void *)0); /* extra parameter (not used) */ /* initialize and start Blinky2 AO */ Blinky2_ctor(&Blinky2_inst); QACTIVE_START(&Blinky2_inst, 2U, /* priority */ blinky2_queue, Q_DIM(blinky2_queue), /* event queue */ (void *)0, 0, /* stack memory, stack size (not used) */ (void *)0); /* extra parameter (not used) */ /* transfer control to the RTOS to run the threads */ return QF_run(); } /*=======================================================================*/ $define ${AO_ptrs} $define ${AOs}