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