zhangbo
2025-05-08 adb51de38fed8dbdd04316ed7a270c7d68c59e42
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)
    {