From adb51de38fed8dbdd04316ed7a270c7d68c59e42 Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期四, 08 五月 2025 10:39:00 +0800 Subject: [PATCH] 修改了4G修改波特率的不成功的bug --- keil/include/components/internet/src/AIR780EFSM.c | 150 ++++++++++++++++++++++--------------------------- 1 files changed, 67 insertions(+), 83 deletions(-) diff --git a/keil/include/components/internet/src/AIR780EFSM.c b/keil/include/components/internet/src/AIR780EFSM.c index 3cef9c4..c7bc662 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,7 +267,7 @@ { 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: @@ -288,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; } @@ -331,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); + l_u32TimeoutCnt++; + 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; - } - + AIR780E_Reset_usart(); + } + break; } default: @@ -381,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; @@ -390,7 +376,6 @@ { case HIDO_EVENT_ENTRY: { - bReady = HIDO_FALSE; u32RetryCnt = 0; HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CPIN?\r\n"); break; @@ -403,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; } @@ -416,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: @@ -491,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 }, }; @@ -784,7 +746,7 @@ l_u32Cnt++; } - if (l_u32ReadyCnt >= 3) + if (l_u32ReadyCnt >= 1) { HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPInit), HIDO_NULL); } @@ -887,10 +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(); @@ -954,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))) { @@ -994,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: @@ -1541,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