/*${AOs::SerialMgr::SM::Active::Idle} ......................................*/ static QState SerialMgr_Idle(SerialMgr * const me, QEvt const * const e) { QState status_; switch (e->sig) { /* ${AOs::SerialMgr::SM::Active::Idle} */ case Q_ENTRY_SIG: { /* recall the request from the private requestQueue */ QActive_recall( (QActive *)me, &me->deferredEvtQueue ); status_ = Q_HANDLED(); break; } /* ${AOs::SerialMgr::SM::Active::Idle::UART_DMA_START, ~} */ case UART_DMA_START_SIG: /* intentionally fall through */ case CLI_SEND_DATA_SIG: /* intentionally fall through */ case DBG_MENU_SIG: { /* Set up the DMA buffer here. This copies the data from the event to the UART's * private buffer as well to avoid someone overwriting it */ Serial_DMAConfig( SERIAL_UART1, (char *)((LrgDataEvt const *) e)->dataBuf, ((LrgDataEvt const *) e)->dataLen ); status_ = Q_TRAN(&SerialMgr_Busy); break; } /* ${AOs::SerialMgr::SM::Active::Idle::DBG_LOG} */ case DBG_LOG_SIG: { /* ${AOs::SerialMgr::SM::Active::Idle::DBG_LOG::[SerialDbgEnable~} */ if (DBG_IS_DEVICE_ENABLED( _DC3_DBG_DEV_SER )) { /* Set up the DMA buffer here. This copies the data from the event to the UART's * private buffer as well to avoid someone overwriting it */ Serial_DMAConfig( SERIAL_UART1, (char *)((LrgDataEvt const *) e)->dataBuf, ((LrgDataEvt const *) e)->dataLen ); status_ = Q_TRAN(&SerialMgr_Busy); } /* ${AOs::SerialMgr::SM::Active::Idle::DBG_LOG::[else]} */ else { status_ = Q_HANDLED(); } break; } default: { status_ = Q_SUPER(&SerialMgr_Active); break; } } return status_; }
/* @(/1/8/23/1/7/5/5/4) ....................................................*/ static QState QGprs_Idle(QGprs * const me, QEvt const * const e) { QState status_; switch (e->sig) { /* @(/1/8/23/1/7/5/5/4) */ case Q_ENTRY_SIG: { if(me->m_deferedDataReady > 0) { // static const QEvent query_Evt = {AT_DATAQUERY_SIG, 0}; // QACTIVE_POST(me, (QEvt*)&query_Evt, (void*)0); me->m_deferedDataReady --; } else { /* 空闲时检索任务并处理 */ if (QActive_recall((QActive *)me, &me->m_requestQueue)) { TRACE_(GPRS_STAT, &me->super, "Send Request recalled\n"); } else { TRACE_(GPRS_STAT, &me->super, "No deferred send requests\n"); if(me->m_bSleepReq) //先响应休眠请求, { // static const QEvent sleep_Evt = {SLEEP_REQ_SIG, 0}; // QACTIVE_POST(me, (QEvt*)&sleep_Evt, (void*)0); } } } status_ = Q_HANDLED(); break; } /* @(/1/8/23/1/7/5/5/4/0) */ case NEW_TASKSENDREQ_SIG: { /* 组织待发送数据内容,推入发送缓区,准备发送 */ //me->m_SendDataLen = Protocol_FormRawFrame((TaskEvt*)e, me->m_sendBuf, FRAME_BUF_SIZE); me->m_SendDataLen = Protocol_FormRawFrame(Q_EVT_CAST(TaskEvt), me->m_sendBuf, FRAME_BUF_SIZE); status_ = Q_TRAN(&QGprs_TcpSending); break; } /* @(/1/8/23/1/7/5/5/4/1) */ case GPRS_COMMINGCALL_SIG: { status_ = Q_TRAN(&QGprs_PhoneCalling); break; } /* @(/1/8/23/1/7/5/5/4/2) */ case GPRS_COMMINGSMS_SIG: { status_ = Q_TRAN(&QGprs_SMSHandling); break; } /* @(/1/8/23/1/7/5/5/4/3) */ case GPRS_PING_TIMEOUT_SIG: { #if 0 if(me->m_NetState != NET_STATE_SERVERCONNECTED) { //登录连接超时到,发送登录包 TaskEvt *pe = Q_NEW(TaskEvt, NEW_TASKSENDREQ_SIG); pe->cmd = EVS15_CMD_LOGIN; //命令字=登录 pe->sequence = GeneratePacketSequenceNumber(); QACTIVE_POST(me, (QEvt*)pe, (void*)0); } else { TaskEvt *pe = Q_NEW(TaskEvt, NEW_TASKSENDREQ_SIG); pe->cmd = EVS15_CMD_LINKMAINTAIN; //命令字=链路维护 pe->sequence = GeneratePacketSequenceNumber(); QACTIVE_POST(me, (QEvt*)pe, (void*)0); } #endif status_ = Q_HANDLED(); break; } /* @(/1/8/23/1/7/5/5/4/4) */ case AT_DATAQUERY_SIG: { status_ = Q_TRAN(&QGprs_DataQuering); break; } /* @(/1/8/23/1/7/5/5/4/5) */ case SLEEP_REQ_SIG: { TRACE_(QS_USER, NULL, "[GPRS] ----- PowerMgr: SLEEP -----"); me->m_bSleepReq = 0; status_ = Q_TRAN(&QGprs_sleepRequest); break; } default: { status_ = Q_SUPER(&QGprs_connected); break; } } return status_; }