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