| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /*.$file${.::blinky.c} vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
- /*
- * Model: blinky.qm
- * File: ${.::blinky.c}
- *
- * This code has been generated by QM 5.1.4 <www.state-machine.com/qm/>.
- * DO NOT EDIT THIS FILE MANUALLY. All your changes will be lost.
- *
- * This program is open source software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as published
- * by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * for more details.
- */
- /*.$endhead${.::blinky.c} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
- #include <rtthread.h>
- #ifdef QPC_USING_BLINKY_EXAMPLE
- #ifdef RT_USING_FINSH
- #include <finsh.h>
- #include "qpc.h"
- Q_DEFINE_THIS_FILE
- enum { BSP_TICKS_PER_SEC = 100 };
- void BSP_ledOff(void) {
- rt_kprintf("LED OFF\n");
- }
- void BSP_ledOn(void) {
- rt_kprintf("LED ON\n");
- }
- enum BlinkySignals {
- DUMMY_SIG = Q_USER_SIG,
- TIMEOUT_SIG,
- MAX_SIG
- };
- typedef struct Blinky {
- QActive super;
- QTimeEvt timeEvt;
- } Blinky;
- static Blinky l_blinky;
- QActive * const AO_Blinky = &l_blinky.super;
- static QState Blinky_initial(Blinky * const me, QEvt const * const e);
- static QState Blinky_off (Blinky * const me, QEvt const * const e);
- static QState Blinky_on (Blinky * const me, QEvt const * const e);
- static void Blinky_ctor(void) {
- Blinky *me = &l_blinky;
- QActive_ctor(&me->super, Q_STATE_CAST(&Blinky_initial));
- QTimeEvt_ctorX(&me->timeEvt, &me->super, TIMEOUT_SIG, 0U);
- }
- int qpc_blinky_start(void) {
- /* statically allocate event queue buffer for the Blinky AO */
- static QEvt const *blinky_queueSto[10];
- static uint8_t blinky_stack[1024];
- QF_init(); /* initialize the framework */
- Blinky_ctor(); /* explicitly call the "constructor" */
- QACTIVE_START(AO_Blinky,
- 1U, /* priority */
- blinky_queueSto, Q_DIM(blinky_queueSto),
- (void *)blinky_stack, sizeof(blinky_stack), /* no stack */
- (void *)0); /* no initialization parameter */
- return QF_run(); /* run the QF application */
- }
- MSH_CMD_EXPORT(qpc_blinky_start, start qpc blinky example);
- static QState Blinky_initial(Blinky * const me, QEvt const * const e) {
- (void)e; /* unused parameter */
- QTimeEvt_armX(&me->timeEvt, BSP_TICKS_PER_SEC/2, BSP_TICKS_PER_SEC/2);
- return Q_TRAN(&Blinky_off);
- }
- static QState Blinky_off(Blinky * const me, QEvt const * const e) {
- QState status;
- switch (e->sig) {
- case Q_ENTRY_SIG: {
- BSP_ledOff();
- status = Q_HANDLED();
- break;
- }
- case TIMEOUT_SIG: {
- status = Q_TRAN(&Blinky_on);
- break;
- }
- default: {
- status = Q_SUPER(&QHsm_top);
- break;
- }
- }
- return status;
- }
- static QState Blinky_on(Blinky * const me, QEvt const * const e) {
- QState status;
- switch (e->sig) {
- case Q_ENTRY_SIG: {
- BSP_ledOn();
- status = Q_HANDLED();
- break;
- }
- case TIMEOUT_SIG: {
- status = Q_TRAN(&Blinky_off);
- break;
- }
- default: {
- status = Q_SUPER(&QHsm_top);
- break;
- }
- }
- return status;
- }
- #endif /* RT_USING_FINSH */
- #endif /* QPC_USING_BLINKY_EXAMPLE */
|