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