From 91534e59ac99449404bc9ad96696662044dd0afc Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期五, 10 一月 2020 17:04:04 +0800
Subject: [PATCH] s

---
 lib/src/main/cpp/rtk_platform/platform.cpp |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 50 insertions(+), 6 deletions(-)

diff --git a/lib/src/main/cpp/rtk_platform/platform.cpp b/lib/src/main/cpp/rtk_platform/platform.cpp
index 0ed3ff3..9658a15 100644
--- a/lib/src/main/cpp/rtk_platform/platform.cpp
+++ b/lib/src/main/cpp/rtk_platform/platform.cpp
@@ -7,6 +7,7 @@
 #include <cstring>
 #include <pthread.h>
 #include <semaphore.h>
+#include <cmath>
 #include "platform.h"
 #include "../jni_log.h"
 #include "../common/net.h"
@@ -51,8 +52,6 @@
     uint32_t login : 1;
     uint32_t downloadRtk : 1;
 } platformStatus;
-
-
 
 struct platformSocket exceptSocket, currSocket;
 static uint32_t eventMask;
@@ -279,6 +278,39 @@
         }
         MA_RtkPlatformLogin(data[0]);
     }
+    if (events & GPS_UPDATE_EVT) {
+        DEBUG("GPS_UPDATE_EVT");
+        const gpsStatus_t *gps = (gpsStatus_t *)data;
+        struct gpsBrief brief;
+
+        brief.qf = gps->gps_status;
+        brief.latitude = gps->latitude;
+        brief.longitude = gps->longitude;
+        brief.altitude = gps->altitude;
+        brief.speed = gps->speed;
+        brief.sat_num = gps->satNum;
+        sprintf(brief.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + gps->YY, gps->MM, gps->DD, gps->hh, gps->mm, gps->ss, gps->mss);
+
+        MA_SendGpsBrief(&brief);
+        RequestRtkDownload(gps, 1);
+    }
+    if (events & RTK_UPDATE_EVT) {
+        DEBUG("RTK_UPDATE_EVT");
+        const rtk_info *rtk = (rtk_info *)data;
+        struct rtkBrief brief;
+
+        brief.qf = rtk->qf;
+        brief.coord_x = rtk->x;
+        brief.coord_y = rtk->y;
+        brief.heading = rtk->heading;
+        brief.pitch = rtk->pitch;
+        brief.roll = rtk->roll;
+        brief.coord_x_dir = 'N';
+        brief.coord_y_dir = 'E';
+        sprintf(brief.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + rtk->YY, rtk->MM, rtk->DD, rtk->hh, rtk->mm, rtk->ss, rtk->dss);
+
+        MA_SendRtkBrief(&brief);
+    }
 }
 
 static void *PlatformDataListenThread(void *p) {
@@ -446,16 +478,28 @@
     requestPlatformSendRtk = true;
 }
 
-void RequestRtkDownload(uint32_t latitude, uint32_t longitude, uint16_t altitude,
-                        const uint8_t *bcd_time, uint16_t rtk_pkt_interval)
+void RequestRtkDownload(const gpsStatus_t *gps, uint16_t rtk_pkt_interval)
 {
-    if (requestPlatformSendRtk) {
-        DisplayText("璇锋眰涓嬭浇RTK鏁版嵁");
+    if (requestPlatformSendRtk && gps->gps_status > 0) {
+        DEBUG("璇锋眰涓嬭浇RTK鏁版嵁");
         requestPlatformSendRtk = false;
 
         AppTimer_delete(RequestRtkNoResp);
         AppTimer_add(RequestRtkNoResp, D_SEC(5));
 
+        uint32_t latitude = (uint32_t)(gps->latitude  * 1000000);
+        uint32_t longitude = (uint32_t)(gps->longitude * 1000000);
+        int altitude = (int) fabs(gps->altitude);
+
+        uint8_t bcd_time[6];
+
+        bcd_time[0] = ((gps->YY/10)<<4) + (gps->YY%10);
+        bcd_time[1] = ((gps->MM/10)<<4) + (gps->MM%10);
+        bcd_time[2] = ((gps->DD/10)<<4) + (gps->DD%10);
+        bcd_time[3] = ((gps->hh/10)<<4) + (gps->hh%10);
+        bcd_time[4] = ((gps->mm/10)<<4) + (gps->mm%10);
+        bcd_time[5] = ((gps->ss/10)<<4) + (gps->ss%10);
+
         SendRTKStart(latitude, longitude, altitude, bcd_time, rtk_pkt_interval);
     }
 }

--
Gitblit v1.8.0