From a7376ba53eae30bef9e53bd88d38b37b0a050cee Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期三, 04 九月 2024 13:58:29 +0800
Subject: [PATCH] TCPclent.c文件更新
---
keil/include/components/internet/src/AIR780ESocket.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 97 insertions(+), 6 deletions(-)
diff --git a/keil/include/components/internet/src/AIR780ESocket.c b/keil/include/components/internet/src/AIR780ESocket.c
index 5111629..be21bb4 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
--
Gitblit v1.9.3