From 4bd08f0355b6b2cf3c027202d5ad301b4e182953 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期五, 31 三月 2023 17:16:22 +0800
Subject: [PATCH] 科目二修改
---
lib/src/main/cpp/rtk_module/rtk.cpp | 87 +++++++++++++++++++++++++++----------------
1 files changed, 55 insertions(+), 32 deletions(-)
diff --git a/lib/src/main/cpp/rtk_module/rtk.cpp b/lib/src/main/cpp/rtk_module/rtk.cpp
index 88adfa5..de85611 100644
--- a/lib/src/main/cpp/rtk_module/rtk.cpp
+++ b/lib/src/main/cpp/rtk_module/rtk.cpp
@@ -21,6 +21,7 @@
#include "virtual_rtk.h"
#include "../mcu/mcu_if.h"
#include "../mcu/ahp.h"
+#include "../utils/xconvert.h"
#define DEBUG(fmt, args...) LOGD("<rtk> <%s>: " fmt, __func__, ##args)
@@ -40,9 +41,25 @@
static gpsStatus_t gpsStatus;
static char rtkModel[32] = {0};
-static rtk_info CurrRTKInfo;
static bool needSetPjk = false;
static int lostCnt;
+
+// 缁勫悎PJK鍜孴RA鐨勬秷鎭唴瀹�
+static struct {
+ int year;
+ int month;
+ int day;
+ int hour;
+ int min;
+ int sec;
+ int millisec;
+ int qf;
+ double heading;
+ double pitch;
+ double roll;
+ double x;
+ double y;
+} xy_temp;
static void CheckPjkParam(void);
static void CheckPjkParamTimeout(apptimer_var_t val);
@@ -312,28 +329,31 @@
int ss = str2int(s->nmea_value[0].data + 4, 2);
int dss = str2int(s->nmea_value[0].data + 7, 2);
- CurrRTKInfo.MM = str2int(s->nmea_value[1].data, 2);
- CurrRTKInfo.DD = str2int(s->nmea_value[1].data + 2, 2);
- CurrRTKInfo.YY = str2int(s->nmea_value[1].data + 4, 2);
+ xy_temp.month = str2int(s->nmea_value[1].data, 2);
+ xy_temp.day = str2int(s->nmea_value[1].data + 2, 2);
+ xy_temp.year = str2int(s->nmea_value[1].data + 4, 2);
- CurrRTKInfo.qf = str2int(s->nmea_value[6].data, s->nmea_value[6].length);
+ xy_temp.qf = str2int(s->nmea_value[6].data, s->nmea_value[6].length);
// NOTE: RTK妯″潡鏄互鍗楀寳鍚戜负X杞达紝瑗夸笢鍚戜负Y杞达紝鎴戜滑浜ゆ崲涓嬶紝浠ョ鍚堜竴鑸�昏緫
- str2float(&CurrRTKInfo.y, s->nmea_value[2].data, s->nmea_value[2].length);
- str2float(&CurrRTKInfo.x, s->nmea_value[4].data, s->nmea_value[4].length);
+ str2float(&xy_temp.y, s->nmea_value[2].data, s->nmea_value[2].length);
+ str2float(&xy_temp.x, s->nmea_value[4].data, s->nmea_value[4].length);
- if (CurrRTKInfo.hh == hh && CurrRTKInfo.mm == mm && CurrRTKInfo.ss == ss && CurrRTKInfo.dss == dss) {
- PlatformStatusChanged(RTK_UPDATE_EVT, (uint8_t *)&CurrRTKInfo, sizeof(CurrRTKInfo));
-// UpdateRTKInfo(&CurrRTKInfo);
-// up_num++;
- /*if ((up_num % 5) == 0)*/ {
-// NewMgrEvent(DRIVER_UPDATE_EVT);
- }
+ if (xy_temp.hour == hh && xy_temp.min == mm && xy_temp.sec == ss && xy_temp.millisec == dss) {
+ rtk_info_t rtk;
+ rtk.qf = xy_temp.qf;
+ rtk.utc_time = static_cast<int64_t>(TimeMakeComposite(2000 + xy_temp.year, xy_temp.month, xy_temp.day, xy_temp.hour, xy_temp.min, xy_temp.sec))*static_cast<int64_t>(1000) + static_cast<int64_t>(dss*10);
+ rtk.x = xy_temp.x;
+ rtk.y = xy_temp.y;
+ rtk.heading = xy_temp.heading;
+ rtk.pitch = xy_temp.pitch;
+ rtk.roll = xy_temp.roll;
+ PlatformStatusChanged(RTK_UPDATE_EVT, (uint8_t *)&rtk, sizeof(rtk));
}
- CurrRTKInfo.hh = hh;
- CurrRTKInfo.mm = mm;
- CurrRTKInfo.ss = ss;
- CurrRTKInfo.dss = dss;
+ xy_temp.hour = hh;
+ xy_temp.min = mm;
+ xy_temp.sec = ss;
+ xy_temp.millisec = dss;
}
void handleGPTRA(const struct nmea *s) {
@@ -344,22 +364,25 @@
int ss = str2int(s->nmea_value[0].data + 4, 2);
int dss = str2int(s->nmea_value[0].data + 7, 2);
- str2float(&CurrRTKInfo.heading, s->nmea_value[1].data, s->nmea_value[1].length);
- str2float(&CurrRTKInfo.pitch, s->nmea_value[2].data, s->nmea_value[2].length);
- str2float(&CurrRTKInfo.roll, s->nmea_value[3].data, s->nmea_value[3].length);
+ str2float(&xy_temp.heading, s->nmea_value[1].data, s->nmea_value[1].length);
+ str2float(&xy_temp.pitch, s->nmea_value[2].data, s->nmea_value[2].length);
+ str2float(&xy_temp.roll, s->nmea_value[3].data, s->nmea_value[3].length);
- if (CurrRTKInfo.hh == hh && CurrRTKInfo.mm == mm && CurrRTKInfo.ss == ss && CurrRTKInfo.dss == dss) {
- PlatformStatusChanged(RTK_UPDATE_EVT, (uint8_t *)&CurrRTKInfo, sizeof(CurrRTKInfo));
-// UpdateRTKInfo(&CurrRTKInfo);
-// up_num++;
- /*if ((up_num % 5) == 0)*/ {
-// NewMgrEvent(DRIVER_UPDATE_EVT);
- }
+ if (xy_temp.hour == hh && xy_temp.min == mm && xy_temp.sec == ss && xy_temp.millisec == dss) {
+ rtk_info_t rtk;
+ rtk.qf = xy_temp.qf;
+ rtk.utc_time = static_cast<int64_t>(TimeMakeComposite(2000 + xy_temp.year, xy_temp.month, xy_temp.day, xy_temp.hour, xy_temp.min, xy_temp.sec))*static_cast<int64_t>(1000) + static_cast<int64_t>(dss*10);
+ rtk.x = xy_temp.x;
+ rtk.y = xy_temp.y;
+ rtk.heading = xy_temp.heading;
+ rtk.pitch = xy_temp.pitch;
+ rtk.roll = xy_temp.roll;
+ PlatformStatusChanged(RTK_UPDATE_EVT, (uint8_t *)&rtk, sizeof(rtk));
}
- CurrRTKInfo.hh = hh;
- CurrRTKInfo.mm = mm;
- CurrRTKInfo.ss = ss;
- CurrRTKInfo.dss = dss;
+ xy_temp.hour = hh;
+ xy_temp.min = mm;
+ xy_temp.sec = ss;
+ xy_temp.millisec = dss;
}
static void CheckPjkParam(void)
--
Gitblit v1.8.0