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/GPS.h |  181 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 170 insertions(+), 11 deletions(-)

diff --git a/STM32H743/FML/GPS.h b/STM32H743/FML/GPS.h
index 66d966a..892b6f4 100644
--- a/STM32H743/FML/GPS.h
+++ b/STM32H743/FML/GPS.h
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * File Name         : GPS.h
  * Description       :
- * Created on        : 2019年3月11日
+ * Created on        : 2019锟斤拷3锟斤拷11锟斤拷
  * Author            : www.hido-studio.com
  *******************************************************************************/
 #ifndef _GPS_H_
@@ -16,6 +16,25 @@
 /*******************************************************************************
  *                                  Macro                                      *
  *******************************************************************************/
+/* IM23A NAVI 鏁版嵁 STATUS 鐘舵�佸瓧瀹氫箟 */
+#define IM23A_STATUS_FINIT          (0x00000001U) // 1  婊ゆ尝鍣ㄦ湭鍒濆鍖栨爣蹇�
+#define IM23A_STATUS_READY          (0x00000002U) // 2  婊ゆ尝鍣ㄦ敹鏁涘畬鎴愭爣蹇�
+#define IM23A_STATUS_INACCURATE     (0x00000004U) // 3  婊ゆ尝鍣ㄦ敹鏁涜繃绋嬩腑
+#define IM23A_STATUS_TILT_REJECT    (0x00000008U) // 4  鍊捐杩囧ぇ鏍囧織浣�
+#define IM23A_STATUS_GNSS_REJECT    (0x00000010U) // 5  GNSS 瀹氫綅鏁版嵁宸爣蹇椾綅
+#define IM23A_STATUS_FRESET         (0x00000020U) // 6  婊ゆ尝鍣ㄩ噸缃爣蹇椾綅
+#define IM23A_STATUS_FIX_RLS1       (0x00000040U) // 7  鍊炬枩娴嬮噺瀹夎瑙掍及璁¢樁娈� 1
+#define IM23A_STATUS_FIX_RLS2       (0x00000080U) // 8  鍊炬枩娴嬮噺瀹夎瑙掍及璁¢樁娈� 2
+#define IM23A_STATUS_FIX_RLS3       (0x00000100U) // 9  鍊炬枩娴嬮噺瀹夎瑙掍及璁¢樁娈� 3
+#define IM23A_STATUS_FIX_RLS4       (0x00000200U) // 10 鍊炬枩娴嬮噺瀹夎瑙掍及璁¢樁娈� 4
+#define IM23A_STATUS_FIX_RLS_OK     (0x00000400U) // 11 鍊炬枩娴嬮噺瀹夎瑙掍及璁″畬鎴�
+#define IM23A_STATUS_DIR1           (0x00002000U) // 12 鍒濆鍖栨檭鍔ㄦ柟鍚� 1
+#define IM23A_STATUS_DIR2           (0x00004000U) // 13 鍒濆鍖栨檭鍔ㄦ柟鍚� 2
+#define IM23A_STATUS_GNSS_LOST      (0x00010000U) // 14 婊ゆ尝鍣ㄥ垽瀹� GNSS 鏁版嵁鏃犳晥
+#define IM23A_STATUS_FINIT_OK       (0x00020000U) // 15 鍒濆鍖栧畬鎴愭爣蹇�
+#define IM23A_STATUS_PPS_READY      (0x00040000U) // 16 鏀跺埌 PPS 淇″彿
+#define IM23A_STATUS_SYNC_READY     (0x00080000U) // 17 妯″潡鏃堕棿鍚屾鎴愬姛
+#define IM23A_STATUS_GNSS_CONNECT   (0x00100000U) // 18 妯″潡瑙f瀽鍒� RTK 鏁版嵁
 
 /*******************************************************************************
  *                             Type Definition                                 *
@@ -61,54 +80,194 @@
     HIDO_UINT8 m_u8Sec; //second
 }ST_GPS;
 
+/* GPRMI鏁版嵁鍖呯粨鏋� */
+typedef struct
+{
+    HIDO_UINT32 m_u32UTCTime;            // <1> UTC鏃堕棿, hhmmss.ss鏍煎紡 (centisecond)
+    HIDO_UINT16 m_u16WeekNumber;         // <2> 鍛ㄦ暟 (IM23A鏃犳瀛楁, 榛樿0)
+    HIDO_UINT32 m_u32TimeOfWeek;         // <3> 鍛ㄥ唴绉� (IM23A鏃犳瀛楁, 榛樿0)
+    HIDO_DOUBLE m_dLatitude;             // <4> 绾害(掳), 姝f暟涓哄寳绾�
+    HIDO_DOUBLE m_dLongitude;            // <5> 缁忓害(掳), 姝f暟涓轰笢缁�
+    HIDO_FLOAT m_fAltitude;              // <6> 楂樼▼(m)
+    HIDO_FLOAT m_fLatStdDev;             // <7> 绾害鏍囧噯宸�(m) / 棰勭暀
+    HIDO_FLOAT m_fLonStdDev;             // <8> 缁忓害鏍囧噯宸�(m) / 棰勭暀
+    HIDO_FLOAT m_fAltStdDev;             // <9> 楂樼▼鏍囧噯宸�(m) / 棰勭暀
+    HIDO_FLOAT m_fEastVelocity;          // <10> 涓滄柟鍚戦�熷害(m/s)
+    HIDO_FLOAT m_fNorthVelocity;         // <11> 鍖楁柟鍚戦�熷害(m/s)
+    HIDO_FLOAT m_fUpVelocity;            // <12> 澶╅《鏂瑰悜閫熷害(m/s)
+    HIDO_FLOAT m_fHorizontalVelStdDev;   // <13> 瀹氫綅绮惧害(鏉ヨ嚜IM23A瀛楁11)
+    HIDO_FLOAT m_fHeadingAngle;          // <14> 鑸悜瑙�(掳) [IM23A鍘熷涓哄姬搴︼紝宸茶浆鎹负0-360掳]
+    HIDO_FLOAT m_fPitchAngle;            // <15> 淇话瑙�(掳) [IM23A鍘熷涓哄姬搴︼紝宸茶浆鎹
+    HIDO_FLOAT m_fRollAngle;             // <16> 妯粴瑙�(掳) [IM23A鍘熷涓哄姬搴︼紝宸茶浆鎹
+    HIDO_FLOAT m_fHeadingAngleStdDev;    // <17> 鑸悜瑙掓爣鍑嗗樊(掳) / 棰勭暀
+    HIDO_FLOAT m_fPitchAngleStdDev;      // <18> 淇话瑙掓爣鍑嗗樊(掳) / 棰勭暀
+    HIDO_FLOAT m_fRollAngleStdDev;       // <19> 妯粴瑙掓爣鍑嗗樊(掳) / 棰勭暀
+    HIDO_FLOAT m_fBaselineDistance;      // <20> 鍩虹嚎璺濈(m) / 棰勭暀
+    HIDO_UINT8 m_u8SatelliteCount;       // <21> 鍗槦鏁伴噺(濡傚崗璁己鐪佸垯杩斿洖0)
+    HIDO_UINT8 m_u8FixedAmbiguityCount;  // <22> 杞芥尝鏁村懆鍥哄畾瑙傛祴閲忎釜鏁�(榛樿0)
+    HIDO_UINT8 m_u8PositionQuality;      // <23> 瀹氫綅璐ㄩ噺鎸囩ず(鏉ヨ嚜鐘舵�佸瓧浣�8浣�)
+    HIDO_BOOL m_bValid;                  // 鏁版嵁鏈夋晥鏍囧織
+
+    /* IM23A鎵╁睍瀛楁 */
+    HIDO_FLOAT m_fAccelBiasX;            // 鍔犻�熷害璁� X 闆跺亸
+    HIDO_FLOAT m_fAccelBiasY;            // 鍔犻�熷害璁� Y 闆跺亸
+    HIDO_FLOAT m_fAccelBiasZ;            // 鍔犻�熷害璁� Z 闆跺亸
+    HIDO_FLOAT m_fGyroBiasX;             // 闄�铻轰华 X 闆跺亸
+    HIDO_FLOAT m_fGyroBiasY;             // 闄�铻轰华 Y 闆跺亸
+    HIDO_FLOAT m_fGyroBiasZ;             // 闄�铻轰华 Z 闆跺亸
+    HIDO_FLOAT m_fImuTemperature;        // 浼犳劅鍣ㄦ俯搴�(掳C)
+    HIDO_UINT32 m_u32StatusFlags;        // 鐘舵�佸瓧娈�(鍙傝IM23A_STATUS_xxx瀹忓畾涔�)
+}ST_GPRMI;
+
+/* GPIMU鏁版嵁鍖呯粨鏋� */
+typedef struct
+{
+    HIDO_UINT32 m_u32UTCTime;           // <1> UTC鏃堕棿, hhmmss.sss鏍煎紡
+    HIDO_FLOAT m_fAccelX;                // <2> x杞村姞閫熷害(g)
+    HIDO_FLOAT m_fAccelY;                // <3> y杞村姞閫熷害(g)
+    HIDO_FLOAT m_fAccelZ;                // <4> z杞村姞閫熷害(g)
+    HIDO_FLOAT m_fGyroX;                 // <5> 闄�铻簒杞磋閫熷害(掳/s)
+    HIDO_FLOAT m_fGyroY;                 // <6> 闄�铻簓杞磋閫熷害(掳/s)
+    HIDO_FLOAT m_fGyroZ;                 // <7> 闄�铻簔杞磋閫熷害(掳/s)
+    HIDO_FLOAT m_fTemperature;           // <8> 浼犳劅鍣ㄦ俯搴�(鈩�)
+    HIDO_UINT8 m_u8Checksum;             // <9> 寮傛垨鏍¢獙鍜�
+    HIDO_BOOL m_bValid;                  // 鏁版嵁鏈夋晥鏍囧織
+}ST_GPIMU;
+
+/* GPGIG鏁版嵁鍖呯粨鏋� (fmig鎶ユ枃锛屽寘鍚綅缃俊鎭�佽В鐘舵�佸拰宸垎榫勬湡) */
+typedef struct
+{
+    HIDO_UINT32 m_u32UTCTime;           // UTC鏃堕棿
+    HIDO_DOUBLE m_dLatitude;            // 绾害(掳), 姝f暟涓哄寳绾�
+    HIDO_DOUBLE m_dLongitude;           // 缁忓害(掳), 姝f暟涓轰笢缁�
+    HIDO_UINT8 m_u8SatelliteCount;      // 鍗槦鏁伴噺
+    HIDO_UINT8 m_u8SolutionStatus;      // 瑙g姸鎬� (0=鏃犳晥, 1=鍗曠偣, 2=浼窛宸垎, 4=RTK鍥哄畾瑙�, 5=RTK娴偣瑙�)
+    HIDO_UINT8 m_u8DifferentialAge;     // 宸垎榫勬湡(绉�)
+    HIDO_FLOAT m_fHRMS;                  // 姘村钩绮惧害HRMS
+    HIDO_FLOAT m_fVRMS;                  // 鍨傜洿绮惧害VRMS
+    HIDO_FLOAT m_fHDOP;                  // 姘村钩绮惧害鍥犲瓙
+    HIDO_FLOAT m_fVDOP;                  // 鍨傜洿绮惧害鍥犲瓙
+    HIDO_BOOL m_bValid;                  // 鏁版嵁鏈夋晥鏍囧織
+}ST_GPGIG;
+
 /*******************************************************************************
  *                             Global Function                                 *
  *******************************************************************************/
 
 /*******************************************************************************
  * Function Name     : GPS_GetState
- * Description       : 获取GPS定位状态
+ * Description       : 锟斤拷取GPS锟斤拷位状态
  * Input             : None
  * Output            : None
- * Return            : 定位状态 0 1 2 3
+ * Return            : 锟斤拷位状态 0 1 2 3
  * Author            : www.hido-studio.com
- * Modified Date:    : 2021年1月8日
+ * Modified Date:    : 2021锟斤拷1锟斤拷8锟斤拷
  *******************************************************************************/
 HIDO_UINT8 GPS_GetState(HIDO_VOID);
 
 /*******************************************************************************
  * Function Name     : GPS_PinRegister
- * Description       : GPS模块管脚注册
- * Input             : _ePin 管脚定义
+ * Description       : GPS模锟斤拷芙锟阶拷锟�
+ * Input             : _ePin 锟杰脚讹拷锟斤拷
  *                   : _pstGPIOx GPIOx
  *                   : _u16GPIOPin GPIO_PIN_x
  * Output            : None
  * Return            : None
  * Author            : www.hido-studio.com
- * Modified Date:    : 2021年1月8日
+ * Modified Date:    : 2021锟斤拷1锟斤拷8锟斤拷
  *******************************************************************************/
 HIDO_VOID GPS_PinRegister(E_GPSPin _ePin, GPIO_TypeDef *_pstGPIOx, HIDO_UINT16 _u16GPIOPin);
 
 /*******************************************************************************
  * Function Name     : GPS_Poll
- * Description       : GPS轮询处理
+ * Description       : GPS锟斤拷询锟斤拷锟斤拷
  * Input             : None
  * Output            : None
  * Return            : None
  * Author            : www.hido-studio.com
- * Modified Date:    : 2021年1月8日
+ * Modified Date:    : 2021锟斤拷1锟斤拷8锟斤拷
  *******************************************************************************/
 HIDO_VOID GPS_Poll(void);
 
 /*******************************************************************************
  * Function Name     : GPS_Init
- * Description       : GPS模块初始化
+ * Description       : GPS模锟斤拷锟绞硷拷锟�
  * Input             : None
  * Output            : None
  * Return            : None
  * Author            : www.hido-studio.com
- * Modified Date:    : 2021年1月8日
+ * Modified Date:    : 2021锟斤拷1锟斤拷8锟斤拷
  *******************************************************************************/
 HIDO_VOID GPS_Init(void);
 
+/*******************************************************************************
+ * Function Name     : GPS_GetGPRMI
+ * Description       : 鑾峰彇鏈�鏂扮殑GPRMI鏁版嵁
+ * Input             : _pstGPRMI - 瀛樺偍GPRMI鏁版嵁鐨勭粨鏋勪綋鎸囬拡
+ * Output            : None
+ * Return            : HIDO_OK - 鎴愬姛, HIDO_ERR - 澶辫触
+ * Author            : www.hido-studio.com
+ * Modified Date:    : 2025骞�11鏈�11鏃�
+ *******************************************************************************/
+HIDO_INT32 GPS_GetGPRMI(ST_GPRMI *_pstGPRMI);
+
+/*******************************************************************************
+ * Function Name     : GPS_GetGPIMU
+ * Description       : 鑾峰彇鏈�鏂扮殑GPIMU鏁版嵁
+ * Input             : _pstGPIMU - 瀛樺偍GPIMU鏁版嵁鐨勭粨鏋勪綋鎸囬拡
+ * Output            : None
+ * Return            : HIDO_OK - 鎴愬姛, HIDO_ERR - 澶辫触
+ * Author            : www.hido-studio.com
+ * Modified Date:    : 2025骞�11鏈�11鏃�
+ *******************************************************************************/
+HIDO_INT32 GPS_GetGPIMU(ST_GPIMU *_pstGPIMU);
+
+/*******************************************************************************
+ * Function Name     : GPS_GetCurrentENU
+ * Description       : 鑾峰彇褰撳墠ENU鍧愭爣锛堢浉瀵逛簬寮�鏈哄悗绗竴涓浐瀹氳В锛�
+ * Input             : _enu - 瀛樺偍ENU鍧愭爣鐨勬暟缁勬寚閽� [涓�, 鍖�, 澶
+ * Output            : None
+ * Return            : HIDO_OK - 鎴愬姛, HIDO_ERR - 澶辫触鎴栧師鐐规湭鍒濆鍖�
+ * Author            : www.hido-studio.com
+ * Modified Date:    : 2025骞�12鏈�3鏃�
+ *******************************************************************************/
+HIDO_INT32 GPS_GetCurrentENU(float _enu[3]);
+
+/*******************************************************************************
+ * Function Name     : GPS_GetGPGIG
+ * Description       : 鑾峰彇鏈�鏂扮殑GPGIG鏁版嵁锛坒mig鎶ユ枃锛屽寘鍚綅缃俊鎭�佽В鐘舵�佸拰宸垎榫勬湡锛�
+ * Input             : _pstGPGIG - 瀛樺偍GPGIG鏁版嵁鐨勭粨鏋勪綋鎸囬拡
+ * Output            : None
+ * Return            : HIDO_OK - 鎴愬姛, HIDO_ERR - 澶辫触鎴栨暟鎹棤鏁�
+ * Author            : www.hido-studio.com
+ * Modified Date:    : 2025骞�12鏈�4鏃�
+ *******************************************************************************/
+HIDO_INT32 GPS_GetGPGIG(ST_GPGIG *_pstGPGIG);
+
+/*******************************************************************************
+ * Function Name     : GPS_UploadGGA
+ * Description       : 姣忕涓婁紶涓�娆GA鎶ユ枃鍒�4G锛堟嫾鎺min鍜宖mig鏁版嵁锛岀粡绾害鏉ヨ嚜fmig锛�
+ * Input             : None
+ * Output            : None
+ * Return            : None
+ * Author            : www.hido-studio.com
+ * Modified Date:    : 2025骞�12鏈�4鏃�
+ *******************************************************************************/
+HIDO_VOID GPS_UploadGGA(HIDO_VOID);
+
+/*******************************************************************************
+ * Function Name     : GPS_FormatGGA
+ * Description       : 灏唂min鍜宖mig鏁版嵁鏍煎紡鍖栦负鏍囧噯GGA鎶ユ枃锛堢粡绾害浼樺厛浣跨敤fmig鏁版嵁锛�
+ * Input             : _pstGPRMI - fmin鏁版嵁
+ *                   : _pstGPGIG - fmig鏁版嵁锛堝寘鍚粡绾害淇℃伅锛�
+ *                   : _pcBuffer - 杈撳嚭缂撳啿鍖�
+ *                   : _u32BufferSize - 缂撳啿鍖哄ぇ灏�
+ * Output            : _pcBuffer
+ * Return            : 瀹為檯鍐欏叆鐨勫瓧绗︽暟锛屽け璐ヨ繑鍥�0
+ * Author            : www.hido-studio.com
+ * Modified Date:    : 2025骞�12鏈�4鏃�
+ *******************************************************************************/
+HIDO_UINT32 GPS_FormatGGA(const ST_GPRMI *_pstGPRMI, const ST_GPGIG *_pstGPGIG, 
+                          HIDO_CHAR *_pcBuffer, HIDO_UINT32 _u32BufferSize);
+
 #endif /* _GPS_H_ */

--
Gitblit v1.10.0