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