From 683b1595260e638d1d3c6cc0d6543a72f6d6f925 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 12 一月 2021 14:36:42 +0800
Subject: [PATCH] 扣分码标准化
---
lib/src/main/cpp/rtk_module/rtk.cpp | 193 ++++++++++++++++++++++++++++++-----------------
1 files changed, 123 insertions(+), 70 deletions(-)
diff --git a/lib/src/main/cpp/rtk_module/rtk.cpp b/lib/src/main/cpp/rtk_module/rtk.cpp
index 244c0b3..82eab51 100644
--- a/lib/src/main/cpp/rtk_module/rtk.cpp
+++ b/lib/src/main/cpp/rtk_module/rtk.cpp
@@ -36,17 +36,24 @@
const static char SAVECONFIG[] = "saveconfig\r\n";
const static char *PJKITEMS[] = {"gptra", "ptnlpjk"};
const static char *GPSITEMS[] = {"gpgga", "gprmc", "gpvtg"};
+const char CMD_VERSION[] = "log version\r\n";
static gpsStatus_t gpsStatus;
+static char rtkModel[32] = {0};
static int (*WriteRtk)(int id, const void *buf, int len);
static rtk_info CurrRTKInfo;
static bool needSetPjk = false;
+static int lostCnt;
static void CheckPjkParam(void);
static void CheckPjkParamTimeout(union sigval sig);
static int WriteBluetooth(int id, const void *buf, int len);
+static void GetModuleVersion(void);
+
+static void VersionTimeout(union sigval sig);
+static void GpsDataTimeout(union sigval sig);
static void *UartThread(void *p);
@@ -59,7 +66,7 @@
}
}
-void ConfigRTKModule(void)
+void ConfigRTKModule(bool ayDevice)
{
// TODO
DEBUG("ConfigRTKModule");
@@ -70,26 +77,34 @@
memset(&gpsStatus, 0, sizeof(gpsStatus));
gpsStatus.hh = -1;
- RtkCommModeSel(1);
+ if (ayDevice) {
+ RtkCommModeSel(0);
- /*static struct serial_config serialConfig;
+ static struct serial_config serialConfig;
- strcpy(serialConfig.name, "/dev/ttyHSL0");
- serialConfig.baud = 115200;
- serialConfig.data_bit = 8;
- serialConfig.verify_bit = 'N';
- serialConfig.stop_bit = 1;
- serialConfig.flow_ctrl = 0;
+ strcpy(serialConfig.name, "/dev/ttyHSL0");
+ serialConfig.baud = 115200;
+ serialConfig.data_bit = 8;
+ serialConfig.verify_bit = 'N';
+ serialConfig.stop_bit = 1;
+ serialConfig.flow_ctrl = 0;
- pthread_t pid;
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//detached
- pthread_create(&pid, &attr, UartThread, &serialConfig);*/
+ pthread_t pid;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//detached
+ pthread_create(&pid, &attr, UartThread, &serialConfig);
+ } else {
+ RtkCommModeSel(1);
+ // 绛夊緟钃濈墮杩炴帴
+ }
}
+// 钃濈墮杩炴帴鍚�
void ConfigRTKModuleLater(void)
{
+ AppTimer_delete(GpsDataTimeout);
+ AppTimer_delete(VersionTimeout);
AppTimer_delete(CheckPjkParamTimeout);
AppTimer_add(CheckPjkParamTimeout, D_SEC(1));
}
@@ -107,59 +122,27 @@
void handleRTKRebootComp(const struct nmea *s)
{
DEBUG("RTK Reboot complete!!");
- CheckPjkParam();
+// CheckPjkParam();
+ GetModuleVersion();
}
void handlePJKParam(const struct nmea *s) {
DEBUG("handlePJKParam");
-//PJK Parameter: A:6378137.000, 1/F:298.257223563, B0:0.000000deg, L0:120.000000, N0:0.000, E0:500000.000.
-//PJK Parameter: A:6378137.000, 1/F:298.257223563, B0:29.512453deg, L0:106.455336, N0:0.000, E0:0.000.
-// bool setparam = true;
-//
-// const char DP1[] = "A:6378137.000";
-// const char DP2[] = "1/F:298.257223563";
-// const char DP3[] = "B0:29.512453deg";
-// const char DP4[] = "L0:106.455336";
-// const char DP5[] = "N0:0.000";
-// const char DP6[] = "E0:0.000";
AppTimer_delete(CheckPjkParamTimeout);
-// for (int i = 0; i < s->nmea_num; ++i) {
-// char out[64] = {0};
-//
-// memcpy(out, s->nmea_value[i].data, s->nmea_value[i].length);
-//
-// DEBUG("handlePJKParam = %s", out);
-// }
-//
-// if (s->nmea_num != 6) return;
-//
-// if (memcmp(s->nmea_value[0].data, DP1, strlen(DP1))) {
-// setparam = true;
-// }
-// if (memcmp(s->nmea_value[1].data, DP2, strlen(DP2))) {
-// setparam = true;
-// }
-// if (memcmp(s->nmea_value[2].data, DP3, strlen(DP3))) {
-// setparam = true;
-// }
-// if (memcmp(s->nmea_value[3].data, DP4, strlen(DP4))) {
-// setparam = true;
-// }
-// if (memcmp(s->nmea_value[4].data, DP5, strlen(DP5))) {
-// setparam = true;
-// }
-// if (memcmp(s->nmea_value[5].data, DP6, strlen(DP6))) {
-// setparam = true;
-// }
-//
-// if (setparam) {
-// SetAYFactoryParam(5);
-// }
-
SetAYFactoryParam(5);
needSetPjk = true;
+
+ lostCnt = 0;
+ AppTimer_delete(GpsDataTimeout);
+ AppTimer_add(GpsDataTimeout, D_SEC(5));
+
+ uint8_t buff[33];
+
+ memcpy(buff, rtkModel, 32);
+ buff[32] = 1;
+ PlatformStatusChanged(RTK_STATUS_EVT, buff, 33);
}
void SetAYFactoryParam(int freq)
@@ -211,7 +194,8 @@
int RxBufLen = 0;
if (res == 0) {
- CheckPjkParam();
+// CheckPjkParam();
+ GetModuleVersion();
}
while (res == 0) {
@@ -240,6 +224,15 @@
if (RxBufLen > 0) {
#if 1
if (VirtualIsConnected()) { //PC妯℃嫙鐢ㄦ椂
+ static bool first = false;
+
+ if (!first) {
+ first = true;
+
+ uint8_t buff[33] = "emulator";
+ buff[32] = 1;
+ PlatformStatusChanged(RTK_STATUS_EVT, buff, 33);
+ }
RxBufLen = 0;
} else {
const uint8_t *ptr = parseGPS(RxBuf, RxBuf + RxBufLen);
@@ -263,17 +256,41 @@
}
void handleUnrecognisedNMEA(const uint8_t *data, uint16_t length) {
-// char buff[4096] = {0};
-// memcpy(buff, data, MIN(length, 3000));
+ char buff[4096] = {0};
+ memcpy(buff, data, MIN(length, 4000));
// DEBUG("handleUnrecognisedNMEA: %s", buff);
+
+ if (length >= 100) {
+ string cs(buff);
+
+ if (cs.find("K708") != string::npos) {
+ // 鏈�鍒濈殑鏍囧噯鍩虹珯妯″潡
+ DEBUG("K708 妯″潡");
+ strcpy(rtkModel, "K708");
+
+ AppTimer_delete(VersionTimeout);
+ CheckPjkParam();
+ } else if (cs.find("K726") != string::npos) {
+ // 绉诲姩绔欐ā鍧楋紝涔熷彲浠ョ敤鍋氬熀绔欏姛鑳�
+ DEBUG("K726 妯″潡");
+ strcpy(rtkModel, "K726");
+
+ AppTimer_delete(VersionTimeout);
+ CheckPjkParam();
+ }
+ }
}
void handleGPGGA(const struct nmea *s)
{
static uint32_t qfCnt = 0;
- DEBUG("handleGPGGA num = %d", s->nmea_num);
+// DEBUG("handleGPGGA num = %d", s->nmea_num);
if (s->nmea_num >= 10) {
+ lostCnt = 0;
+ AppTimer_delete(GpsDataTimeout);
+ AppTimer_add(GpsDataTimeout, D_SEC(5));
+
gpsStatus.gps_status = str2int(s->nmea_value[5].data, s->nmea_value[5].length);
int hh = str2int(s->nmea_value[0].data, 2);
@@ -331,7 +348,7 @@
void handleGPRMC(const struct nmea *s)
{
- DEBUG("handleGPRMC num = %d", s->nmea_num);
+// DEBUG("handleGPRMC num = %d", s->nmea_num);
if (s->nmea_num >= 9) {
int hh = str2int(s->nmea_value[0].data, 2);
@@ -397,7 +414,7 @@
}
void handlePJK(const struct nmea *s) {
- DEBUG("handlePJK num = %d", s->nmea_num);
+// DEBUG("handlePJK num = %d", s->nmea_num);
int hh = str2int(s->nmea_value[0].data, 2);
int mm = str2int(s->nmea_value[0].data + 2, 2);
@@ -457,7 +474,7 @@
}
void handleGPTRA(const struct nmea *s) {
- DEBUG("handleGPTRA num = %d", s->nmea_num);
+// DEBUG("handleGPTRA num = %d", s->nmea_num);
int hh = str2int(s->nmea_value[0].data, 2);
int mm = str2int(s->nmea_value[0].data + 2, 2);
@@ -491,8 +508,8 @@
static void CheckPjkParam(void)
{
- int n = WriteRtk(RTK_MODULE_UART, INQ_PJK_PARAM, strlen(INQ_PJK_PARAM));
- DEBUG("CN = %d", n);
+ WriteRtk(RTK_MODULE_UART, INQ_PJK_PARAM, strlen(INQ_PJK_PARAM));
+ DEBUG("鑾峰彇PJK鍙傛暟...");
AppTimer_delete(CheckPjkParamTimeout);
AppTimer_add(CheckPjkParamTimeout, D_SEC(3));
}
@@ -500,11 +517,14 @@
static void CheckPjkParamTimeout(union sigval sig) {
AppTimer_delete(CheckPjkParamTimeout);
- DEBUG("RTK Module failure!!");
+ DEBUG("鑾峰彇PJK鍙傛暟瓒呮椂");
-// PlayTTS("RTK妯″潡鏃犳硶閫氳", NULL);
+ uint8_t buff[33];
+ memcpy(buff, rtkModel, 32);
+ buff[32] = 0;
+ PlatformStatusChanged(RTK_STATUS_EVT, buff, 33);
- CheckPjkParam();
+ GetModuleVersion();
}
static int WriteBluetooth(int id, const void *buf, int len)
@@ -513,3 +533,36 @@
SendMcuCommand(0x000B, (uint8_t *)buf, len);
return len;
}
+
+static void GetModuleVersion(void)
+{
+ AppTimer_delete(VersionTimeout);
+ AppTimer_add(VersionTimeout, D_SEC(3));
+ WriteRtk(RTK_MODULE_UART, CMD_VERSION, strlen(CMD_VERSION));
+
+ DEBUG("鑾峰彇鐗堟湰...");
+}
+
+static void VersionTimeout(union sigval sig)
+{
+ AppTimer_delete(VersionTimeout);
+ DEBUG("鐗堟湰鑾峰彇瓒呮椂");
+ GetModuleVersion();
+
+ uint8_t buff[33];
+ memcpy(buff, rtkModel, 32);
+ buff[32] = 0;
+ PlatformStatusChanged(RTK_STATUS_EVT, buff, 33);
+}
+
+static void GpsDataTimeout(union sigval sig)
+{
+ AppTimer_delete(GpsDataTimeout);
+
+ if (++lostCnt >= 3) {
+ DEBUG("RTK妯″潡鏀朵笉鍒癎PS鏁版嵁");
+ GetModuleVersion();
+ } else {
+ AppTimer_add(GpsDataTimeout, D_SEC(5));
+ }
+}
--
Gitblit v1.8.0