yy1717
2022-12-08 f7a18ec4494b9c5c9ef3fd440bbf68ffc6425e18
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);
}