Ejemplo n.º 1
0
/*..........................................................................*/
QState Philo_eating(Philo *me, QEvt const *e) {
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            QTimeEvt_postIn(&me->timeEvt, (QActive *)me, EAT_TIME);
            return Q_HANDLED();
        }
        case Q_EXIT_SIG: {
            TableEvt *pe = Q_NEW(TableEvt, DONE_SIG);
            pe->philoNum = PHILO_ID(me);
            QF_PUBLISH((QEvt *)pe, me);
            return Q_HANDLED();
        }
        case TIMEOUT_SIG: {
            BSP_busyDelay();
            return Q_TRAN(&Philo_thinking);
        }
        case EAT_SIG:                         /* intentionally fall-through */
        case DONE_SIG: {
                      /* EAT or DONE must be for other Philos than this one */
            Q_ASSERT(((TableEvt const *)e)->philoNum != PHILO_ID(me));
            return Q_HANDLED();
        }
    }
    return Q_SUPER(&QHsm_top);
}
Ejemplo n.º 2
0
/* @(/1/8/23/1/7/5/5/3/3) ..................................................*/
static QState QGprs_WaitFillData(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/7/5/5/3/3) */
        case Q_ENTRY_SIG: {
            /* 发送TCPIP前缀字符串[AT^SISC=...] */
            GPRS_SendTCPIPPrefix(me->m_SendDataLen);

            /* 启动应答计时器 */
            QTimeEvt_postIn(&me->m_Timer, (QActive *)me, TIMEOUT_ATTIPS);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/5/5/3/3) */
        case Q_EXIT_SIG: {
             QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/5/5/3/3/0) */
        case AT_FILLDATATIP_SIG: {
            status_ = Q_TRAN(&QGprs_WaitRet);
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_TcpSending);
            break;
        }
    }
    return status_;
}
/* @(/2/0/2/3) .............................................................*/
QState Philo_eating(Philo *me, QEvent const *e) {
    switch (e->sig) {
        /* @(/2/0/2/3) */
        case Q_ENTRY_SIG: {
            QTimeEvt_postIn(&me->timeEvt, &me->super, EAT_TIME);
            return Q_HANDLED();
        }
        /* @(/2/0/2/3) */
        case Q_EXIT_SIG: {
            TableEvt *pe = Q_NEW(TableEvt, DONE_SIG);
            pe->philoNum = PHILO_ID(me);
            QF_PUBLISH((QEvent const *)pe, me);
            return Q_HANDLED();
        }
        /* @(/2/0/2/3/0) */
        case TIMEOUT_SIG: {
            BSP_busyDelay();
            return Q_TRAN(&Philo_thinking);
        }
        /* @(/2/0/2/3/1) */
        case TERMINATE_SIG: /* intentionally fall through */
        case DONE_SIG: {
            Q_ERROR();
            return Q_HANDLED();
        }
        /* @(/2/0/2/3/2) */
        case EAT_SIG: {
            Q_ASSERT(((TableEvt const *)e)->philoNum != PHILO_ID(me));
            return Q_HANDLED();
        }
    }
    return Q_SUPER(&QHsm_top);
}
Ejemplo n.º 4
0
/*..........................................................................*/
QState Tunnel_screen_saver_show(Tunnel *me, QEvt const *e) {
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            uint32_t rnd = random();
            /* clear the screen frame buffer */
            memset(l_frame, (uint8_t)0,
                   (GAME_SCREEN_WIDTH * GAME_SCREEN_HEIGHT/8));
            Tunnel_addImageAt(me,
                    PRESS_BUTTON_BMP,
                    (uint8_t)(rnd % (GAME_SCREEN_WIDTH - 55)),
                    (int8_t) (rnd % (GAME_SCREEN_HEIGHT - 8)));
            BSP_drawBitmap(l_frame, GAME_SCREEN_WIDTH, GAME_SCREEN_HEIGHT);
            QTimeEvt_postIn(&me->screenTimeEvt, (QActive *)me,
                            BSP_TICKS_PER_SEC/3);        /* 1/3 sec timeout */
            return Q_HANDLED();
        }
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->screenTimeEvt);
            /* clear the screen frame buffer */
            memset(l_frame, (uint8_t)0,
                   (GAME_SCREEN_WIDTH * GAME_SCREEN_HEIGHT/8));
            BSP_drawBitmap(l_frame, GAME_SCREEN_WIDTH, GAME_SCREEN_HEIGHT);
            return Q_HANDLED();
        }
        case SCREEN_TIMEOUT_SIG: {
            return Q_TRAN(&Tunnel_screen_saver_hide);
        }
    }
    return Q_SUPER(&Tunnel_screen_saver);
}
Ejemplo n.º 5
0
/*..........................................................................*/
QState Tunnel_game_over(Tunnel *me, QEvt const *e) {
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            QTimeEvt_postEvery(&me->blinkTimeEvt, (QActive *)me,
                               BSP_TICKS_PER_SEC/2);             /* 1/2 sec */
            QTimeEvt_postIn(&me->screenTimeEvt, (QActive *)me,
                            BSP_TICKS_PER_SEC*5);          /* 5 sec timeout */
            me->blink_ctr = 0;
            BSP_drawNString((GAME_SCREEN_WIDTH - 6*9)/2, 0, "Game Over");
            return Q_HANDLED();
        }
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->blinkTimeEvt);
            QTimeEvt_disarm(&me->screenTimeEvt);
            BSP_updateScore(0);          /* update the score on the display */
            return Q_HANDLED();
        }
        case BLINK_TIMEOUT_SIG: {
            me->blink_ctr ^= 1;                  /* toggle the blink couner */
            BSP_drawNString((GAME_SCREEN_WIDTH - 6*9)/2, 0,
                             ((me->blink_ctr == 0)
                             ? "Game Over"
                             : "         "));
            return Q_HANDLED();
        }
        case SCREEN_TIMEOUT_SIG: {
            return Q_TRAN(&Tunnel_demo);
        }
    }
    return Q_SUPER(&Tunnel_active);
}
/* @(/2/0/2/1) .............................................................*/
QState Philo_thinking(Philo *me, QEvent const *e) {
    switch (e->sig) {
        /* @(/2/0/2/1) */
        case Q_ENTRY_SIG: {
            QTimeEvt_postIn(&me->timeEvt, &me->super, THINK_TIME);
            return Q_HANDLED();
        }
        /* @(/2/0/2/1/0) */
        case TIMEOUT_SIG: {
            BSP_busyDelay();
            return Q_TRAN(&Philo_hungry);
        }
        /* @(/2/0/2/1/1) */
        case TERMINATE_SIG: /* intentionally fall through */
        case DONE_SIG: {
            Q_ERROR();
            return Q_HANDLED();
        }
        /* @(/2/0/2/1/2) */
        case EAT_SIG: {
            Q_ASSERT(((TableEvt const *)e)->philoNum != PHILO_ID(me));
            return Q_HANDLED();
        }
    }
    return Q_SUPER(&QHsm_top);
}
Ejemplo n.º 7
0
/* @(/1/8/23/1/6/3) ........................................................*/
static QState QGprs_start_delay(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/6/3) */
        case Q_ENTRY_SIG: {
            //先管脚拉低
            GPIO_SetBits(GPIOA, GPIOA_GPRS_PWRKEY_);
            //低电平拉低1000ms
            QTimeEvt_postIn(&me->m_Timer, &me->super, TIMEOUT_PWRONBEFORE_TICKS);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/6/3) */
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/6/3/0) */
        case Q_TIMEOUT_SIG: {
            status_ = Q_TRAN(&QGprs_start_finished);
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_startup);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 8
0
/* @(/1/8/23/1/6/2) ........................................................*/
static QState QGprs_start_finished(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/6/2) */
        case Q_ENTRY_SIG: {
            /* TERMON 高电平 */
            GPIO_ResetBits(GPIOA, GPIOA_GPRS_PWRKEY_);
            /* 已开机,稍延时待稳定后执行AT */
            QTimeEvt_postIn(&me->m_Timer, &me->super, TIMEOUT_PWRONAFTER_TICKS);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/6/2) */
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/6/2/0) */
        case Q_TIMEOUT_SIG: {
            //串口IO重新初始化
            GPRS_UartReconfigure();
            status_ = Q_TRAN(&QGprs_polling);
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_startup);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 9
0
/* @(/1/8/23/1/6/1) ........................................................*/
static QState QGprs_power_on(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/6/1) */
        case Q_ENTRY_SIG: {
            //模块上电
            GPIO_SetBits(GPIOA,GPIOA_CDMA_CTRL_);
            /* TERMON 高电平 */
            GPIO_ResetBits(GPIOA, GPIOA_GPRS_PWRKEY_);

            //保持1S
            QTimeEvt_postIn(&me->m_Timer, &me->super, TIMEOUT_PWRON_TICKS);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/6/1) */
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/6/1/0) */
        case Q_TIMEOUT_SIG: {
            status_ = Q_TRAN(&QGprs_start_delay);
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_startup);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 10
0
/* @(/1/8/23/1/8) ..........................................................*/
static QState QGprs_reseting(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/8) */
        case Q_ENTRY_SIG: {
            //模块上电
            GPIO_ResetBits(GPIOA,GPIOA_CDMA_CTRL_);
            //先管脚拉低
            //GPIO_ResetBits(GPIOA, GPIOA_GPRS_PWRKEY_);
            //低电平拉低1000ms
            QTimeEvt_postIn(&me->m_Timer, &me->super, TIMEOUT_RESETBEFORE_TICKS);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/8) */
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/8/0) */
        case Q_TIMEOUT_SIG: {
            status_ = Q_TRAN(&QGprs_startup);
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_serving);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 11
0
/* @(/1/8/23/1/7/5/5/3/4) ..................................................*/
static QState QGprs_WaitRet(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/7/5/5/3/4) */
        case Q_ENTRY_SIG: {
            /* 填充待发送数据内容 */
            GPRS_FillinTCPIPData(me->m_sendBuf, me->m_SendDataLen);

            /* 启动应答计时器 */
            QTimeEvt_postIn(&me->m_Timer, (QActive *)me, TIMEOUT_ATSENDRET);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/5/5/3/4) */
        case Q_EXIT_SIG: {
             QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/5/5/3/4/0) */
        case AT_SENDOK_SIG: {
            status_ = Q_TRAN(&QGprs_Idle);
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_TcpSending);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 12
0
/* @(/1/8/23/1/7/3) ........................................................*/
static QState QGprs_registering(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/7/3) */
        case Q_ENTRY_SIG: {
            //执行注册网络AT指令
            GPRS_doRegister();
            QTimeEvt_postIn(&me->m_Timer, &me->super, TIMEOUT_ATREG);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/3) */
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/3/0) */
        case AT_OK_SIG: {
            if(GPRS_GetRegState())
            {
                me->m_NetState = NET_STATE_REGISTED;
                GPRS_SetNetState(NET_STATE_REGISTED);
            }
            /* @(/1/8/23/1/7/3/0/0) */
            if (GPRS_GetRegState() == 0) {
                status_ = Q_HANDLED();
            }
            /* @(/1/8/23/1/7/3/0/1) */
            else {
                status_ = Q_TRAN(&QGprs_powerNormalMode);
            }
            break;
        }
        /* @(/1/8/23/1/7/3/1) */
        case Q_TIMEOUT_SIG: {
            me->m_TryTimes++;
            /* @(/1/8/23/1/7/3/1/0) */
            if (me->m_TryTimes < REGISTER_TRY_MAXTIMES) {
                status_ = Q_TRAN(&QGprs_registering);
            }
            /* @(/1/8/23/1/7/3/1/1) */
            else {
                TRACE_(QS_USER, NULL, "*** [GPRS] Regging timeout, repower gprs");
                status_ = Q_TRAN(&QGprs_reseting);
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_polling);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 13
0
/*..........................................................................*/
QState Tunnel_demo(Tunnel *me, QEvt const *e) {
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            me->last_mine_x = 0;   /* last mine at right edge of the tunnel */
            me->last_mine_y = 0;
                                            /* set the tunnel properties... */
            me->wall_thickness_top = 0;
            me->wall_thickness_bottom = 0;
            me->minimal_gap = GAME_SCREEN_HEIGHT - 3;

            /* erase the tunnel walls */
            memset(l_walls, (uint8_t)0,
                   (GAME_SCREEN_WIDTH * GAME_SCREEN_HEIGHT/8));


            QTimeEvt_postEvery(&me->blinkTimeEvt, (QActive *)me,
                               BSP_TICKS_PER_SEC/2);       /* every 1/2 sec */

            QTimeEvt_postIn(&me->screenTimeEvt, (QActive *)me,
                            BSP_TICKS_PER_SEC*20);           /* 20s timeout */

            me->blink_ctr = 0;                    /* init the blink counter */
            return Q_HANDLED();
        }
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->blinkTimeEvt);
            QTimeEvt_disarm(&me->screenTimeEvt);
            return Q_HANDLED();
        }
        case BLINK_TIMEOUT_SIG: {
            me->blink_ctr ^= 1;                  /* toggle the blink cunter */
            return Q_HANDLED();
        }
        case SCREEN_TIMEOUT_SIG: {
            return Q_TRAN(&Tunnel_screen_saver);
        }
        case TIME_TICK_SIG: {
            Tunnel_advance(me);
            if (me->blink_ctr != 0) {
                /* add the text bitmap into the frame buffer */
                Tunnel_addImageAt(me,
                    PRESS_BUTTON_BMP,
                    (GAME_SCREEN_WIDTH - 55)/2,
                    (GAME_SCREEN_HEIGHT - 8)/2);
            }
            BSP_drawBitmap(l_frame, GAME_SCREEN_WIDTH, GAME_SCREEN_HEIGHT);
            return Q_HANDLED();
        }
        case PLAYER_TRIGGER_SIG: {
            return Q_TRAN(&Tunnel_playing);
        }
    }
    return Q_SUPER(&Tunnel_active);
}
Ejemplo n.º 14
0
/*${AOs::FlashMgr::SM::Active} .............................................*/
static QState FlashMgr_Active(FlashMgr * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* ${AOs::FlashMgr::SM::Active} */
        case Q_ENTRY_SIG: {
            /* Arm and disarm*/
            QTimeEvt_postIn(
                &me->flashTimerEvt,
                (QActive *)me,
                SEC_TO_TICKS( HL_MAX_TOUT_SEC_FLASH_FW )
            );
            QTimeEvt_disarm(&me->flashTimerEvt);

            QTimeEvt_postIn(
                &me->flashOpTimerEvt,
                (QActive *)me,
                SEC_TO_TICKS( HL_MAX_TOUT_SEC_FLASH_FW )
            );
            QTimeEvt_disarm(&me->flashOpTimerEvt);

            QTimeEvt_postIn(
                &me->ramTimerEvt,
                (QActive *)me,
                SEC_TO_TICKS( HL_MAX_TOUT_SEC_FLASH_FW )
            );
            QTimeEvt_disarm(&me->ramTimerEvt);
            status_ = Q_HANDLED();
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 15
0
/*..........................................................................*/
QState Philo_thinking(Philo *me, QEvent const *e) {
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            QTimeEvt_postIn(&me->timeEvt, (QActive *)me, THINK_TIME);
            return Q_HANDLED();
        }
        case TIMEOUT_SIG: {
            return Q_TRAN(&Philo_hungry);
        }
        case EAT_SIG:                         /* intentionally fall-through */
        case DONE_SIG: {
                      /* EAT or DONE must be for other Philos than this one */
            Q_ASSERT(((TableEvt const *)e)->philoNum != PHILO_ID(me));
            return Q_HANDLED();
        }
    }
    return Q_SUPER(&QHsm_top);
}
Ejemplo n.º 16
0
Archivo: cli.c Proyecto: ageamiu/cdb
/*${AOs::CLI::SM} ..........................................................*/
static QState CLI_initial(CLI * const me, QEvt const * const e) {
    /* ${AOs::CLI::SM::initial} */
    /* Print banner on the serial console */

        Console_printStr("\r\nStart\r\n");
        Console_printStr("Compiled on ");
        Console_printStr(__DATE__);
        Console_printStr(" at ");
        Console_printStr(__TIME__);
        Console_printStr(" using Microchip XC16 ver.");
        Console_printNum(__XC16_VERSION__, 10);

        LED_ON();

        QTimeEvt_postIn( &me->blinkEvt, (QActive *)me, BLINK_ON_TIME );

    QActive_subscribe((QActive *)me, PRINT_STRING_SIG);
    return Q_TRAN(&CLI_idle);
}
Ejemplo n.º 17
0
/*..........................................................................*/
QState Tunnel_screen_saver_hide(Tunnel *me, QEvt const *e) {
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            BSP_displayOff();                     /* power down the display */
            QTimeEvt_postIn(&me->screenTimeEvt, (QActive *)me,
                            BSP_TICKS_PER_SEC*3);             /* 3s timeout */
            return Q_HANDLED();
        }
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->screenTimeEvt);
            BSP_displayOn();                        /* power up the display */
            return Q_HANDLED();
        }
        case SCREEN_TIMEOUT_SIG: {
            return Q_TRAN(&Tunnel_screen_saver_show);
        }
    }
    return Q_SUPER(&Tunnel_screen_saver);
}
Ejemplo n.º 18
0
/* @(/1/8/23/1/7/6) ........................................................*/
static QState QGprs_sleepRequest(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/7/6) */
        case Q_ENTRY_SIG: {
            //进入休眠命令
            TRACE_(QS_USER, NULL, "[GPRS] Enable MG323 Module entering into Sleep mode...");
            GPRS_RequestSleep();
            QTimeEvt_postIn(&me->m_Timer, &me->super, TIMEOUT_ATACK);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/6) */
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/6/0) */
        case AT_OK_SIG: {
            TRACE_(QS_USER, NULL, "[GPRS] Sleep mode is Done.");
            status_ = Q_TRAN(&QGprs_powerSaveMode);
            break;
        }
        /* @(/1/8/23/1/7/6/1) */
        case Q_TIMEOUT_SIG: {
            status_ = Q_TRAN(&QGprs_sleepRequest);
            break;
        }
        /* @(/1/8/23/1/7/6/2) */
        case AT_ERROR_SIG: {
            status_ = Q_HANDLED();
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_polling);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 19
0
Archivo: cli.c Proyecto: ageamiu/cdb
/*${AOs::CLI::SM::main} ....................................................*/
static QState CLI_main(CLI * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* ${AOs::CLI::SM::main::BLINK} */
        case BLINK_SIG: {
            static bool on_off = false;

            uint8_t time;

            if( on_off == true ) {
                LED_ON();
                time = BLINK_ON_TIME;
            } else {
                LED_OFF();
                time = BLINK_OFF_TIME;
            }

            on_off = !on_off;
            QTimeEvt_postIn( &me->blinkEvt, (QActive *)me, time );
            status_ = Q_HANDLED();
            break;
        }
        /* ${AOs::CLI::SM::main::MENU_SELECT} */
        case MENU_SELECT_SIG: {
            status_ = Q_TRAN(&CLI_menu_Top);
            break;
        }
        /* ${AOs::CLI::SM::main::PRINT_STRING} */
        case PRINT_STRING_SIG: {
            Console_printStr( ((PrintStringEvt const*)e)->str );
            status_ = Q_HANDLED();
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 20
0
/*${AOs::SerialMgr::SM::Active} ............................................*/
static QState SerialMgr_Active(SerialMgr * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* ${AOs::SerialMgr::SM::Active} */
        case Q_ENTRY_SIG: {
            /* Post a timer and disarm it right away so it can be
             * rearmed at any point */
            QTimeEvt_postIn(
                &me->serialTimerEvt,
                (QActive *)me,
                SEC_TO_TICKS( LL_MAX_TIMEOUT_SERIAL_DMA_BUSY_SEC )
            );
            QTimeEvt_disarm(&me->serialTimerEvt);
            status_ = Q_HANDLED();
            break;
        }
        default: {
            status_ = Q_SUPER(&QHsm_top);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 21
0
/* @(/1/8/23/1/7/5/5/7) ....................................................*/
static QState QGprs_DataQuering(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/7/5/5/7) */
        case Q_ENTRY_SIG: {
            //发送数据查询指令
            GPRS_doQueryData();
            /* 启动应答计时器 */
            QTimeEvt_postIn(&me->m_Timer, (QActive *)me, TIMEOUT_AT_DATAQUERYRET);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/5/5/7) */
        case Q_EXIT_SIG: {
             QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/5/5/7/0) */
        case AT_OK_SIG: {
            //逆向提取TCP包
            GPRS_doTakeTCPPacketData();
            status_ = Q_TRAN(&QGprs_Idle);
            break;
        }
        /* @(/1/8/23/1/7/5/5/7/1) */
        case Q_TIMEOUT_SIG: {
            status_ = Q_TRAN(&QGprs_Idle);
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_connected);
            break;
        }
    }
    return status_;
}
/*..........................................................................*/
QState AlarmMgr_playing(AlarmMgr *me, QEvt const *e) {
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            QTimeEvt_postIn(&me->timer, (QActive *)me,
                            l_alarms[me->curr_alarm].note[me->curr_note].dur);
            TIM_PrescalerConfig(TIM3,
                           l_alarms[me->curr_alarm].note[me->curr_note].freq);
            TIM_CounterCmd(TIM3, TIM_START);                 /* start noise */
            return Q_HANDLED();
        }
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->timer);
            return Q_HANDLED();
        }
        case TIMEOUT_SIG: {
            ++me->curr_note;
            if (me->curr_note == l_alarms[me->curr_alarm].length) {
                me->curr_note = 0;                      /* start over again */
            }
            return Q_TRAN(&AlarmMgr_playing);         /* transition to self */
        }
    }
    return Q_SUPER(&AlarmMgr_on);
}
Ejemplo n.º 23
0
/* @(/1/8/23/1/7/4/1) ......................................................*/
static QState QGprs_initialing_stepinto(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/7/4/1) */
        case Q_ENTRY_SIG: {
            //执行初始化序列
            GPRS_doInit(me->m_ATStep);
            QTimeEvt_postIn(&me->m_Timer, &me->super, TIMEOUT_ATACK);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/4/1) */
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->m_Timer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/4/1/0) */
        case Q_TIMEOUT_SIG: {
            me->m_TryTimes ++;
            /* @(/1/8/23/1/7/4/1/0/0) */
            if (me->m_TryTimes < INIT_TRY_MAXTIMES) {
                status_ = Q_TRAN(&QGprs_initialing_stepinto);
            }
            /* @(/1/8/23/1/7/4/1/0/1) */
            else {
                TRACE_(QS_USER, NULL, "*** [GPRS] init failed, repower gprs");
                status_ = Q_TRAN(&QGprs_reseting);
            }
            break;
        }
        /* @(/1/8/23/1/7/4/1/1) */
        case AT_OK_SIG: {
            /* @(/1/8/23/1/7/4/1/1/0) */
            if (0 == GPRS_CheckCmd_IsAttaching(me->m_ATStep)) {
                me->m_ATStep ++;
                /* @(/1/8/23/1/7/4/1/1/0/0) */
                if (me->m_ATStep < INIT_STEPS_AMOUNT) {
                    status_ = Q_TRAN(&QGprs_initialing_stepinto);
                }
                /* @(/1/8/23/1/7/4/1/1/0/1) */
                else {
                    me->m_TryTimes = 0;
                    status_ = Q_TRAN(&QGprs_registering);
                }
            }
            /* @(/1/8/23/1/7/4/1/1/1) */
            else {
                /* @(/1/8/23/1/7/4/1/1/1/0) */
                if (1 == GPRS_GetAttachState()) {
                    me->m_ATStep ++;
                    status_ = Q_TRAN(&QGprs_initialing_stepinto);
                }
                /* @(/1/8/23/1/7/4/1/1/1/1) */
                else {
                    status_ = Q_HANDLED();
                }
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_initialing);
            break;
        }
    }
    return status_;
}
Ejemplo n.º 24
0
/* @(/1/8/23/1/7/5/4/1) ....................................................*/
static QState QGprs_connecting(QGprs * const me, QEvt const * const e) {
    QState status_;
    switch (e->sig) {
        /* @(/1/8/23/1/7/5/4/1) */
        case Q_ENTRY_SIG: {
            //执行连接AT序列
            GPRS_doConnect(me->m_ATStep);
            QTimeEvt_postIn(&me->m_Timer, &me->super, TIMEOUT_ATCONNECT);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/5/4/1) */
        case Q_EXIT_SIG: {
            QTimeEvt_disarm(&me->m_Timer);
            QTimeEvt_disarm(&me->m_LEDTimer);
            status_ = Q_HANDLED();
            break;
        }
        /* @(/1/8/23/1/7/5/4/1/0) */
        case AT_OK_SIG: {
            me->m_ATStep ++;
            /* @(/1/8/23/1/7/5/4/1/0/0) */
            if (me->m_ATStep < (CONNECT_STEPS_AMOUNT)) {
                status_ = Q_TRAN(&QGprs_connecting);
            }
            /* @(/1/8/23/1/7/5/4/1/0/1) */
            else {
                status_ = Q_TRAN(&QGprs_connected);
            }
            break;
        }
        /* @(/1/8/23/1/7/5/4/1/1) */
        case AT_ERROR_SIG: {
            me->m_ATErrorTimes ++;
            me->m_ATStep ++;
            /* @(/1/8/23/1/7/5/4/1/1/0) */
            if (me->m_ATStep < (CONNECT_STEPS_AMOUNT)) {
                status_ = Q_TRAN(&QGprs_connecting);
            }
            /* @(/1/8/23/1/7/5/4/1/1/1) */
            else {
                me->m_ATStep = 0;
                status_ = Q_HANDLED();
            }
            break;
        }
        /* @(/1/8/23/1/7/5/4/1/2) */
        case Q_TIMEOUT_SIG: {
            me->m_ATErrorTimes ++;
            /* @(/1/8/23/1/7/5/4/1/2/0) */
            if (me->m_ATErrorTimes >= CONNECT_ERROR_MAXTIMES) {
                //设置故障类型:网络不可达
                //SetErrType(NET_CLASS, NET_FAULT_UNREACHABLE);
                status_ = Q_TRAN(&QGprs_reseting);
            }
            /* @(/1/8/23/1/7/5/4/1/2/1) */
            else {
                status_ = Q_TRAN(&QGprs_connecting);
            }
            break;
        }
        default: {
            status_ = Q_SUPER(&QGprs_disconnected);
            break;
        }
    }
    return status_;
}