| | |
| | | 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]; |
| | |
| | | *******************************************************************************/ |
| | | |
| | | /******************************************************************************* |
| | | * 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; |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | 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 |
| | |
| | | } |
| | | case HIDO_AT_EVENT_ERROR: |
| | | case HIDO_AT_EVENT_OK: |
| | | case HIDO_AT_EVENT_TIMEOUT: |
| | | { |
| | | Socket_OnClosed(l_i32SocketID); |
| | | HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPPoll), HIDO_NULL); |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |