| | |
| | | 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; |
| | |
| | | { |
| | | 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: |
| | | { |
| | | HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL); |
| | | //Uart_ReConfigBaudRate(UART_ID_4G, 115200); |
| | | //HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+IPR=9600;&W\r\n"); |
| | | //Uart_ReConfigBaudRate(UART_ID_4G, 9600); |
| | | break; |
| | | } |
| | | } |
| | |
| | | break; |
| | | } |
| | | case AIR780E_EVENT_RDY: |
| | | { |
| | | HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL); |
| | | break; |
| | | } |
| | | case HIDO_AT_EVENT_OK: |
| | | case HIDO_AT_EVENT_ERROR: |
| | | case HIDO_AT_EVENT_TIMEOUT: |
| | | { |
| | | HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EATCmdTest), HIDO_NULL); |
| | | break; |
| | |
| | | *******************************************************************************/ |
| | | HIDO_FSM_STATE_IMPLEMENT(AIR780EATCmdTest, HIDO_FSM_STATE(AIR780EInit), HIDO_NULL) |
| | | { |
| | | static HIDO_UINT32 l_u32ReadyCnt = 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; |
| | | } |
| | |
| | | } |
| | | case HIDO_AT_EVENT_TIMEOUT: |
| | | { |
| | | l_u32TimeoutCnt++; |
| | | l_u32ReadyCnt = 0; |
| | | |
| | | 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; |
| | | } |
| | | |
| | | HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EPowerOn), HIDO_NULL); |
| | | break; |
| | | } |
| | | default: |
| | |
| | | *******************************************************************************/ |
| | | 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; |
| | |
| | | { |
| | | case HIDO_EVENT_ENTRY: |
| | | { |
| | | bReady = HIDO_FALSE; |
| | | u32RetryCnt = 0; |
| | | HIDO_ATLiteCmdSend(pstATDevice, AT_GENERAL_TIMEOUT_TIME, "AT+CPIN?\r\n"); |
| | | break; |
| | |
| | | } |
| | | 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; |
| | | } |
| | |
| | | } |
| | | 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: |
| | |
| | | { "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 }, |
| | | }; |
| | | |
| | |
| | | l_u32Cnt++; |
| | | } |
| | | |
| | | if (l_u32ReadyCnt >= 3) |
| | | if (l_u32ReadyCnt >= 1) |
| | | { |
| | | HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(AIR780EIPInit), HIDO_NULL); |
| | | } |
| | |
| | | { "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 }, |
| | | }; |
| | | |
| | | pcIMSI = Module_GetIMSI(); |
| | |
| | | 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))) |
| | | { |
| | |
| | | } |
| | | 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: |
| | |
| | | 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) |
| | | { |