chen
2025-05-15 67ca69985af9109a0603a1cde71f21b940c059ff
keil/include/components/internet/src/AIR780ECSQ.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,148 @@
/*******************************************************************************
 * File Name         : AIR780ELBS.c
 * Description       :
 * Created on        : 2018å¹´5月23日
 * Author            : æœé”®
 *******************************************************************************/
/*******************************************************************************
 *                              Include Files                                  *
 *******************************************************************************/
#include "AIR780ECSQ.h"
#include "string.h"
#include "stdlib.h"
#include "Module.h"
#include "Module.h"
#include "AIR780EDriver.h"
#include "AIR780EFSM.h"
#include "HIDO_Util.h"
#include "HIDO_FSM.h"
#include "HIDO_Timer.h"
#include "HIDO_ATLite.h"
#include "HIDO_Debug.h"
#include "ATConfig.h"
/*******************************************************************************
 *                                  Macro                                      *
 *******************************************************************************/
/*******************************************************************************
 *                             Type Definition                                 *
 *******************************************************************************/
/*******************************************************************************
 *                             Local Variable                                  *
 *******************************************************************************/
HIDO_FSM_DETACHED_STATE(AIR780ECSQ)
/*******************************************************************************
 *                        Local Function Declaration                           *
 *******************************************************************************/
/*******************************************************************************
 *                             Local Function                                  *
 *******************************************************************************/
/*******************************************************************************
 * State Name        : AIR780ECSQ
 * Parent State      :
 * Description       :
 * Author            : æœé”®
 * Modified Date:    : 2018-05-01
 *******************************************************************************/
HIDO_FSM_DETACHED_STATE_IMPLEMENT(AIR780ECSQ, HIDO_NULL, HIDO_NULL)
{
    static const HIDO_StateStruct *l_pstAfterState = HIDO_NULL;
    HIDO_ATLiteDeviceStruct *_pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData;
    switch (_u32Event)
    {
        case HIDO_EVENT_ENTRY:
        {
            HIDO_StateArgStruct *pstStateArg = (HIDO_StateArgStruct *)_pArg;
            l_pstAfterState = pstStateArg->m_pstAfterState;
            HIDO_ATLiteCmdSend(_pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CSQ\r\n");
            break;
        }
        case HIDO_EVENT_EXIT:
        {
            HIDO_ATLiteCmdSendOver(_pstATDevice);
            break;
        }
        case HIDO_AT_EVENT_OK:
        case HIDO_AT_EVENT_ERROR:
        {
            HIDO_FSMStateChange(_pstFSM, l_pstAfterState, HIDO_NULL);
            break;
        }
        case AIR780E_EVENT_CSQ:
        {
            /* +CSQ: 0,31 */
            HIDO_UINT32 u32CSQResult = 0;
            HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg;
            if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+CSQ: %d,%*\r\n",
                    &u32CSQResult)!= 2)
            {
                break;
            }
            Module_SignalIntensityResult(u32CSQResult);
            break;
        }
        default:
        {
            return HIDO_EVENT_NO_PROC;
        }
    }
    return HIDO_EVENT_OK;
}
/*******************************************************************************
 *                             Global Function                                 *
 *******************************************************************************/
/*******************************************************************************
 * Function Name     : AIR780ECSQ_Poll
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : æœé”®
 * Modified Date:    : 2018å¹´5月22日
 *******************************************************************************/
HIDO_INT32 AIR780ECSQ_Poll(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
    if (Module_SignalIntensityNeedRequest() == HIDO_TRUE)
    {
        AIR780ECSQ_Get(_pstATDevice);
        return HIDO_OK;
    }
    return HIDO_ERR;
}
/*******************************************************************************
 * Function Name     : AIR780ECSQ_Poll
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : æœé”®
 * Modified Date:    : 2018å¹´5月22日
 *******************************************************************************/
HIDO_INT32 AIR780ECSQ_Get(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
    HIDO_StateArgStruct stStateArg;
    stStateArg.m_pArg = HIDO_NULL;
    stStateArg.m_pstAfterState = _pstATDevice->m_pstFSM->m_pstCurrentState;
    HIDO_FSM_DETACHED_STATE_SETTLE(AIR780ECSQ, _pstATDevice->m_pstFSM->m_pstCurrentState->m_pstParent, HIDO_NULL);
    HIDO_FSMStateChange(_pstATDevice->m_pstFSM, HIDO_FSM_STATE(AIR780ECSQ), &stStateArg);
    return HIDO_OK;
}