Real-time example { PERIODIC_SPEC_SIG = Q_USER_SIG, TIMEOUT_SIG, SPORADIC_A_SIG, SPORADIC_B_SIG, REMINDER_SIG, // ... MAX_SIG // the last signal }; = (QActive *)&Periodic1_inst; Periodic1 * const me = &Periodic1_inst; QMActive_ctor(&me->super, Q_STATE_CAST(&Periodic1_initial)); QTimeEvt_ctorX(&me->te, (QActive *)me, TIMEOUT_SIG, 0U); = (QActive *)&Periodic4_inst; Periodic4 * const me = &Periodic4_inst; QMActive_ctor(&me->super, Q_STATE_CAST(&Periodic4_initial)); QTimeEvt_ctorX(&me->te, (QActive *)me, TIMEOUT_SIG, 0U); = (QActive *)&Sporadic2_inst; Sporadic2 * const me = &Sporadic2_inst; QMActive_ctor(&me->super, Q_STATE_CAST(&Sporadic2_initial)); = (QActive *)&Sporadic3_inst; Sporadic3 * const me = &Sporadic3_inst; QMActive_ctor(&me->super, Q_STATE_CAST(&Sporadic3_initial)); // the initial event must be provided and must be WORKLOAD_SIG QEvt const *e = (QEvt const *)par; Q_REQUIRE_ID(300, (e != (QEvt const *)0) && (e->sig == PERIODIC_SPEC_SIG)); QTimeEvt_armX(&me->te, Q_EVT_CAST(PeriodicSpecEvt)->ticks, Q_EVT_CAST(PeriodicSpecEvt)->ticks); me->toggles = Q_EVT_CAST(PeriodicSpecEvt)->toggles; for (uint16_t i = me->toggles; i > 0U; --i) { BSP_d6on(); BSP_d6off(); } BSP_d6on(); QTimeEvt_disarm(&me->te); QTimeEvt_armX(&me->te, Q_EVT_CAST(PeriodicSpecEvt)->ticks, Q_EVT_CAST(PeriodicSpecEvt)->ticks); me->toggles = Q_EVT_CAST(PeriodicSpecEvt)->toggles; BSP_d6off(); // the initial event must be provided and must be WORKLOAD_SIG QEvt const *e = (QEvt const *)par; Q_REQUIRE_ID(300, (e != (QEvt const *)0) && (e->sig == PERIODIC_SPEC_SIG)); QTimeEvt_armX(&me->te, Q_EVT_CAST(PeriodicSpecEvt)->ticks, Q_EVT_CAST(PeriodicSpecEvt)->ticks); me->toggles = Q_EVT_CAST(PeriodicSpecEvt)->toggles; for (uint16_t i = me->toggles; i > 0U; --i) { BSP_d3on(); BSP_d3off(); } BSP_d3on(); QTimeEvt_disarm(&me->te); QTimeEvt_armX(&me->te, Q_EVT_CAST(PeriodicSpecEvt)->ticks, Q_EVT_CAST(PeriodicSpecEvt)->ticks); me->toggles = Q_EVT_CAST(PeriodicSpecEvt)->toggles; BSP_d3off(); Q_UNUSED_PAR(par); Q_UNUSED_PAR(me); BSP_d5on(); QACTIVE_POST(AO_Sporadic3, e, me); // Sporadic2 --> Sporadic3 BSP_d5off(); BSP_d5on(); QACTIVE_POST(AO_Periodic1, BSP_getEvtPeriodic1(1U), me); BSP_d5off(); for (uint16_t i = Q_EVT_CAST(SporadicSpecEvt)->toggles; i > 0U; --i) { BSP_d5on(); BSP_d5off(); } Q_UNUSED_PAR(par); Q_UNUSED_PAR(me); BSP_d4on(); // Sporadic3 --> Periodic4 QACTIVE_POST(AO_Periodic4, BSP_getEvtPeriodic4(1U), me); BSP_d4off(); for (uint16_t i = Q_EVT_CAST(SporadicSpecEvt)->toggles; i > 0U; --i) { BSP_d4on(); BSP_d4off(); } #ifndef APP_H_ #define APP_H_ $declare ${Shared} #endif // APP_H_ #include "qpc.h" // QP/C real-time event framework #include "bsp.h" // Board Support Package #include "app.h" // Application interface $declare ${AOs::Periodic1} Q_DEFINE_THIS_MODULE("periodic1") $define ${Shared::Periodic1_ctor} $define ${Shared::AO_Periodic1} $define ${AOs::Periodic1} #include "qpc.h" // QP/C real-time event framework #include "bsp.h" // Board Support Package #include "app.h" // Application interface $declare ${AOs::Periodic4} Q_DEFINE_THIS_MODULE("periodic4") $define ${Shared::Periodic4_ctor} $define ${Shared::AO_Periodic4} $define ${AOs::Periodic4} #include "qpc.h" // QP/C real-time event framework #include "bsp.h" // Board Support Package #include "app.h" // Application interface $declare ${AOs::Sporadic2} //Q_DEFINE_THIS_MODULE("sporadic2") $define ${Shared::Sporadic2_ctor} $define ${Shared::AO_Sporadic2} $define ${AOs::Sporadic2} #include "qpc.h" // QP/C real-time event framework #include "bsp.h" // Board Support Package #include "app.h" // Application interface $declare ${AOs::Sporadic3} //Q_DEFINE_THIS_MODULE("sporadic3") $define ${Shared::Sporadic3_ctor} $define ${Shared::AO_Sporadic3} $define ${AOs::Sporadic3}