Beispiel #1
0
/*${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_;
}
Beispiel #2
0
/* @(/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_;
}