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/test_common/car_sensor.cpp |   29 ++++++++++++-----------------
 1 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/lib/src/main/cpp/test_common/car_sensor.cpp b/lib/src/main/cpp/test_common/car_sensor.cpp
index 51d43c4..1ee0721 100644
--- a/lib/src/main/cpp/test_common/car_sensor.cpp
+++ b/lib/src/main/cpp/test_common/car_sensor.cpp
@@ -2,7 +2,7 @@
 // Created by fctom on 2020/2/13.
 //
 
-#include <pthread.h>
+#include <mutex>
 #include "car_sensor.h"
 #include "../driver_test.h"
 #include "../defs.h"
@@ -57,14 +57,14 @@
 static int SensorNum = 0;
 
 static car_sensor_t Sensor;
-static pthread_mutex_t sonser_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t status_rw_mutex = PTHREAD_MUTEX_INITIALIZER;
+static std::mutex sonser_mutex;
+static std::mutex status_rw_mutex;
 
 inline static int BX(int value);
 static void WriteCarStatus(uint16_t id, int value);
 
-static void ConfirmTurnSigalLater(union sigval sig);
-static void flashBeamLightClose(union sigval sig);
+static void ConfirmTurnSigalLater(apptimer_var_t val);
+static void flashBeamLightClose(apptimer_var_t val);
 
 static void SensorChanged(int id, int value);
 
@@ -82,8 +82,6 @@
 
     left_turn_signal = right_turn_signal = false;
 
-    pthread_mutex_init(&sonser_mutex, NULL);
-    pthread_mutex_init(&status_rw_mutex, NULL);
 }
 
 void SetSensorCfg(int (*sensor)[3], int sensorNum)
@@ -124,10 +122,10 @@
 {
     uint16_t chg = 0;
 
-    pthread_mutex_lock(&sonser_mutex);
+    sonser_mutex.lock();
     chg = gpioStore^gpio;
     gpioStore = gpio;
-    pthread_mutex_unlock(&sonser_mutex);
+    sonser_mutex.unlock();
 
     WriteCarStatus(OBD_SPEED, speed);
     WriteCarStatus(ENGINE_RPM, rpm);
@@ -218,9 +216,9 @@
 {
     int value;
 
-    pthread_mutex_lock(&status_rw_mutex);
+    lock_guard<std::mutex> lock(status_rw_mutex);
+
     value = CarStatus[id];
-    pthread_mutex_unlock(&status_rw_mutex);
 
     return value;
 }
@@ -228,10 +226,9 @@
 static void WriteCarStatus(uint16_t id, int value)
 {
     int old_value;
-    pthread_mutex_lock(&status_rw_mutex);
+    lock_guard<std::mutex> lock(status_rw_mutex);
     old_value = CarStatus[id];
     CarStatus[id] = value;
-    pthread_mutex_unlock(&status_rw_mutex);
 
     if (id != OBD_SPEED && id != ENGINE_RPM && old_value != value) {
         uint8_t buffer[6];
@@ -247,10 +244,8 @@
     }
 }
 
-static void ConfirmTurnSigalLater(union sigval sig)
+static void ConfirmTurnSigalLater(apptimer_var_t val)
 {
-    AppTimer_delete(ConfirmTurnSigalLater);
-
     DEBUG("纭杞悜鐏� 宸� %d 鍙� %d", left_turn_signal, right_turn_signal);
 
     if (!left_turn_signal && !right_turn_signal) {
@@ -264,7 +259,7 @@
     }
 }
 
-static void flashBeamLightClose(union sigval sig)
+static void flashBeamLightClose(apptimer_var_t val)
 {
     WriteCarStatus(FLASH_BEAM_LAMP, OFF_LIGHT);
 }

--
Gitblit v1.8.0