From 3ec132c58bc4130f79390cebca35c176173cb67c Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期三, 12 三月 2025 15:23:26 +0800
Subject: [PATCH] 11111111111111

---
 keil/include/components/internet/src/AIR780ESocket.c |  105 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 98 insertions(+), 7 deletions(-)

diff --git a/keil/include/components/internet/src/AIR780ESocket.c b/keil/include/components/internet/src/AIR780ESocket.c
index 5111629..82bee1c 100644
--- a/keil/include/components/internet/src/AIR780ESocket.c
+++ b/keil/include/components/internet/src/AIR780ESocket.c
@@ -38,6 +38,8 @@
 HIDO_FSM_STATE_FULL_DECLARE(AIR780EIPReady, AIR780ESocketClose)                       /* SOCKET关闭状态 */
 HIDO_FSM_STATE_FULL_DECLARE(AIR780EIPReady, AIR780ESocketSendData)                    /* SOCKET发送数据状态 */
 HIDO_FSM_STATE_FULL_DECLARE(AIR780EIPReady, AIR780ESocketSendAck)
+HIDO_FSM_STATE_FULL_DECLARE(AIR780EIPReady, AIR780ESocketHeartConfig)
+HIDO_FSM_STATE_FULL_DECLARE(AIR780EIPReady, AIR780ESocketHeartbeat)
 
 static HIDO_BOOL l_abSocketUnAck[SOCKET_NUM];
 static HIDO_UINT32 l_au32SocketUnAckTick[SOCKET_NUM];
@@ -56,14 +58,95 @@
  *******************************************************************************/
 
 /*******************************************************************************
+ * State Name        : AIR780ESocketHeartConfig
+ * Parent State      : AIR780E
+ * Description       :
+ * Author            : 杜键
+ * Modified Date:    : 2018-05-01
+ *******************************************************************************/
+HIDO_FSM_STATE_IMPLEMENT(AIR780ESocketHeartConfig, HIDO_FSM_STATE(AIR780EIPReady), HIDO_NULL)
+{
+    HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData;
+    static HIDO_INT32 l_i32SocketID = 0;
+
+    switch (_u32Event)
+    {
+        case HIDO_EVENT_ENTRY:
+        {
+            l_i32SocketID = (HIDO_INT32) _pArg;
+            HIDO_ATLiteCmdSend(pstATDevice, HIDO_TIMER_TICK_S(30), "AT^HEARTCONFIG=1,%d,%u\r\n", l_i32SocketID, Socket_GetHeartbeatFreq(l_i32SocketID));
+            break;
+        }
+        case HIDO_EVENT_EXIT:
+        {
+            HIDO_ATLiteCmdSendOver(pstATDevice);
+            break;
+        }
+        case HIDO_AT_EVENT_ERROR:
+        case HIDO_AT_EVENT_OK:
+        {
+
+            HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780ESocketHeartbeat), HIDO_NULL);
+            break;
+        }
+        default:
+        {
+            return HIDO_EVENT_NO_PROC;
+        }
+    }
+
+    return HIDO_EVENT_OK;
+}
+
+/*******************************************************************************
+ * State Name        : AIR780ESocketHeartbeat
+ * Parent State      : AIR780E
+ * Description       :
+ * Author            : 杜键
+ * Modified Date:    : 2018-05-01
+ *******************************************************************************/
+HIDO_FSM_STATE_IMPLEMENT(AIR780ESocketHeartbeat, HIDO_FSM_STATE(AIR780EIPReady), HIDO_NULL)
+{
+    HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *) _pstFSM->m_pPrivateData;
+    static HIDO_INT32 l_i32SocketID = 0;
+
+    switch (_u32Event)
+    {
+        case HIDO_EVENT_ENTRY:
+        {
+            l_i32SocketID = (HIDO_INT32) _pArg;
+            HIDO_ATLiteCmdSend(pstATDevice, HIDO_TIMER_TICK_S(30), "AT^HEARTBEATHEX=%d,%u,%s\r\n", l_i32SocketID,
+                    strlen(Socket_GetHeartbeatData(l_i32SocketID)) / 2, Socket_GetHeartbeatData(l_i32SocketID));
+            break;
+        }
+        case HIDO_EVENT_EXIT:
+        {
+            HIDO_ATLiteCmdSendOver(pstATDevice);
+            break;
+        }
+        case HIDO_AT_EVENT_ERROR:
+        case HIDO_AT_EVENT_OK:
+        {
+
+            HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPPoll), HIDO_NULL);
+            break;
+        }
+        default:
+        {
+            return HIDO_EVENT_NO_PROC;
+        }
+    }
+
+    return HIDO_EVENT_OK;
+}
+
+/*******************************************************************************
  * State Name        : AIR780ESocketConnect
  * Parent State      : AIR780E
  * Description       :
  * Author            : 杜键
  * Modified Date:    : 2018-05-01
  *******************************************************************************/
-//extern uint8_t TCPfail_flag;
-//extern uint32_t TCPfailetimer;
 HIDO_FSM_STATE_IMPLEMENT(AIR780ESocketConnect, HIDO_FSM_STATE(AIR780EIPReady), HIDO_NULL)
 {
     static HIDO_INT32 l_i32SocketID = 0;
@@ -134,7 +217,18 @@
                 {
                     l_u32FailedCnt = 0;
                     Socket_OnConnected(l_i32SocketID);
-                    HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPPoll), HIDO_NULL);
+
+                    if(Socket_UseHeartbeat(l_i32SocketID))
+                    {
+                        HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780ESocketHeartConfig), HIDO_NULL);
+
+                    }
+                    else
+                    {
+                        HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPPoll), HIDO_NULL);
+                    }
+                    
+                    break;
                 }
                 else if (strncmp(stEvent.m_pData, "CONNECT FAIL", stEvent.m_u32Len) == 0)
                 {
@@ -144,10 +238,7 @@
                     if (l_u32FailedCnt >= 3)
                     {
                         l_u32FailedCnt = 3;
-                        //TCPfail_flag = 1;
                         Socket_Destroy(l_i32SocketID);
-                        //TCPfailetimer = HIDO_TimerGetTick();
-  //  HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780E), HIDO_NULL);
                         HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPPoll), HIDO_NULL);
                     }
                     else
@@ -336,7 +427,7 @@
                 else if (strncmp(stEvent.m_pData, "SEND FAIL", stEvent.m_u32Len) == 0)
                 {
                     Socket_OnClosed(l_i32SocketID);
-                    HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPPoll), NULL);
+                    HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EInit), NULL);
                 }
             }
 

--
Gitblit v1.9.3