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