From 21834035950feaadac9d4c7cad82b90ee624c984 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期一, 17 八月 2020 19:30:06 +0800
Subject: [PATCH] 传感器变更

---
 lib/src/main/cpp/test_common/car_sensor.cpp |   69 ++++++++++++++++++++++++++++++++++
 1 files changed, 68 insertions(+), 1 deletions(-)

diff --git a/lib/src/main/cpp/test_common/car_sensor.cpp b/lib/src/main/cpp/test_common/car_sensor.cpp
index ea4c242..8e35440 100644
--- a/lib/src/main/cpp/test_common/car_sensor.cpp
+++ b/lib/src/main/cpp/test_common/car_sensor.cpp
@@ -56,9 +56,11 @@
 } SensorConfig[MAX_SENSOR_NUM];
 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;
 
+inline static int BX(int value);
 static void WriteCarStatus(uint16_t id, int value);
 static void LRLightTimeout(union sigval sig);
 static void ChangeLRLight(int light);
@@ -74,6 +76,8 @@
     memset(SensorConfig, 0, sizeof(SensorConfig));
 
     memset(CarStatus, 0, sizeof(CarStatus));
+
+    memset(&Sensor, 0, sizeof(Sensor));
 
     left_turn_signal = right_turn_signal = 0;
     flashMainBeamCnt = 0;
@@ -143,6 +147,66 @@
             }
         }
     }
+}
+
+void UpdateSensor(const car_sensor_t *s)
+{
+    WriteCarStatus(OBD_SPEED, s->speed);
+    WriteCarStatus(ENGINE_RPM, s->engine);
+
+    if (s->leftTurnLamp != Sensor.leftTurnLamp && s->leftTurnLamp != '#') {
+        SensorChanged(SENSOR_LEFT_TURN_SIGNAL, BX(s->leftTurnLamp));
+    }
+    if (s->rightTurnLamp != Sensor.leftTurnLamp && s->rightTurnLamp != '#') {
+        SensorChanged(SENSOR_RIGHT_TURN_SIGNAL, BX(s->rightTurnLamp));
+    }
+    if (s->fogLamp != Sensor.fogLamp && s->fogLamp != '#') {
+        SensorChanged(SENSOR_FOG_LIGHT, BX(s->fogLamp));
+    }
+    if (s->clearanceLamp != Sensor.clearanceLamp && s->clearanceLamp != '#') {
+        SensorChanged(SENSOR_CLEARANCE_LIGHT, BX(s->clearanceLamp));
+    }
+    if (s->dippedBeamLamp != Sensor.dippedBeamLamp && s->dippedBeamLamp != '#') {
+        SensorChanged(SENSOR_DIPPED_BEAM_LIGHT, BX(s->dippedBeamLamp));
+    }
+    if (s->mainBeamLamp != Sensor.leftTurnLamp && s->mainBeamLamp != '#') {
+        SensorChanged(SENSOR_MAIN_BEAM_LIGHT, BX(s->mainBeamLamp));
+    }
+    if (s->seatBelt != Sensor.seatBelt && s->seatBelt != '#') {
+        SensorChanged(SENSOR_SEATBELT, BX(s->seatBelt));
+    }
+    if (s->key != Sensor.key && s->key != '#') {
+        SensorChanged(SENSOR_ENGINE_START, s->key == 3? 1 : 0);
+    }
+    if (s->mainBreak != Sensor.mainBreak && s->mainBreak != '#') {
+        SensorChanged(SENSOR_BREAK, BX(s->mainBreak));
+    }
+    if (s->assBreak != Sensor.assBreak && s->assBreak != '#') {
+        SensorChanged(SENSOR_BREAK2, BX(s->assBreak));
+    }
+    if (s->handBreak != Sensor.handBreak && s->handBreak != '#') {
+        SensorChanged(SENSOR_HANDBREAK, BX(s->handBreak));
+    }
+    if (s->lock != Sensor.lock && s->lock != '#') {
+        SensorChanged(SENSOR_DOOR, BX(s->lock));
+    }
+    if (s->surround1 != Sensor.surround1 && s->surround1 != '#') {
+        SensorChanged(SENSOR_SURROUND_CAR_1, BX(s->surround1));
+    }
+    if (s->surround2 != Sensor.surround2 && s->surround2 != '#') {
+        SensorChanged(SENSOR_SURROUND_CAR_2, BX(s->surround2));
+    }
+    if (s->surround3 != Sensor.surround3 && s->surround3 != '#') {
+        SensorChanged(SENSOR_SURROUND_CAR_3, BX(s->surround3));
+    }
+    if (s->surround4 != Sensor.surround4 && s->surround4 != '#') {
+        SensorChanged(SENSOR_SURROUND_CAR_4, BX(s->surround4));
+    }
+    if (s->gear != Sensor.gear && s->gear != '#') {
+        SensorChanged(GEAR, GEAR_N + s->gear);
+    }
+
+    Sensor = *s;
 }
 
 int ReadCarStatus(uint16_t id)
@@ -368,4 +432,7 @@
     }
 }
 
-
+inline static int BX(int value)
+{
+    return (value == 1) ? 1 : 0;
+}

--
Gitblit v1.8.0