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