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