From f7a18ec4494b9c5c9ef3fd440bbf68ffc6425e18 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 08 十二月 2022 15:40:56 +0800
Subject: [PATCH] 智慧驾培首次提交

---
 lib/src/main/cpp/rtk_platform/platform.cpp |   73 +++++++++++++++---------------------
 1 files changed, 31 insertions(+), 42 deletions(-)

diff --git a/lib/src/main/cpp/rtk_platform/platform.cpp b/lib/src/main/cpp/rtk_platform/platform.cpp
index 11139bc..6f49707 100644
--- a/lib/src/main/cpp/rtk_platform/platform.cpp
+++ b/lib/src/main/cpp/rtk_platform/platform.cpp
@@ -5,7 +5,8 @@
 #include <cstdint>
 #include <cstdlib>
 #include <cstring>
-#include <pthread.h>
+#include <thread>
+#include <mutex>
 #include <semaphore.h>
 #include <cmath>
 #include "platform.h"
@@ -88,7 +89,7 @@
 
 static CTcpPort *ctp = NULL;
 
-static pthread_mutex_t events_mutex = PTHREAD_MUTEX_INITIALIZER;
+static std::mutex events_mutex;
 
 static struct gpsBrief gbf;
 static struct rtkBrief rbf;
@@ -101,24 +102,24 @@
 static struct event_t * FetchEvent(void);
 static void RemoveEvent(void);
 
-static void ReqRtkPlatformConfigTimeout(union sigval sig);
+static void ReqRtkPlatformConfigTimeout(apptimer_var_t val);
 
 static void TcpEventCallback(int stat, void *p, void *context);
 static void TcpDataCallback(void *buffer, int length, void *p, void *context);
 
 static void ConnectPlatform(const char *domain_name, int port);
-static void ConnectPlatformLater(union sigval sig);
+static void ConnectPlatformLater(apptimer_var_t val);
 
-static void *StatusListenThread(void *p);
+static void StatusListenThread(void);
 static void PlatformChangeEntry(uint32_t events, const uint8_t *data, int length);
 
 static void RegisterPlatform(void);
-static void RegisterPlatformTimeout(union sigval sig);
+static void RegisterPlatformTimeout(apptimer_var_t val);
 
 static void LoginPlatform(void);
-static void LoginPlatformTimeout(union sigval sig);
-static void TriggerHeartbeat(union sigval sig);
-static void RequestRtkNoResp(union sigval sig);
+static void LoginPlatformTimeout(apptimer_var_t val);
+static void TriggerHeartbeat(apptimer_var_t val);
+static void RequestRtkNoResp(apptimer_var_t val);
 
 
 static void AddEvnet(uint32_t event, const uint8_t *data, int length)
@@ -138,7 +139,7 @@
         memcpy(nw->event.data, data, length);
     }
 
-    pthread_mutex_lock(&events_mutex);
+    lock_guard<std::mutex> lock(events_mutex);
 
     struct event_queue_t *p = eventQueue;
 
@@ -148,22 +149,18 @@
         eventQueue = nw;
     else
         p->next = nw;
-
-    pthread_mutex_unlock(&events_mutex);
 }
 
 static struct event_t * FetchEvent(void)
 {
     struct event_t *evp = NULL;
 
-    pthread_mutex_lock(&events_mutex);
+    lock_guard<std::mutex> lock(events_mutex);
     struct event_queue_t *p = eventQueue;
 
     if (p != NULL) {
         evp = &p->event;
     }
-
-    pthread_mutex_unlock(&events_mutex);
 
     return evp;
 }
@@ -172,7 +169,7 @@
 {
     void *p1 = NULL, *p2 = NULL;
 
-    pthread_mutex_lock(&events_mutex);
+    lock_guard<std::mutex> lock(events_mutex);
     struct event_queue_t *p = eventQueue;
 
     if (p != NULL) {
@@ -180,7 +177,6 @@
         p1 = p;
         p2 = p->event.data;
     }
-    pthread_mutex_unlock(&events_mutex);
 
     if (p2 != NULL)
         free(p2);
@@ -198,8 +194,6 @@
     memset(&rbf, 0, sizeof(rbf));
     memset(&defaultMcuRom, 0, sizeof(defaultMcuRom));
 
-    pthread_mutex_init(&events_mutex, NULL);
-
     eventQueue = NULL;
 
     memset(&platformStatus, 0, sizeof(platformStatus));
@@ -209,17 +203,11 @@
 
     PlatformTxInit();
 
-    pthread_t pid;
-    pthread_attr_t attr;
-    pthread_attr_init(&attr);
-    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//detached
-    pthread_create(&pid, &attr, StatusListenThread, NULL);
+    std::thread(StatusListenThread).detach();
 }
 
-static void ReqRtkPlatformConfigTimeout(union sigval sig)
+static void ReqRtkPlatformConfigTimeout(apptimer_var_t val)
 {
-    AppTimer_delete(ReqRtkPlatformConfigTimeout);
-
     AppTimer_add(ReqRtkPlatformConfigTimeout, D_SEC(2));
     MA_ReqRtkPlatformConfig();
 }
@@ -327,12 +315,11 @@
     }
 }
 
-static void ConnectPlatformLater(union sigval sig) {
-    AppTimer_delete(ConnectPlatformLater);
+static void ConnectPlatformLater(apptimer_var_t val) {
     ConnectPlatform(exceptSocket.domain_name, exceptSocket.port);
 }
 
-static void *StatusListenThread(void *p) {
+static void StatusListenThread(void) {
     while (true) {
         sem_wait(&sem_status_changed);
 
@@ -415,6 +402,8 @@
         case GPS_UPDATE_EVT: {
             const gpsStatus_t *gps = (gpsStatus_t *) data;
 
+            DEBUG("GPS: %s", const_cast<gpsStatus_t *>(gps)->toString().c_str());
+
             gbf.qf = gps->gps_status;
             gbf.latitude = gps->latitude;
             gbf.longitude = gps->longitude;
@@ -434,6 +423,7 @@
 
                 MA_SendRtkBrief(&rbf);
             }
+
 //        MA_SendGpsBrief(&brief);
             RequestRtkDownload(gps, 1);
             break;
@@ -443,6 +433,8 @@
             uint32_t ost1 = ost;
 
             const rtk_info *rtk = (rtk_info *) data;
+
+            DEBUG("RTK: %s", const_cast<rtk_info *>(rtk)->toString().c_str());
 
             rbf.qf = rtk->qf;
             rbf.coord_x = rtk->y;
@@ -517,7 +509,7 @@
                 if (strlen(defaultMcuRom.verCode) > 0 && ver.size() >= 4 &&
                     strcmp(defaultMcuRom.verCode, ver[3].c_str()) != 0 &&
                     defaultMcuRom.rom != NULL) {
-                    UploadDfuFile(defaultMcuRom.rom, defaultMcuRom.length);
+                    /////////////////UploadDfuFile(defaultMcuRom.rom, defaultMcuRom.length);
                     delete[]defaultMcuRom.rom;
                     defaultMcuRom.rom = NULL;
                 }
@@ -678,7 +670,7 @@
                 if (sta == 3) {
                     // Connected
                     btConnected = true;
-                    ParseMcuInit();
+                    ////////////////////ParseMcuInit();
                     ConfigRTKModuleLater();
 
                     PlayTTS("钃濈墮杩炴帴", NULL);
@@ -713,7 +705,7 @@
             if (Virtual2IsConnected()) {
 
             } else {
-                ParseMcu(data, length);
+                ///////////ParseMcu(data, length);
             }
             break;
         }
@@ -737,10 +729,10 @@
     return ret;
 }
 
-static void RegisterPlatformTimeout(union sigval sig)
+static void RegisterPlatformTimeout(apptimer_var_t val)
 {
     DEBUG("RTK骞冲彴娉ㄥ唽瓒呮椂");
-    AppTimer_delete(RegisterPlatformTimeout);
+
     RegisterPlatform();
 }
 
@@ -753,19 +745,17 @@
                        strlen((char *)deviceInfo.device_model), deviceInfo.device_sn, deviceInfo.imei);
 }
 
-static void TriggerHeartbeat(union sigval sig) {
-    AppTimer_delete(TriggerHeartbeat);
-
+static void TriggerHeartbeat(apptimer_var_t val) {
     if (platformStatus.login && platformStatus.connected) {
         SendHeartBeat(DATA_ACCESS_PLATFORM);
         AppTimer_add(TriggerHeartbeat, D_SEC(30));
     }
 }
 
-static void LoginPlatformTimeout(union sigval sig)
+static void LoginPlatformTimeout(apptimer_var_t val)
 {
     DEBUG("RTK骞冲彴鐧诲綍瓒呮椂");
-    AppTimer_delete(LoginPlatformTimeout);
+
     LoginPlatform();
 }
 
@@ -829,9 +819,8 @@
     AppTimer_add(RequestRtkNoResp, D_SEC(7));           // 搴旇姣忕鏀跺埌涓�娆�
 }
 
-static void RequestRtkNoResp(union sigval sig)
+static void RequestRtkNoResp(apptimer_var_t val)
 {
-    AppTimer_delete(RequestRtkNoResp);
     requestPlatformSendRtk = true;
     rtcmLength = 0;
 }

--
Gitblit v1.8.0