From 2ebb8217f43b69f491620423ea4d5d5944d1f91d Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期六, 05 七月 2025 22:43:58 +0800 Subject: [PATCH] 格式化部分代码 --- keil/include/components/internet/src/AIR780EFSM.c | 1810 +++++++++++++++++++++++++-------------------------------- 1 files changed, 790 insertions(+), 1,020 deletions(-) diff --git a/keil/include/components/internet/src/AIR780EFSM.c b/keil/include/components/internet/src/AIR780EFSM.c index edefa2b..e7a793f 100644 --- a/keil/include/components/internet/src/AIR780EFSM.c +++ b/keil/include/components/internet/src/AIR780EFSM.c @@ -76,86 +76,64 @@ { switch (_u32Event) { - case HIDO_EVENT_ENTRY: + case HIDO_EVENT_ENTRY: + { + break; + } + case HIDO_EVENT_EXIT: + { + break; + } + case HIDO_AT_EVENT_TIMEOUT: + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL); + break; + } + case AIR780E_EVENT_RECEIVE: + { + HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; + HIDO_UINT32 u32ID = 0; + HIDO_UINT8 *pu8Data = HIDO_NULL; + HIDO_UINT32 u32Len = 0; + + if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+RECEIVE,%d,%d:\r\n%e", &u32ID, &u32Len, &pu8Data) + != 3) { break; } - case HIDO_EVENT_EXIT: + + Socket_RecvData(u32ID, pu8Data, u32Len); + Socket_OnRecv(u32ID); + break; + } + case AIR780E_EVENT_NUM_0: + case AIR780E_EVENT_NUM_1: + case AIR780E_EVENT_NUM_2: + case AIR780E_EVENT_NUM_3: + case AIR780E_EVENT_NUM_4: + case AIR780E_EVENT_NUM_5: + { + HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; + HIDO_UINT32 u32ConnectID = 0; + HIDO_DataStruct stEvent; + + if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "%d, %p\r\n", + &u32ConnectID, &stEvent) != 2) { break; } - case HIDO_AT_EVENT_TIMEOUT: + + if (strncmp(stEvent.m_pData, "CLOSED", stEvent.m_u32Len) == 0) { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL); - break; + Socket_OnClosed(u32ConnectID); } - case AIR780E_EVENT_RECEIVE: - { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - HIDO_UINT32 u32ID = 0; - HIDO_UINT8 *pu8Data = HIDO_NULL; - HIDO_UINT32 u32Len = 0; - if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+RECEIVE,%d,%d:\r\n%e", &u32ID, &u32Len, &pu8Data) - != 3) - { - break; - } - - Socket_RecvData(u32ID, pu8Data, u32Len); - Socket_OnRecv(u32ID); - break; - } -#ifdef TTS - case AIR780E_EVENT_QTTS: - { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - - if (strcmp((HIDO_CHAR *) pstData->m_pData, "+CTTS:0\r\n") != 0) - { - break; - } - - AIR780EAudio_TTSOver(); - - break; - } - case AIR780E_EVENT_QLTONE: - { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - - if (strcmp((HIDO_CHAR *) pstData->m_pData, "+QLTONE: 0\r\n") != 0) - { - break; - } - - AIR780EAudio_TONEOver(); - - break; - } - #endif -#ifdef __AIR780E_MQTT__ - case AIR780E_EVENT_QMTRECV: - { - HIDO_UINT32 u32ClientID = 0; - HIDO_UINT32 u32MsgID = 0; - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - - if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+QMTRECV: %d,%d\r\n", - &u32ClientID, &u32MsgID) != 2) - { - break; - } - - MQTT_HaveRecvData(u32ClientID); - - break; - } -#endif - default: - { - return HIDO_EVENT_NO_PROC; - } + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -172,25 +150,25 @@ { switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - break; - } - case HIDO_EVENT_EXIT: - { - break; - } - case HIDO_AT_EVENT_TIMEOUT: - { - /* AT命令相应超时,重新初始化 */ - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL); + case HIDO_EVENT_ENTRY: + { + break; + } + case HIDO_EVENT_EXIT: + { + break; + } + case HIDO_AT_EVENT_TIMEOUT: + { + /* AT命令相应超时,重新初始化 */ + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL); - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -207,34 +185,34 @@ { switch (_u32Event) { - case HIDO_EVENT_ENTRY: + case HIDO_EVENT_ENTRY: + { + AIR780EDriver_PowerOff(); + Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_OFF); + break; + } + case HIDO_EVENT_EXIT: + { + break; + } + case AIR780E_EVENT_POLL: + { + if(Module_NeedPowerOff(MODULE_MAIN) == HIDO_TRUE) { - AIR780EDriver_PowerOff(); Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_OFF); - break; } - case HIDO_EVENT_EXIT: - { - break; - } - case AIR780E_EVENT_POLL: - { - if(Module_NeedPowerOff(MODULE_MAIN) == HIDO_TRUE) - { - Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_OFF); - } - - if(Module_NeedPowerOn(MODULE_MAIN) == HIDO_TRUE) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL); - } - break; - } - default: + if(Module_NeedPowerOn(MODULE_MAIN) == HIDO_TRUE) { - return HIDO_EVENT_NO_PROC; + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL); } + + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -253,8 +231,6 @@ { AIR780E_SUB_STATE_POWER_OFF, AIR780E_SUB_STATE_POWER_ON, - AIR780E_SUB_STATE_PWRKEY_RESET, - AIR780E_SUB_STATE_PWRKEY_SET, } l_eAIR780ESubState; HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData; @@ -262,173 +238,66 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - pstATDevice->m_u32LineLen = 0; - while (pstATDevice->m_fnReadLine(pstATDevice) == HIDO_OK) - { - ; - } - pstATDevice->m_u32LineLen = 0; - - l_eAIR780ESubState = AIR780E_SUB_STATE_POWER_OFF; - AIR780EDriver_PowerOff(); - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(3), _pstFSM, AIR780E_EVENT_DELAY); - break; - } - case HIDO_EVENT_EXIT: - { - /* 退出初始化 */ - HIDO_TimerCancel(u32FSMTimerID); - - break; - } - case AIR780E_EVENT_DELAY: - { - switch(l_eAIR780ESubState) - { - case AIR780E_SUB_STATE_POWER_OFF: - { - l_eAIR780ESubState = AIR780E_SUB_STATE_POWER_ON; - AIR780EDriver_PowerOn(); - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY); - break; - } - case AIR780E_SUB_STATE_POWER_ON: - { - l_eAIR780ESubState = AIR780E_SUB_STATE_PWRKEY_RESET; - AIR780EDriver_PWRKEYReset(); - //Uart_ReConfigBaudRate(UART_ID_4G, 921600); - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY); - break; - } - case AIR780E_SUB_STATE_PWRKEY_RESET: - { - l_eAIR780ESubState = AIR780E_SUB_STATE_PWRKEY_SET; - AIR780EDriver_PWRKEYSet(); - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_MS(800), _pstFSM, AIR780E_EVENT_DELAY); - break; - } - case AIR780E_SUB_STATE_PWRKEY_SET: - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL); - break; - } - } - - break; - } - case AIR780E_EVENT_RDY: - { -#if 0 - HIDO_UINT32 Power_r = 0,Open_PJ,dev_id; - HIDO_CHAR TTS_Open[60]; - - if(Power_GetBatteryPercentage() < 5.0) //低电量自动关机 - { - GPIOD->BSRR = 0x0004; //打开TTS电源 - HAL_Delay(800); //必要延时,延时是为了避免说不出来第一个字 - - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CTTS=2,\"%s\"\r\n", "电量过低"); - HAL_Delay(2000); - - // 调用关机接口 - while(1) - { - GPIOA->BSRR = 0X0100 << 16; - } - } -#endif -#if 0 -// HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+QTTS=2,\"开机\"\r\n"); - Power_r = Power_GetBatteryPercentage(); - - dev_id = ((g_com_map[DEV_ID]>>12)&0xf)*1000+((g_com_map[DEV_ID]>>8)&0xf)*100+((g_com_map[DEV_ID]>>4)&0xf)*10+(g_com_map[DEV_ID]&0xf); - Open_PJ = sprintf(TTS_Open, "设备编号%d剩余电量百分之%d",dev_id, Power_r); - TTS_Play((HIDO_UINT8 *)TTS_Open, strlen(TTS_Open)); -#endif - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } - } - - return HIDO_EVENT_OK; -} - -/******************************************************************************* - * State Name : AIR780EWaitReady - * Parent State : AIR780EInit - * Description : - * Author : www.hido-studio.com - * Modified Date: : 2018-05-01 - *******************************************************************************/ -extern int Last4G; - -HIDO_FSM_STATE_IMPLEMENT(AIR780EWaitReady, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL) -{ - static HIDO_BOOL bReady = HIDO_FALSE; - static HIDO_UINT32 u32RetryCnt = 0,Power_r = 0,Open_PJ,dev_id; - HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData; - HIDO_UINT32 u32FSMTimerID = ((ST_AIR780EDriverData *)pstATDevice->m_pUserData)->m_u32FSMTimerID; - - HIDO_CHAR TTS_Open[60]; - - - switch (_u32Event) + case HIDO_EVENT_ENTRY: { - case HIDO_EVENT_ENTRY: + pstATDevice->m_u32LineLen = 0; + while (pstATDevice->m_fnReadLine(pstATDevice) == HIDO_OK) { - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), - _pstFSM, AIR780E_EVENT_DELAY); + ; + } + pstATDevice->m_u32LineLen = 0; + + l_eAIR780ESubState = AIR780E_SUB_STATE_POWER_OFF; + AIR780EDriver_PowerOff(); + HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY); + break; + } + case HIDO_EVENT_EXIT: + { + /* 退出初始化 */ + HIDO_TimerCancel(u32FSMTimerID); + + break; + } + case AIR780E_EVENT_DELAY: + { + switch(l_eAIR780ESubState) + { + case AIR780E_SUB_STATE_POWER_OFF: + { + l_eAIR780ESubState = AIR780E_SUB_STATE_POWER_ON; + AIR780EDriver_PowerOn(); + HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(5), _pstFSM, AIR780E_EVENT_DELAY); break; } - case HIDO_EVENT_EXIT: - { - HIDO_ATLiteCmdSendOver(pstATDevice); - HIDO_TimerCancel(u32FSMTimerID); - break; - } - case AIR780E_EVENT_RDY: - { -#if 0 - if(Power_GetBatteryPercentage() < 5.0) //低电量自动关机 - { - GPIOD->BSRR = 0x0004; //打开TTS电源 - HAL_Delay(800); //必要延时,延时是为了避免说不出来第一个字 - - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CTTS=2,\"%s\"\r\n", "电量过低"); - HAL_Delay(2000); - - // 调用关机接口 - while(1) - { - GPIOA->BSRR = 0X0100 << 16; - } - } - -// HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+QTTS=2,\"开机\"\r\n"); - Power_r = Power_GetBatteryPercentage(); - - dev_id = ((g_com_map[DEV_ID]>>12)&0xf)*1000+((g_com_map[DEV_ID]>>8)&0xf)*100+((g_com_map[DEV_ID]>>4)&0xf)*10+(g_com_map[DEV_ID]&0xf); - Open_PJ = sprintf(TTS_Open, "设备编号%d剩余电量百分之%d",dev_id, Power_r); - TTS_Play((HIDO_UINT8 *)TTS_Open, strlen(TTS_Open)); -#endif - break; - } - case HIDO_AT_EVENT_OK: - case AIR780E_EVENT_DELAY: - case HIDO_AT_EVENT_TIMEOUT: + case AIR780E_SUB_STATE_POWER_ON: { HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL); + //Uart_ReConfigBaudRate(UART_ID_4G, 115200); + //HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+IPR=9600;&W\r\n"); + //Uart_ReConfigBaudRate(UART_ID_4G, 9600); break; } - default: - { - return HIDO_EVENT_NO_PROC; } + + break; + } + case AIR780E_EVENT_RDY: + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL); + break; + } + case HIDO_AT_EVENT_OK: + case HIDO_AT_EVENT_ERROR: + case HIDO_AT_EVENT_TIMEOUT: + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL); + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -443,150 +312,48 @@ *******************************************************************************/ HIDO_FSM_STATE_IMPLEMENT(AIR780EATCmdTest, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL) { -#define USE_115200 -//#define USE_921600 - static HIDO_UINT32 l_u32ReadyCnt = 0; static HIDO_UINT32 l_u32TimeoutCnt = 0; - static HIDO_UINT32 l_u32BaudRate = 0; - static HIDO_BOOL l_bConfigBaudRate = HIDO_FALSE; HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData; - HIDO_UINT32 u32FSMTimerID = ((ST_AIR780EDriverData *)pstATDevice->m_pUserData)->m_u32FSMTimerID; switch (_u32Event) { - case HIDO_EVENT_ENTRY: + case HIDO_EVENT_ENTRY: + { + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "ATE0\r\n"); + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + break; + } + case HIDO_AT_EVENT_OK: + { + /* 上电成功 */ + Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON); + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EWaitSimCardReady), HIDO_NULL); + + break; + } + case HIDO_AT_EVENT_ERROR: + { + break; + } + case HIDO_AT_EVENT_TIMEOUT: + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL); + l_u32TimeoutCnt++; + if (3 == l_u32TimeoutCnt) { -#ifdef USE_115200 - l_u32BaudRate = 115200; -#else - l_u32BaudRate = 921600; -#endif - - Uart_ReConfigBaudRate(UART_ID_4G, l_u32BaudRate); - - l_bConfigBaudRate = HIDO_FALSE; - l_u32ReadyCnt = 0; - l_u32TimeoutCnt = 0; - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY); - break; + AIR780E_Reset_usart(); } - case HIDO_EVENT_EXIT: - { - HIDO_ATLiteCmdSendOver(pstATDevice); - HIDO_TimerCancel(u32FSMTimerID); - break; - } - case HIDO_AT_EVENT_OK: - { - if (HIDO_TRUE == l_bConfigBaudRate) - { -#ifdef USE_115200 - l_u32BaudRate = 115200; -#else - l_u32BaudRate = 921600; -#endif - Uart_ReConfigBaudRate(UART_ID_4G, l_u32BaudRate); - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY); - break; - } - - l_u32TimeoutCnt = 0; - l_u32ReadyCnt++; - if (l_u32ReadyCnt >= 1) - { -#ifdef USE_115200 - if (921600 == l_u32BaudRate) -#else - if (115200 == l_u32BaudRate) -#endif - { - l_bConfigBaudRate = HIDO_TRUE; -#ifdef USE_115200 - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+IPR=115200;&W\r\n"); -#else - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+IPR=921600;&W\r\n"); -#endif - - } - else - { - /* 上电成功 */ - Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON); - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EWaitSimCardReady), HIDO_NULL); - } - } - else - { - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, - AIR780E_EVENT_DELAY); - } - - break; - } - case HIDO_AT_EVENT_ERROR: - { - break; - } - case HIDO_AT_EVENT_TIMEOUT: - { - l_u32TimeoutCnt++; - l_u32ReadyCnt = 0; - - if (5 == l_u32TimeoutCnt) - { -#ifdef USE_115200 - l_u32BaudRate = 921600; -#else - l_u32BaudRate = 115200; -#endif - Uart_ReConfigBaudRate(UART_ID_4G, l_u32BaudRate); - - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, - AIR780E_EVENT_DELAY); - } - else if (l_u32TimeoutCnt > 10) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL); - } - else - { - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, - AIR780E_EVENT_DELAY); - } - - break; - } - case AIR780E_EVENT_DELAY: - { - if (HIDO_TRUE == l_bConfigBaudRate) - { - /* 上电成功 */ - Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON); - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EWaitSimCardReady), HIDO_NULL); - break; - } - else - { - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "ATE0\r\n"); - } - break; - } - case AIR780E_EVENT_POLL: - { - if(Module_NeedPowerOff(MODULE_MAIN) == HIDO_TRUE) - { - HIDO_FSMStateChange(HIDO_FSM(AIR780E), HIDO_FSM_STATE(AIR780EPowerOff), HIDO_NULL); - - break; - } - - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -601,93 +368,67 @@ *******************************************************************************/ HIDO_FSM_STATE_IMPLEMENT(AIR780EWaitSimCardReady, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL) { - static HIDO_BOOL bReady = HIDO_FALSE; static HIDO_UINT32 u32RetryCnt = 0; HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData; HIDO_UINT32 u32FSMTimerID = ((ST_AIR780EDriverData *)pstATDevice->m_pUserData)->m_u32FSMTimerID; switch (_u32Event) { - case HIDO_EVENT_ENTRY: + case HIDO_EVENT_ENTRY: + { + u32RetryCnt = 0; + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CPIN?\r\n"); + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + HIDO_TimerCancel(u32FSMTimerID); + break; + } + case HIDO_AT_EVENT_OK: + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdInit), HIDO_NULL); + break; + } + case HIDO_AT_EVENT_ERROR: + { + HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), + _pstFSM, AIR780E_EVENT_DELAY); + break; + } + case HIDO_AT_EVENT_TIMEOUT: + { + break; + } + case AIR780E_EVENT_DELAY: + { + if(u32RetryCnt < 10) { - bReady = HIDO_FALSE; - u32RetryCnt = 0; + u32RetryCnt++; HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CPIN?\r\n"); - break; } - case HIDO_EVENT_EXIT: + else { - HIDO_ATLiteCmdSendOver(pstATDevice); - HIDO_TimerCancel(u32FSMTimerID); - break; + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIdle), HIDO_NULL); } - case HIDO_AT_EVENT_OK: + break; + } + case AIR780E_EVENT_POLL: + { + if(Module_NeedPowerOff(MODULE_MAIN) == HIDO_TRUE) { -// HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(3), -// _pstFSM, AIR780E_EVENT_DELAY); - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdInit), HIDO_NULL); - break; - } - case HIDO_AT_EVENT_ERROR: - { - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), - _pstFSM, AIR780E_EVENT_DELAY); - break; - } - case HIDO_AT_EVENT_TIMEOUT: - { - if (HIDO_TRUE == bReady) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdInit), HIDO_NULL); - } - else - { - return HIDO_EVENT_NO_PROC; - } + HIDO_FSMStateChange(HIDO_FSM(AIR780E), HIDO_FSM_STATE(AIR780EPowerOff), HIDO_NULL); break; } - case AIR780E_EVENT_DELAY: - { - if (HIDO_TRUE == bReady) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdInit), HIDO_NULL); - } - else - { - // HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIdle), HIDO_NULL); - if(u32RetryCnt < 10) - { - u32RetryCnt++; - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CPIN?\r\n"); - } - else - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIdle), HIDO_NULL); - } - } - break; - } - case AIR780E_EVENT_CPIN: - { - bReady = HIDO_TRUE; - break; - } - case AIR780E_EVENT_POLL: - { - if(Module_NeedPowerOff(MODULE_MAIN) == HIDO_TRUE) - { - HIDO_FSMStateChange(HIDO_FSM(AIR780E), HIDO_FSM_STATE(AIR780EPowerOff), HIDO_NULL); - break; - } - - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -711,6 +452,7 @@ { "AT+CIMI\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, { "AT+CCID\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, { "ATI\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, + { "AT+CFGRI=1\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, // { "AT+CTTSPARAM=100,0,50,50,0,2,25,1500,150,1,0,1\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, }; @@ -719,50 +461,28 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - l_u32CmdIndex = 0; - l_u32RetryCnt = 0; - HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); - l_u32RetryCnt++; + case HIDO_EVENT_ENTRY: + { + l_u32CmdIndex = 0; + l_u32RetryCnt = 0; + HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); + l_u32RetryCnt++; - break; - } - case HIDO_EVENT_EXIT: + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + HIDO_TimerCancel(u32FSMTimerID); + break; + } + case HIDO_AT_EVENT_OK: + case HIDO_AT_EVENT_ERROR: + case HIDO_AT_EVENT_TIMEOUT: + { + if(HIDO_AT_EVENT_TIMEOUT == _u32Event) { - HIDO_ATLiteCmdSendOver(pstATDevice); - HIDO_TimerCancel(u32FSMTimerID); - break; - } - case HIDO_AT_EVENT_OK: - case HIDO_AT_EVENT_ERROR: - case HIDO_AT_EVENT_TIMEOUT: - { - if(HIDO_AT_EVENT_TIMEOUT == _u32Event) - { - if(astInitCmdList[l_u32CmdIndex].m_u32Result & AT_CMD_RESULT_TIMEOUT) - { - l_u32RetryCnt = 0; - l_u32CmdIndex++; - if (l_u32CmdIndex >= HIDO_ARRARY_COUNT(astInitCmdList)) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EReady), HIDO_NULL); - } - else - { - HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); - } - - break; - } - else - { - return HIDO_EVENT_NO_PROC; - } - } - - if (astInitCmdList[l_u32CmdIndex].m_u32Result - & (HIDO_AT_EVENT_OK == _u32Event ? AT_CMD_RESULT_OK : AT_CMD_RESULT_ERROR)) + if(astInitCmdList[l_u32CmdIndex].m_u32Result & AT_CMD_RESULT_TIMEOUT) { l_u32RetryCnt = 0; l_u32CmdIndex++; @@ -774,83 +494,105 @@ { HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); } - } - else - { - l_u32RetryCnt++; - if (l_u32RetryCnt >= 3) - { - /* 重试超限 */ - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL); - } - else - { - /* 不是期待的结果,10后再次尝试 */ - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), _pstFSM, - AIR780E_EVENT_DELAY); - } - } - - break; - } - case AIR780E_EVENT_DELAY: - { - HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); - break; - } - case AIR780E_EVENT_NUM_0: - case AIR780E_EVENT_NUM_1: - case AIR780E_EVENT_NUM_2: - case AIR780E_EVENT_NUM_3: - case AIR780E_EVENT_NUM_4: - case AIR780E_EVENT_NUM_5: - case AIR780E_EVENT_NUM_6: - case AIR780E_EVENT_NUM_7: - case AIR780E_EVENT_NUM_8: - case AIR780E_EVENT_NUM_9: - { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - - switch(l_u32CmdIndex) - { - case 0: - { - Module_SetIMEI((HIDO_CHAR *)pstData->m_pData, pstData->m_u32Len); - break; - } - case 1: - { - Module_SetIMSI((HIDO_CHAR *)pstData->m_pData, pstData->m_u32Len); - break; - } - case 2: - { - Module_SetCCID((HIDO_CHAR *)pstData->m_pData, pstData->m_u32Len); - break; - } - default: - { - break; - } - } - - break; - } - case AIR780E_EVENT_POLL: - { - if(Module_NeedPowerOff(MODULE_MAIN) == HIDO_TRUE) - { - HIDO_FSMStateChange(HIDO_FSM(AIR780E), HIDO_FSM_STATE(AIR780EPowerOff), HIDO_NULL); break; } + else + { + return HIDO_EVENT_NO_PROC; + } + } + if (astInitCmdList[l_u32CmdIndex].m_u32Result + & (HIDO_AT_EVENT_OK == _u32Event ? AT_CMD_RESULT_OK : AT_CMD_RESULT_ERROR)) + { + l_u32RetryCnt = 0; + l_u32CmdIndex++; + if (l_u32CmdIndex >= HIDO_ARRARY_COUNT(astInitCmdList)) + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EReady), HIDO_NULL); + } + else + { + HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); + } + } + else + { + l_u32RetryCnt++; + if (l_u32RetryCnt >= 3) + { + /* 重试超限 */ + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL); + } + else + { + /* 不是期待的结果,10后再次尝试 */ + HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), _pstFSM, + AIR780E_EVENT_DELAY); + } + } + + break; + } + case AIR780E_EVENT_DELAY: + { + HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); + break; + } + case AIR780E_EVENT_NUM_0: + case AIR780E_EVENT_NUM_1: + case AIR780E_EVENT_NUM_2: + case AIR780E_EVENT_NUM_3: + case AIR780E_EVENT_NUM_4: + case AIR780E_EVENT_NUM_5: + case AIR780E_EVENT_NUM_6: + case AIR780E_EVENT_NUM_7: + case AIR780E_EVENT_NUM_8: + case AIR780E_EVENT_NUM_9: + { + HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; + + switch(l_u32CmdIndex) + { + case 0: + { + Module_SetIMEI((HIDO_CHAR *)pstData->m_pData, pstData->m_u32Len); + break; + } + case 1: + { + Module_SetIMSI((HIDO_CHAR *)pstData->m_pData, pstData->m_u32Len); + break; + } + case 2: + { + Module_SetCCID((HIDO_CHAR *)pstData->m_pData, pstData->m_u32Len); break; } default: { - return HIDO_EVENT_NO_PROC; + break; } + } + + break; + } + case AIR780E_EVENT_POLL: + { + if(Module_NeedPowerOff(MODULE_MAIN) == HIDO_TRUE) + { + HIDO_FSMStateChange(HIDO_FSM(AIR780E), HIDO_FSM_STATE(AIR780EPowerOff), HIDO_NULL); + + break; + } + + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -869,24 +611,24 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - break; - } - case HIDO_EVENT_EXIT: - { - break; - } - case AIR780E_EVENT_POLL: - { - AIR780E_Poll(pstATDevice); + case HIDO_EVENT_ENTRY: + { + break; + } + case HIDO_EVENT_EXIT: + { + break; + } + case AIR780E_EVENT_POLL: + { + AIR780E_Poll(pstATDevice); - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -903,18 +645,18 @@ { switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - break; - } - case HIDO_EVENT_EXIT: - { - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + case HIDO_EVENT_ENTRY: + { + break; + } + case HIDO_EVENT_EXIT: + { + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -945,142 +687,143 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: + case HIDO_EVENT_ENTRY: + { + l_eAIR780ESubState = AIR780E_SUB_STATE_CGREG; + l_u32Cnt = 0; + l_u32RespCode = 0; + l_bATBusy = HIDO_TRUE; + + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CGREG?\r\n"); + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + HIDO_TimerCancel(u32FSMTimerID); + break; + } + case HIDO_AT_EVENT_OK: + { + if (AIR780E_SUB_STATE_CREG == l_eAIR780ESubState) { - l_eAIR780ESubState = AIR780E_SUB_STATE_CREG; - l_u32Cnt = 0; - l_u32RespCode = 0; - l_bATBusy = HIDO_TRUE; - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CREG?\r\n"); - break; - } - case HIDO_EVENT_EXIT: - { - HIDO_ATLiteCmdSendOver(pstATDevice); - HIDO_TimerCancel(u32FSMTimerID); - break; - } - case HIDO_AT_EVENT_OK: - { - if (AIR780E_SUB_STATE_CREG == l_eAIR780ESubState) + l_bATBusy = HIDO_FALSE; + + if (1 == l_u32RespCode || 5 == l_u32RespCode) { - l_bATBusy = HIDO_FALSE; - - if (1 == l_u32RespCode || 5 == l_u32RespCode) - { - l_eAIR780ESubState = AIR780E_SUB_STATE_CGREG; - l_u32Cnt = 0; - l_u32RespCode = 0; - l_bATBusy = HIDO_TRUE; - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CGREG?\r\n"); - } - else - { - l_u32Cnt++; - - if (l_u32Cnt > 100) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL); - break; - } - else - { - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(2), _pstFSM, - AIR780E_EVENT_DELAY); - } - } - } - else if (AIR780E_SUB_STATE_CGREG == l_eAIR780ESubState) - { - l_bATBusy = HIDO_FALSE; - - if (1 == l_u32RespCode || 5 == l_u32RespCode) - { - l_u32ReadyCnt++; - } - else - { - l_u32ReadyCnt = 0; - l_u32Cnt++; - } - - if (l_u32ReadyCnt >= 3) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPInit), HIDO_NULL); - } - else - { - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(2), _pstFSM, - AIR780E_EVENT_DELAY); - } - - if (l_u32Cnt > 100) - { - /* TODO网络出错 */ - } - } - - break; - } - case AIR780E_EVENT_CREG: - { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - - if (AIR780E_SUB_STATE_CREG == l_eAIR780ESubState) - { - if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+CREG: %*,%d", - &l_u32RespCode) != 2) - { - break; - } - } - - break; - } - case AIR780E_EVENT_CGREG: - { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - - if (AIR780E_SUB_STATE_CGREG == l_eAIR780ESubState) - { - if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+CGREG: %*,%d", - &l_u32RespCode) != 2) - { - break; - } - } - break; - } - case AIR780E_EVENT_DELAY: - { - if (AIR780E_SUB_STATE_CREG == l_eAIR780ESubState) - { - l_u32RespCode = 0; - l_bATBusy = HIDO_TRUE; - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CREG?\r\n"); - } - else if (AIR780E_SUB_STATE_CGREG == l_eAIR780ESubState) - { + l_eAIR780ESubState = AIR780E_SUB_STATE_CGREG; + l_u32Cnt = 0; l_u32RespCode = 0; l_bATBusy = HIDO_TRUE; HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CGREG?\r\n"); } - - break; - } - case AIR780E_EVENT_POLL: - { - if (HIDO_FALSE == l_bATBusy) + else { - AIR780E_Poll(pstATDevice); + l_u32Cnt++; + + if (l_u32Cnt > 100) + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL); + break; + } + else + { + HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(2), _pstFSM, + AIR780E_EVENT_DELAY); + } + } + } + else if (AIR780E_SUB_STATE_CGREG == l_eAIR780ESubState) + { + l_bATBusy = HIDO_FALSE; + + if (1 == l_u32RespCode || 5 == l_u32RespCode) + { + l_u32ReadyCnt++; + } + else + { + l_u32ReadyCnt = 0; + l_u32Cnt++; } - break; + if (l_u32ReadyCnt >= 1) + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPInit), HIDO_NULL); + } + else + { + HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(2), _pstFSM, + AIR780E_EVENT_DELAY); + } + + if (l_u32Cnt > 100) + { + /* TODO网络出错 */ + } } - default: + + break; + } + case AIR780E_EVENT_CREG: + { + HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; + + if (AIR780E_SUB_STATE_CREG == l_eAIR780ESubState) { - return HIDO_EVENT_NO_PROC; + if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+CREG: %*,%d", + &l_u32RespCode) != 2) + { + break; + } } + + break; + } + case AIR780E_EVENT_CGREG: + { + HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; + + if (AIR780E_SUB_STATE_CGREG == l_eAIR780ESubState) + { + if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+CGREG: %*,%d", + &l_u32RespCode) != 2) + { + break; + } + } + break; + } + case AIR780E_EVENT_DELAY: + { + if (AIR780E_SUB_STATE_CREG == l_eAIR780ESubState) + { + l_u32RespCode = 0; + l_bATBusy = HIDO_TRUE; + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CREG?\r\n"); + } + else if (AIR780E_SUB_STATE_CGREG == l_eAIR780ESubState) + { + l_u32RespCode = 0; + l_bATBusy = HIDO_TRUE; + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CGREG?\r\n"); + } + + break; + } + case AIR780E_EVENT_POLL: + { + if (HIDO_FALSE == l_bATBusy) + { + AIR780E_Poll(pstATDevice); + } + + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -1105,11 +848,18 @@ const ST_ATCmd astInitCmdList[] = { - { "AT+CIPRXF=1\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, - { "AT+CIPMUX=1\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, - { "AT+CSTT=\"%s\",\"\",\"\"\r\n", 60000, AT_CMD_RESULT_OK | AT_CMD_RESULT_ERROR }, - { "AT+CIICR\r\n", 60000, AT_CMD_RESULT_OK | AT_CMD_RESULT_ERROR }, - { "AT+CIFSR\r\n", 1000, AT_CMD_RESULT_OK | AT_CMD_RESULT_TIMEOUT }, + { "AT+CIPRXF=1\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, + { "AT+CIPMUX=1\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, + { "AT*I\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, +// { "AT+CSTT=\"%s\",\"\",\"\"\r\n", 60000, AT_CMD_RESULT_OK | AT_CMD_RESULT_ERROR }, +// { "AT+CIICR\r\n", 60000, AT_CMD_RESULT_OK | AT_CMD_RESULT_ERROR }, +// { "AT+CIFSR\r\n", 1000, AT_CMD_RESULT_OK | AT_CMD_RESULT_TIMEOUT }, +#ifdef _4G_115200 + +#else + { "AT+POWERMODE=\"PRO\"\r\n", 5000, AT_CMD_RESULT_OK | AT_CMD_RESULT_TIMEOUT }, + { "AT+POWERMODE?\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK }, +#endif }; pcIMSI = Module_GetIMSI(); @@ -1132,50 +882,28 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - l_u32CmdIndex = 0; - l_u32RetryCnt = 0; - HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); - l_u32RetryCnt++; + case HIDO_EVENT_ENTRY: + { + l_u32CmdIndex = 0; + l_u32RetryCnt = 0; + HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd); + l_u32RetryCnt++; - break; - } - case HIDO_EVENT_EXIT: + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + HIDO_TimerCancel(u32FSMTimerID); + break; + } + case HIDO_AT_EVENT_OK: + case HIDO_AT_EVENT_ERROR: + case HIDO_AT_EVENT_TIMEOUT: + { + if(HIDO_AT_EVENT_TIMEOUT == _u32Event) { - HIDO_ATLiteCmdSendOver(pstATDevice); - HIDO_TimerCancel(u32FSMTimerID); - break; - } - case HIDO_AT_EVENT_OK: - case HIDO_AT_EVENT_ERROR: - case HIDO_AT_EVENT_TIMEOUT: - { - if(HIDO_AT_EVENT_TIMEOUT == _u32Event) - { - if(astInitCmdList[l_u32CmdIndex].m_u32Result & AT_CMD_RESULT_TIMEOUT) - { - l_u32RetryCnt = 0; - l_u32CmdIndex++; - if (l_u32CmdIndex >= HIDO_ARRARY_COUNT(astInitCmdList)) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPReady), HIDO_NULL); - } - else - { - HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd, acAPN); - } - - break; - } - else - { - return HIDO_EVENT_NO_PROC; - } - } - - if((HIDO_AT_EVENT_OK == _u32Event && (astInitCmdList[l_u32CmdIndex].m_u32Result & AT_CMD_RESULT_OK)) - || (HIDO_AT_EVENT_ERROR == _u32Event && (astInitCmdList[l_u32CmdIndex].m_u32Result & AT_CMD_RESULT_ERROR))) + if(astInitCmdList[l_u32CmdIndex].m_u32Result & AT_CMD_RESULT_TIMEOUT) { l_u32RetryCnt = 0; l_u32CmdIndex++; @@ -1187,38 +915,78 @@ { HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd, acAPN); } + + break; } else { - l_u32RetryCnt++; - if (l_u32RetryCnt >= 3) - { - /* 重试超限 */ - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780E), HIDO_NULL); - } - else - { - /* 不是期待的结果,10后再次尝试 */ - HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), _pstFSM, - AIR780E_EVENT_DELAY); - } + return HIDO_EVENT_NO_PROC; } + } +ok: + if((HIDO_AT_EVENT_OK == _u32Event && (astInitCmdList[l_u32CmdIndex].m_u32Result & AT_CMD_RESULT_OK)) + || (HIDO_AT_EVENT_ERROR == _u32Event && (astInitCmdList[l_u32CmdIndex].m_u32Result & AT_CMD_RESULT_ERROR))) + { + l_u32RetryCnt = 0; + l_u32CmdIndex++; + if (l_u32CmdIndex >= HIDO_ARRARY_COUNT(astInitCmdList)) + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPReady), HIDO_NULL); + } + else + { + HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd, acAPN); + } + } + else + { + l_u32RetryCnt++; + if (l_u32RetryCnt >= 3) + { + /* 重试超限 */ + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780E), HIDO_NULL); + } + else + { + /* 不是期待的结果,10后再次尝试 */ + HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), _pstFSM, + AIR780E_EVENT_DELAY); + } + } - break; - } - case AIR780E_EVENT_DELAY: + break; + } + case AIR780E_EVENT_DELAY: + { + HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd, acAPN); + break; + } + case AIR780E_EVENT_POLL: + { + break; + } + case AIR780E_EVENT_NUM_0: + case AIR780E_EVENT_NUM_1: + case AIR780E_EVENT_NUM_2: + case AIR780E_EVENT_NUM_3: + case AIR780E_EVENT_NUM_4: + case AIR780E_EVENT_NUM_5: + case AIR780E_EVENT_NUM_6: + case AIR780E_EVENT_NUM_7: + case AIR780E_EVENT_NUM_8: + case AIR780E_EVENT_NUM_9: + { + if(l_u32CmdIndex == 4) { - HIDO_ATLiteCmdSend(pstATDevice, astInitCmdList[l_u32CmdIndex].m_u32TimeOut, astInitCmdList[l_u32CmdIndex].m_pcATCmd, acAPN); - break; + _u32Event = HIDO_AT_EVENT_OK; + goto ok; } - case AIR780E_EVENT_POLL: - { - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -1235,79 +1003,79 @@ { switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - break; - } - case HIDO_EVENT_EXIT: - { - Socket_ClosedAll(); + case HIDO_EVENT_ENTRY: + { + break; + } + case HIDO_EVENT_EXIT: + { + Socket_ClosedAll(); #ifdef __AIR780E_MQTT__ - MQTT_ClosedAll(); + MQTT_ClosedAll(); #endif - break; - } - case AIR780E_EVENT_POLL: - { - break; - } - case HIDO_AT_EVENT_TIMEOUT: - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL); - break; - } - case AIR780E_EVENT_CLOSE: - { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - HIDO_UINT32 u32ID = 0; + break; + } + case AIR780E_EVENT_POLL: + { + break; + } + case HIDO_AT_EVENT_TIMEOUT: + { + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL); + break; + } + case AIR780E_EVENT_CLOSE: + { + HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; + HIDO_UINT32 u32ID = 0; - if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+QIURC: \"closed\",%d\r\n", &u32ID) != 1) - { - break; - } - - Socket_OnClosed(u32ID); - - break; - } - case AIR780E_EVENT_PDPDEACT: + if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+QIURC: \"closed\",%d\r\n", &u32ID) != 1) { - l_bDeact = HIDO_TRUE; break; } + + Socket_OnClosed(u32ID); + + break; + } + case AIR780E_EVENT_PDPDEACT: + { + l_bDeact = HIDO_TRUE; + break; + } #ifdef __AIR780E_MQTT__ - case AIR780E_EVENT_QMTSTAT: + case AIR780E_EVENT_QMTSTAT: + { + HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; + HIDO_UINT32 u32Err = 0; + HIDO_UINT32 u32ClientID = 0; + + if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+QMTSTAT: %d,%d\r\n", + &u32ClientID, &u32Err) != 2) { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - HIDO_UINT32 u32Err = 0; - HIDO_UINT32 u32ClientID = 0; - - if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+QMTSTAT: %d,%d\r\n", - &u32ClientID, &u32Err) != 2) - { - break; - } - - if(u32Err != 0) - { - MQTT_OnClosed(u32ClientID); - - break; - } - - break; + break; } - case AIR780E_EVENT_QMTPUBEX: + + if(u32Err != 0) { - AIR780EMQTT_SendAck((HIDO_DataStruct *) _pArg); + MQTT_OnClosed(u32ClientID); break; } + + break; + } + case AIR780E_EVENT_QMTPUBEX: + { + AIR780EMQTT_SendAck((HIDO_DataStruct *) _pArg); + + break; + } #endif - default: - { - return HIDO_EVENT_NO_PROC; - } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -1326,34 +1094,34 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: + case HIDO_EVENT_ENTRY: + { + break; + } + case HIDO_EVENT_EXIT: + { + break; + } + case AIR780E_EVENT_POLL: + { + if (HIDO_TRUE == l_bDeact) { + l_bDeact = HIDO_FALSE; + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EReady), HIDO_NULL); break; } - case HIDO_EVENT_EXIT: - { - break; - } - case AIR780E_EVENT_POLL: - { - if (HIDO_TRUE == l_bDeact) - { - l_bDeact = HIDO_FALSE; - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EReady), HIDO_NULL); - break; - } - if(AIR780E_PollOnIPReady(pstATDevice) == HIDO_OK) - { - break; - } - + if(AIR780E_PollOnIPReady(pstATDevice) == HIDO_OK) + { break; } - default: - { - return HIDO_EVENT_NO_PROC; - } + + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -1373,45 +1141,45 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: + case HIDO_EVENT_ENTRY: + { + l_u32CGATT = 0; + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CGATT?\r\n"); + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + break; + } + case HIDO_AT_EVENT_OK: + { + if (1 == l_u32CGATT) { - l_u32CGATT = 0; - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CGATT?\r\n"); - break; + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPPoll), HIDO_NULL); } - case HIDO_EVENT_EXIT: + else { - HIDO_ATLiteCmdSendOver(pstATDevice); - break; + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EReady), HIDO_NULL); } - case HIDO_AT_EVENT_OK: - { - if (1 == l_u32CGATT) - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPPoll), HIDO_NULL); - } - else - { - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EReady), HIDO_NULL); - } - break; - } - case AIR780E_EVENT_CGATT: + break; + } + case AIR780E_EVENT_CGATT: + { + HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; + + if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+CGATT: %d", &l_u32CGATT) == 1) { - HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg; - if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+CGATT: %d", &l_u32CGATT) == 1) - { - - } - - break; } - default: - { - return HIDO_EVENT_NO_PROC; - } + + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -1430,28 +1198,28 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "%s\r\n", Module_GetRunATCmd()); - break; - } - case HIDO_EVENT_EXIT: - { - HIDO_ATLiteCmdSendOver(pstATDevice); - break; - } - case HIDO_AT_EVENT_OK: - case HIDO_AT_EVENT_ERROR: - case HIDO_AT_EVENT_TIMEOUT: - { - Module_RunATCmdResult((HIDO_DataStruct *)_pArg); - HIDO_FSMStateChange(_pstFSM, l_stStateArg.m_pstAfterState, HIDO_NULL); - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + case HIDO_EVENT_ENTRY: + { + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "%s\r\n", Module_GetRunATCmd()); + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + break; + } + case HIDO_AT_EVENT_OK: + case HIDO_AT_EVENT_ERROR: + case HIDO_AT_EVENT_TIMEOUT: + { + Module_RunATCmdResult((HIDO_DataStruct *)_pArg); + HIDO_FSMStateChange(_pstFSM, l_stStateArg.m_pstAfterState, HIDO_NULL); + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -1470,27 +1238,27 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CFUN=0\r\n"); - break; - } - case HIDO_EVENT_EXIT: - { - HIDO_ATLiteCmdSendOver(pstATDevice); - break; - } - case HIDO_AT_EVENT_OK: - case HIDO_AT_EVENT_ERROR: - { - Module_PowerEvent(MODULE_GSM, MODULE_STATE_POWER_OFF); - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIdle), HIDO_NULL); - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + case HIDO_EVENT_ENTRY: + { + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CFUN=0\r\n"); + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + break; + } + case HIDO_AT_EVENT_OK: + case HIDO_AT_EVENT_ERROR: + { + Module_PowerEvent(MODULE_GSM, MODULE_STATE_POWER_OFF); + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIdle), HIDO_NULL); + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -1509,27 +1277,27 @@ switch (_u32Event) { - case HIDO_EVENT_ENTRY: - { - HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CFUN=1\r\n"); - break; - } - case HIDO_EVENT_EXIT: - { - HIDO_ATLiteCmdSendOver(pstATDevice); - break; - } - case HIDO_AT_EVENT_OK: - case HIDO_AT_EVENT_ERROR: - { - Module_PowerEvent(MODULE_GSM, MODULE_STATE_POWER_ON); - HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EReady), HIDO_NULL); - break; - } - default: - { - return HIDO_EVENT_NO_PROC; - } + case HIDO_EVENT_ENTRY: + { + HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CFUN=1\r\n"); + break; + } + case HIDO_EVENT_EXIT: + { + HIDO_ATLiteCmdSendOver(pstATDevice); + break; + } + case HIDO_AT_EVENT_OK: + case HIDO_AT_EVENT_ERROR: + { + Module_PowerEvent(MODULE_GSM, MODULE_STATE_POWER_ON); + HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EReady), HIDO_NULL); + break; + } + default: + { + return HIDO_EVENT_NO_PROC; + } } return HIDO_EVENT_OK; @@ -1571,17 +1339,17 @@ *******************************************************************************/ static HIDO_INT32 AIR780E_RunATCmdPoll(HIDO_ATLiteDeviceStruct *_pstATDevice) { - if(Module_RunATCmdEnable() == HIDO_TRUE) - { - l_stStateArg.m_pArg = HIDO_NULL; - l_stStateArg.m_pstAfterState = _pstATDevice->m_pstFSM->m_pstCurrentState; - HIDO_FSM_DETACHED_STATE_SETTLE(AIR780ERunATCmd, _pstATDevice->m_pstFSM->m_pstCurrentState->m_pstParent, HIDO_NULL); - HIDO_FSMStateChange(_pstATDevice->m_pstFSM, HIDO_FSM_STATE(AIR780ERunATCmd), HIDO_NULL); + if(Module_RunATCmdEnable() == HIDO_TRUE) + { + l_stStateArg.m_pArg = HIDO_NULL; + l_stStateArg.m_pstAfterState = _pstATDevice->m_pstFSM->m_pstCurrentState; + HIDO_FSM_DETACHED_STATE_SETTLE(AIR780ERunATCmd, _pstATDevice->m_pstFSM->m_pstCurrentState->m_pstParent, HIDO_NULL); + HIDO_FSMStateChange(_pstATDevice->m_pstFSM, HIDO_FSM_STATE(AIR780ERunATCmd), HIDO_NULL); - return HIDO_OK; - } + return HIDO_OK; + } - return HIDO_ERR; + return HIDO_ERR; } /******************************************************************************* @@ -1595,17 +1363,17 @@ *******************************************************************************/ static HIDO_INT32 AIR780E_CloseWirelessPoll(HIDO_ATLiteDeviceStruct *_pstATDevice) { - if(Module_NeedPowerOff(MODULE_GSM) == HIDO_TRUE) - { - l_stStateArg.m_pArg = HIDO_NULL; - l_stStateArg.m_pstAfterState = _pstATDevice->m_pstFSM->m_pstCurrentState; - HIDO_FSM_DETACHED_STATE_SETTLE(AIR780ECloseWireless, _pstATDevice->m_pstFSM->m_pstCurrentState->m_pstParent, HIDO_NULL); - HIDO_FSMStateChange(_pstATDevice->m_pstFSM, HIDO_FSM_STATE(AIR780ECloseWireless), HIDO_NULL); + if(Module_NeedPowerOff(MODULE_GSM) == HIDO_TRUE) + { + l_stStateArg.m_pArg = HIDO_NULL; + l_stStateArg.m_pstAfterState = _pstATDevice->m_pstFSM->m_pstCurrentState; + HIDO_FSM_DETACHED_STATE_SETTLE(AIR780ECloseWireless, _pstATDevice->m_pstFSM->m_pstCurrentState->m_pstParent, HIDO_NULL); + HIDO_FSMStateChange(_pstATDevice->m_pstFSM, HIDO_FSM_STATE(AIR780ECloseWireless), HIDO_NULL); - return HIDO_OK; - } + return HIDO_OK; + } - return HIDO_ERR; + return HIDO_ERR; } /******************************************************************************* @@ -1619,17 +1387,17 @@ *******************************************************************************/ static HIDO_INT32 AIR780E_OpenWirelessPoll(HIDO_ATLiteDeviceStruct *_pstATDevice) { - if(Module_NeedPowerOn(MODULE_GSM) == HIDO_TRUE) - { - l_stStateArg.m_pArg = HIDO_NULL; - l_stStateArg.m_pstAfterState = _pstATDevice->m_pstFSM->m_pstCurrentState; - HIDO_FSM_DETACHED_STATE_SETTLE(AIR780EOpenWireless, _pstATDevice->m_pstFSM->m_pstCurrentState->m_pstParent, HIDO_NULL); - HIDO_FSMStateChange(_pstATDevice->m_pstFSM, HIDO_FSM_STATE(AIR780EOpenWireless), HIDO_NULL); + if(Module_NeedPowerOn(MODULE_GSM) == HIDO_TRUE) + { + l_stStateArg.m_pArg = HIDO_NULL; + l_stStateArg.m_pstAfterState = _pstATDevice->m_pstFSM->m_pstCurrentState; + HIDO_FSM_DETACHED_STATE_SETTLE(AIR780EOpenWireless, _pstATDevice->m_pstFSM->m_pstCurrentState->m_pstParent, HIDO_NULL); + HIDO_FSMStateChange(_pstATDevice->m_pstFSM, HIDO_FSM_STATE(AIR780EOpenWireless), HIDO_NULL); - return HIDO_OK; - } + return HIDO_OK; + } - return HIDO_ERR; + return HIDO_ERR; } /******************************************************************************* @@ -1664,7 +1432,7 @@ return HIDO_OK; } #endif - + /* CSQ */ if (AIR780ECSQ_Poll(_pstATDevice) == HIDO_OK) { @@ -1718,7 +1486,7 @@ } #ifdef __AIR780E_GNSS__ - /* GNSS */ + /* GNSS */ if(AIR780EGNSS_Poll(_pstATDevice) == HIDO_OK) { return HIDO_OK; @@ -1732,7 +1500,7 @@ return HIDO_OK; } #endif - + /* Socket */ if (AIR780ESocket_Poll(_pstATDevice) == HIDO_OK) { @@ -1760,12 +1528,14 @@ return HIDO_OK; } +#if 0 if ((u32CurTick - l_u32IPCheckTick) > HIDO_TIMER_TICK_S(10)) { l_u32IPCheckTick = u32CurTick; HIDO_FSMStateChange(HIDO_FSM(AIR780E), HIDO_FSM_STATE(AIR780EIPCheck), HIDO_NULL); return HIDO_OK; } +#endif /* RunATCmd */ if (AIR780E_RunATCmdPoll(_pstATDevice) == HIDO_OK) @@ -1783,7 +1553,7 @@ { return HIDO_OK; } - + #ifdef __AIR780E_FILE__ if (AIR780EFile_Poll(_pstATDevice) == HIDO_OK) { -- Gitblit v1.9.3