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