s
yy1717
2020-01-10 91534e59ac99449404bc9ad96696662044dd0afc
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);
    }
}