From b53fff11e6f0d560594834de32886239cbba90a3 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期二, 16 十二月 2025 15:48:58 +0800
Subject: [PATCH] 外部调完,可以解析下发的MQTT数据了,但是路径文件太大准备换成http模式
---
STM32H743/FML/Internet/Module/EG800/EG800FSM.c | 148 +++++++++++++++++++------------------------------
1 files changed, 58 insertions(+), 90 deletions(-)
diff --git a/STM32H743/FML/Internet/Module/EG800/EG800FSM.c b/STM32H743/FML/Internet/Module/EG800/EG800FSM.c
index b59b272..b7902f2 100644
--- a/STM32H743/FML/Internet/Module/EG800/EG800FSM.c
+++ b/STM32H743/FML/Internet/Module/EG800/EG800FSM.c
@@ -1,7 +1,7 @@
/*******************************************************************************
* File Name : EG800FSM.c
* Description :
- * Created on : 2018年5月22日
+ * Created on : 2018??5??22??
* Author : www.hido-studio.com
*******************************************************************************/
@@ -25,6 +25,7 @@
#include "ATConfig.h"
#include "Uart.h"
#include "Module.h"
+#include "MQTT.h"
/*******************************************************************************
* Macro *
@@ -69,9 +70,8 @@
/*******************************************************************************
* State Name : EG800
* Parent State : None
- * Description : EG800主状态
+ * Description : EG800????
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800, HIDO_NULL, HIDO_FSM_STATE(EG800PowerOn))
{
@@ -103,6 +103,22 @@
Socket_HaveRecvData(u32ID);
break;
}
+ case EG800_EVENT_QMTRECV:
+ {
+ HIDO_UINT32 u32ClientID = 0;
+ HIDO_UINT32 u32MsgID = 0;
+ HIDO_DataStruct *pstData = (HIDO_DataStruct *) _pArg;
+
+ if (HIDO_UtilParseFormat((HIDO_UINT8 *) pstData->m_pData, pstData->m_u32Len, "+QMTRECV: %d,%d\r\n",
+ &u32ClientID, &u32MsgID) != 2)
+ {
+ break;
+ }
+
+ MQTT_HaveRecvData(u32ClientID);
+
+ break;
+ }
default:
{
return HIDO_EVENT_NO_PROC;
@@ -115,9 +131,8 @@
/*******************************************************************************
* State Name : EG800Init
* Parent State : EG800
- * Description : 初始化主状态
+ * Description : ?????????
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800Init, HIDO_FSM_STATE(EG800), HIDO_FSM_STATE(EG800PowerOn))
{
@@ -133,7 +148,7 @@
}
case HIDO_AT_EVENT_TIMEOUT:
{
- /* AT命令相应超时,重新初始化 */
+ /* AT??????????,???3???? */
HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(EG800Init), HIDO_NULL);
break;
@@ -152,7 +167,6 @@
* Parent State : EG800Init
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800PowerOff, HIDO_FSM_STATE(EG800), HIDO_NULL)
{
@@ -196,7 +210,6 @@
* Parent State : EG800Init
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800PowerOn, HIDO_FSM_STATE(EG800Init), HIDO_NULL)
{
@@ -228,7 +241,7 @@
}
case HIDO_EVENT_EXIT:
{
- /* 退出初始化 */
+ /* ???????? */
HIDO_TimerCancel(u32FSMTimerID);
break;
@@ -282,7 +295,6 @@
* Parent State : EG800Init
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
extern int Last4G;
@@ -332,9 +344,8 @@
/*******************************************************************************
* State Name : EG800ATCmdTest
* Parent State : EG800Init
- * Description : AT命令测试状态
+ * Description : AT?????????
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800ATCmdTest, HIDO_FSM_STATE(EG800Init), HIDO_NULL)
{
@@ -405,7 +416,7 @@
}
else
{
- /* 上电成功 */
+ /* ????? */
Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON);
HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(EG800WaitSimCardReady), HIDO_NULL);
}
@@ -455,7 +466,7 @@
{
if (HIDO_TRUE == l_bConfigBaudRate)
{
- /* 上电成功 */
+ /* ????? */
Module_PowerEvent(MODULE_MAIN, MODULE_STATE_POWER_ON);
HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(EG800WaitSimCardReady), HIDO_NULL);
break;
@@ -489,9 +500,8 @@
/*******************************************************************************
* State Name : EG800WaitSimCardReady
* Parent State : EG800Init
- * Description : 等待SIM卡准备完成
+ * Description : ???SIM????????
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800WaitSimCardReady, HIDO_FSM_STATE(EG800Init), HIDO_NULL)
{
@@ -591,7 +601,6 @@
* Parent State : EG800Init
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800ATCmdInit, HIDO_FSM_STATE(EG800Init), HIDO_NULL)
{
@@ -603,8 +612,8 @@
{"AT+GSN\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK},
{"AT+CIMI\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK},
{"AT+CCID\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK},
-// {"AT+QTTSETUP=1,1," TTS_SPEED "\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK},
-// {"AT+QTTSETUP=1,2," TTS_VOLUME "\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK},
+ // {"AT+QTTSETUP=1,1," TTS_SPEED "\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK},
+ // {"AT+QTTSETUP=1,2," TTS_VOLUME "\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK},
};
HIDO_ATLiteDeviceStruct *pstATDevice = (HIDO_ATLiteDeviceStruct *)_pstFSM->m_pPrivateData;
@@ -672,12 +681,12 @@
l_u32RetryCnt++;
if (l_u32RetryCnt >= 3)
{
- /* 重试超限 */
+ /* ??????? */
HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(EG800PowerOn), HIDO_NULL);
}
else
{
- /* 不是期待的结果,10后再次尝试 */
+ /* ?????????????10????γ??? */
HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), _pstFSM,
EG800_EVENT_DELAY);
}
@@ -762,7 +771,6 @@
* Parent State : EG800
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800Idle, HIDO_FSM_STATE(EG800), HIDO_NULL)
{
@@ -798,7 +806,6 @@
* Parent State : EG800
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800Ready, HIDO_FSM_STATE(EG800), HIDO_FSM_STATE(EG800SearchingNetwork))
{
@@ -824,9 +831,8 @@
/*******************************************************************************
* State Name : EG800SearchingNetwork
* Parent State : EG800
- * Description : 查找网络
+ * Description : ????????
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800SearchingNetwork, HIDO_FSM_STATE(EG800Ready), HIDO_NULL)
{
@@ -916,7 +922,7 @@
if (l_u32Cnt > 100)
{
- /* TODO网络出错 */
+ /* TODO??????? */
}
}
@@ -991,7 +997,6 @@
* Parent State : EG800
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800IPInit, HIDO_FSM_STATE(EG800Ready), HIDO_NULL)
{
@@ -1005,29 +1010,10 @@
const ST_ATCmd astInitCmdList[] =
{
- {"AT+QICSGP=1,1,\"%s\",\"\",\"\",1\r\n", 60000, AT_CMD_RESULT_OK | AT_CMD_RESULT_ERROR},
{"AT+QIACT=1\r\n", 60000, AT_CMD_RESULT_OK | AT_CMD_RESULT_ERROR},
{"AT+QIACT?\r\n", AT_GENERAL_TIMEOUT_TIME, AT_CMD_RESULT_OK | AT_CMD_RESULT_TIMEOUT},
};
- pcIMSI = Module_GetIMSI();
- if (strncmp(pcIMSI, "46000", 5) == 0 || strncmp(pcIMSI, "46002", 5) == 0)
- {
- HIDO_UtilSnprintf(acAPN, sizeof(acAPN), "CMNET");
- }
- else if (strncmp(pcIMSI, "46001", 5) == 0)
- {
- HIDO_UtilSnprintf(acAPN, sizeof(acAPN), "UNINET");
- }
- else if (strncmp(pcIMSI, "46006", 5) == 0)
- {
- HIDO_UtilSnprintf(acAPN, sizeof(acAPN), "CMNET");
- }
- else if (strncmp(pcIMSI, "46003", 5) == 0)
- {
- HIDO_UtilSnprintf(acAPN, sizeof(acAPN), "CTNET");
- }
-
switch (_u32Event)
{
case HIDO_EVENT_ENTRY:
@@ -1090,12 +1076,12 @@
l_u32RetryCnt++;
if (l_u32RetryCnt >= 3)
{
- /* 重试超限 */
+ /* ??????? */
HIDO_FSMStateChange(_pstFSM, HIDO_FSM_STATE(EG800), HIDO_NULL);
}
else
{
- /* 不是期待的结果,10后再次尝试 */
+ /* ?????????????10????γ??? */
HIDO_FSMStartTimer(u32FSMTimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(10), _pstFSM,
EG800_EVENT_DELAY);
}
@@ -1126,7 +1112,6 @@
* Parent State : EG800
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800IPReady, HIDO_FSM_STATE(EG800Ready), HIDO_FSM_STATE(EG800IPPoll))
{
@@ -1139,9 +1124,8 @@
case HIDO_EVENT_EXIT:
{
Socket_ClosedAll();
-#ifdef __EG800_MQTT__
MQTT_ClosedAll();
-#endif
+
break;
}
case EG800_EVENT_POLL:
@@ -1172,7 +1156,7 @@
l_bDeact = HIDO_TRUE;
break;
}
-#ifdef __EG800_MQTT__
+
case EG800_EVENT_QMTSTAT:
{
HIDO_DataStruct *pstData = (HIDO_DataStruct *)_pArg;
@@ -1200,7 +1184,6 @@
break;
}
-#endif
default:
{
return HIDO_EVENT_NO_PROC;
@@ -1215,7 +1198,6 @@
* Parent State : EG800IPReady
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800IPPoll, HIDO_FSM_STATE(EG800IPReady), HIDO_NULL)
{
@@ -1263,7 +1245,6 @@
* Parent State : EG800IPReady
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_STATE_IMPLEMENT(EG800IPCheck, HIDO_FSM_STATE(EG800IPReady), HIDO_NULL)
{
@@ -1320,7 +1301,6 @@
* Parent State : EG800Ready
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_DETACHED_STATE_IMPLEMENT(EG800RunATCmd, HIDO_NULL, HIDO_NULL)
{
@@ -1360,7 +1340,6 @@
* Parent State : EG800Ready
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_DETACHED_STATE_IMPLEMENT(EG800CloseWireless, HIDO_NULL, HIDO_NULL)
{
@@ -1399,7 +1378,6 @@
* Parent State : EG800Ready
* Description :
* Author : www.hido-studio.com
- * Modified Date: : 2018-05-01
*******************************************************************************/
HIDO_FSM_DETACHED_STATE_IMPLEMENT(EG800OpenWireless, HIDO_NULL, HIDO_NULL)
{
@@ -1435,12 +1413,11 @@
/*******************************************************************************
* Function Name : EG800_PowerPoll
- * Description : 电源处理事件的轮询
- * Input : _pstATDevice AT设备描述
+ * Description : ???????????????
+ * Input : _pstATDevice AT?豸????
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK ???, HIDO_ERR ???
* Author : www.hido-studio.com
- * Modified Date: : 2018年5月22日
*******************************************************************************/
static HIDO_INT32 EG800_PowerPoll(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
@@ -1460,12 +1437,11 @@
/*******************************************************************************
* Function Name : EG800_RunATCmdPoll
- * Description : 运行用户AT命令处理轮询
- * Input : _pstATDevice AT设备描述
+ * Description : ???????AT?????????
+ * Input : _pstATDevice AT?豸????
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK ???, HIDO_ERR ???
* Author : www.hido-studio.com
- * Modified Date: : 2018年5月22日
*******************************************************************************/
static HIDO_INT32 EG800_RunATCmdPoll(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
@@ -1484,12 +1460,11 @@
/*******************************************************************************
* Function Name : EG800_CloseWirelessPoll
- * Description : 关闭无线数据轮询
- * Input : _pstATDevice AT设备描述
+ * Description : ??????????????
+ * Input : _pstATDevice AT?豸????
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK ???, HIDO_ERR ???
* Author : www.hido-studio.com
- * Modified Date: : 2018年5月22日
*******************************************************************************/
static HIDO_INT32 EG800_CloseWirelessPoll(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
@@ -1508,12 +1483,11 @@
/*******************************************************************************
* Function Name : EG800_OpenWirelessPoll
- * Description : 打开无线数据轮询
- * Input : _pstATDevice AT设备描述
+ * Description : ?????????????
+ * Input : _pstATDevice AT?豸????
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK ???, HIDO_ERR ???
* Author : www.hido-studio.com
- * Modified Date: : 2018年5月22日
*******************************************************************************/
static HIDO_INT32 EG800_OpenWirelessPoll(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
@@ -1532,12 +1506,11 @@
/*******************************************************************************
* Function Name : EG800_Poll
- * Description : 在非IPReady状态时的轮询处理
- * Input : _pstATDevice AT设备描述
+ * Description : ???IPReady????????????
+ * Input : _pstATDevice AT?豸????
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK ???, HIDO_ERR ???
* Author : www.hido-studio.com
- * Modified Date: : 2018年5月22日
*******************************************************************************/
static HIDO_INT32 EG800_Poll(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
@@ -1590,12 +1563,11 @@
/*******************************************************************************
* Function Name : EG800_PollOnIPReady
- * Description : 在IPReady状态时的轮询处理
- * Input : _pstATDevice AT设备描述
+ * Description : ??IPReady????????????
+ * Input : _pstATDevice AT?豸????
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK ???, HIDO_ERR ???
* Author : www.hido-studio.com
- * Modified Date: : 2018年5月22日
*******************************************************************************/
static HIDO_INT32 EG800_PollOnIPReady(HIDO_ATLiteDeviceStruct *_pstATDevice)
{
@@ -1621,13 +1593,11 @@
return HIDO_OK;
}
-#ifdef __EG800_MQTT__
/* MQTT */
if (EG800MQTT_Poll(_pstATDevice) == HIDO_OK)
{
return HIDO_OK;
}
-#endif
#ifdef __EG800_HTTP__
/* HTTP */
@@ -1678,12 +1648,11 @@
/*******************************************************************************
* Function Name : EG800_IsIPReady
- * Description : 判断状态机是否处在EG800IPReady状态
+ * Description : ?ж??????????EG800IPReady??
* Input : None
* Output : None
- * Return : HIDO_TRUE 是, HIDO_FALSE 否
+ * Return : HIDO_TRUE ??, HIDO_FALSE ??
* Author : www.hido-studio.com
- * Modified Date: : 2018年5月22日
*******************************************************************************/
HIDO_BOOL EG800_IsIPReady(void)
{
@@ -1704,12 +1673,11 @@
/*******************************************************************************
* Function Name : EG800_IsIPIdle
- * Description : 判断状态机是否处在EG800IPPoll状态
+ * Description : ?ж??????????EG800IPPoll??
* Input : None
* Output : None
- * Return : HIDO_TRUE 是, HIDO_FALSE 否
+ * Return : HIDO_TRUE ??, HIDO_FALSE ??
* Author : www.hido-studio.com
- * Modified Date: : 2018年5月22日
*******************************************************************************/
HIDO_BOOL EG800_IsIPIdle(void)
{
--
Gitblit v1.10.0