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