/******************************************************************************* * 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; }