From 0653ca795e4f47ae39e7f760fd235baf706342ff Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期五, 25 四月 2025 14:57:10 +0800
Subject: [PATCH] N303 功耗140ma 带PA常开接收,4G低功耗,添加了低功耗日志查询,休眠700微安修改了精致休眠唤醒bug

---
 keil/include/components/internet/src/AIR780EFSM.c |  163 ++++++++++++++++++++++++++----------------------------
 1 files changed, 79 insertions(+), 84 deletions(-)

diff --git a/keil/include/components/internet/src/AIR780EFSM.c b/keil/include/components/internet/src/AIR780EFSM.c
index 619c33e..8452c29 100644
--- a/keil/include/components/internet/src/AIR780EFSM.c
+++ b/keil/include/components/internet/src/AIR780EFSM.c
@@ -106,6 +106,30 @@
 			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;
+            }
+
+            if (strncmp(stEvent.m_pData, "CLOSED", stEvent.m_u32Len) == 0)
+            {
+                Socket_OnClosed(u32ConnectID);
+            }
+
+            break;
+        }
         default:
         {
             return HIDO_EVENT_NO_PROC;
@@ -243,12 +267,15 @@
                 {
                     l_eAIR780ESubState = AIR780E_SUB_STATE_POWER_ON;
                     AIR780EDriver_PowerOn();
-                    HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), _pstFSM, AIR780E_EVENT_DELAY);
+                    HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(5), _pstFSM, AIR780E_EVENT_DELAY);
                     break;
                 }
                 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;
                 }
             }
@@ -256,6 +283,13 @@
             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;
@@ -278,41 +312,26 @@
  *******************************************************************************/
 HIDO_FSM_STATE_IMPLEMENT(AIR780EATCmdTest, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL)
 {
-    static HIDO_UINT32 l_u32ReadyCnt = 0;
-    static HIDO_UINT32 l_u32TimeoutCnt = 0;
+	static HIDO_UINT32 l_u32TimeoutCnt = 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:
         {
-            l_u32ReadyCnt = 0;
-            l_u32TimeoutCnt = 0;
-            HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(1), _pstFSM, AIR780E_EVENT_DELAY);
+            HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "ATE0\r\n");
             break;
         }
         case HIDO_EVENT_EXIT:
         {
             HIDO_ATLiteCmdSendOver(pstATDevice);
-            HIDO_TimerCancel(u32FSMTimerID);
             break;
         }
         case HIDO_AT_EVENT_OK:
         {
-            l_u32TimeoutCnt = 0;
-            l_u32ReadyCnt++;
-            if (l_u32ReadyCnt >= 1)
-            {
-                /* 上电成功 */
-                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);
-            }
+            /* 上电成功 */
+            Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON);
+            HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EWaitSimCardReady), HIDO_NULL);
 
             break;
         }
@@ -321,36 +340,14 @@
             break;
         }
         case HIDO_AT_EVENT_TIMEOUT:
-        {
-            l_u32TimeoutCnt++;
-            l_u32ReadyCnt = 0;
-
-            if (5 == l_u32TimeoutCnt)
-            {
-                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:
-        {
-            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;
-            }
-
+        { 
+            HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL);
+						l_u32TimeoutCnt++;
+//					 if (5 == l_u32TimeoutCnt)
+//            {
+//							AIR780E_Reset();
+//						}
+					
             break;
         }
         default:
@@ -371,7 +368,6 @@
  *******************************************************************************/
 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;
@@ -380,7 +376,6 @@
     {
         case HIDO_EVENT_ENTRY:
         {
-            bReady = HIDO_FALSE;
             u32RetryCnt = 0;
             HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CPIN?\r\n");
             break;
@@ -393,8 +388,6 @@
         }
         case HIDO_AT_EVENT_OK:
         {
-//            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;
         }
@@ -406,41 +399,19 @@
         }
         case HIDO_AT_EVENT_TIMEOUT:
         {
-            if (HIDO_TRUE == bReady)
-            {
-                HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdInit), HIDO_NULL);
-            }
-            else
-            {
-                return HIDO_EVENT_NO_PROC;
-            }
-
             break;
         }
         case AIR780E_EVENT_DELAY:
         {
-            if (HIDO_TRUE == bReady)
+            if(u32RetryCnt < 10)
             {
-                HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdInit), HIDO_NULL);
+                u32RetryCnt++;
+                HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CPIN?\r\n");
             }
             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);
-                }
+                HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIdle), HIDO_NULL);
             }
-            break;
-        }
-        case AIR780E_EVENT_CPIN:
-        {
-            bReady = HIDO_TRUE;
             break;
         }
         case AIR780E_EVENT_POLL:
@@ -481,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 },
     };
 
@@ -774,7 +746,7 @@
                     l_u32Cnt++;
                 }
 
-                if (l_u32ReadyCnt >= 3)
+                if (l_u32ReadyCnt >= 1)
                 {
                     HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPInit), HIDO_NULL);
                 }
@@ -877,9 +849,12 @@
     {
             { "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 },
+            { "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 },
     };
 
     pcIMSI = Module_GetIMSI();
@@ -943,7 +918,7 @@
                     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)))
             {
@@ -983,6 +958,24 @@
         }
         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)
+            {
+                _u32Event = HIDO_AT_EVENT_OK;
+                goto ok;
+            }
             break;
         }
         default:
@@ -1530,13 +1523,15 @@
         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)
     {

--
Gitblit v1.9.3