From 27fc91fbe8f88b6885356e68828cfe1ce1db7601 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期三, 28 二月 2024 09:53:13 +0800
Subject: [PATCH] 坐标

---
 lib/src/main/cpp/test_common/car_sensor.cpp |  132 +++++++++++++++++---------------------------
 1 files changed, 51 insertions(+), 81 deletions(-)

diff --git a/lib/src/main/cpp/test_common/car_sensor.cpp b/lib/src/main/cpp/test_common/car_sensor.cpp
index 1ee0721..cce53e4 100644
--- a/lib/src/main/cpp/test_common/car_sensor.cpp
+++ b/lib/src/main/cpp/test_common/car_sensor.cpp
@@ -10,6 +10,8 @@
 #include "../jni_log.h"
 #include "../rtk_platform/platform.h"
 
+using namespace std;
+
 #define DEBUG(fmt, args...)     LOGD("<car_sensor> <%s>: " fmt, __func__, ##args)
 
 #define MAX_SENSOR_NUM          32
@@ -45,8 +47,6 @@
     SENSOR_SPEED
 };
 
-
-
 static int CarStatus[CAR_STATUS_END];
 
 static struct sensor_cfg {
@@ -74,9 +74,9 @@
     SensorNum = 0;
     memset(SensorConfig, 0, sizeof(SensorConfig));
 
-    memset(CarStatus, 0, sizeof(CarStatus));
-    CarStatus[DOOR] = DOOR_CLOSE;
-    CarStatus[GEAR] = GEAR_N;
+    for (int i = 0; i < CAR_STATUS_END; ++i) {
+        CarStatus[i] = -1;
+    }
 
     memset(&Sensor, 0, sizeof(Sensor));
 
@@ -118,36 +118,12 @@
 //    pthread_mutex_unlock(&sonser_mutex);
 }
 
-void UpdateSensor(uint16_t gpio, uint16_t speed, uint16_t rpm)
-{
-    uint16_t chg = 0;
-
-    sonser_mutex.lock();
-    chg = gpioStore^gpio;
-    gpioStore = gpio;
-    sonser_mutex.unlock();
-
-    WriteCarStatus(OBD_SPEED, speed);
-    WriteCarStatus(ENGINE_RPM, rpm);
-
-    for (int i = 0; i < SensorNum; ++i) {
-        if (chg & BV(SensorConfig[i].gpioId)) {
-            int level = 0;
-
-            if (gpio & BV(SensorConfig[i].gpioId)) {
-                level = 1;
-            }
-
-            if (level == SensorConfig[i].validLvl) {
-                SensorChanged(SensorConfig[i].funId, 1);
-            } else {
-                SensorChanged(SensorConfig[i].funId, 0);
-            }
-        }
-    }
-}
-
-void UpdateSensor(const car_sensor_t *s)
+/******************************************
+ * 鍒濇寰楀埌鐏厜銆佹尅浣嶇瓑IO淇″彿锛屽悗缁鏍规嵁寤惰繜鍒ゆ柇
+ * 寰楀埌杞悜鐏殑姝g‘鎯呭喌
+ * @param s
+ */
+void UpdateSensorHw(const car_sensor_t *s)
 {
     WriteCarStatus(OBD_SPEED, s->speed);
     WriteCarStatus(ENGINE_RPM, s->engine);
@@ -226,10 +202,11 @@
 static void WriteCarStatus(uint16_t id, int value)
 {
     int old_value;
-    lock_guard<std::mutex> lock(status_rw_mutex);
-    old_value = CarStatus[id];
-    CarStatus[id] = value;
-
+    {
+        lock_guard<std::mutex> lock(status_rw_mutex);
+        old_value = CarStatus[id];
+        CarStatus[id] = value;
+    }
     if (id != OBD_SPEED && id != ENGINE_RPM && old_value != value) {
         uint8_t buffer[6];
 
@@ -241,6 +218,10 @@
         buffer[5] = BREAK_UINT32(value, 0);
 
         PlatformStatusChanged(SENSOR_CHANGE_EVT, buffer, 6);
+    } else if (id == OBD_SPEED) {
+        UpdateSensor(OBD_SPEED, value);
+    } else if (id == ENGINE_RPM) {
+        UpdateSensor(ENGINE_RPM, value);
     }
 }
 
@@ -249,7 +230,7 @@
     DEBUG("纭杞悜鐏� 宸� %d 鍙� %d", left_turn_signal, right_turn_signal);
 
     if (!left_turn_signal && !right_turn_signal) {
-        WriteCarStatus(TURN_SIGNAL_LAMP, OFF_LIGHT);
+        WriteCarStatus(TURN_SIGNAL_LAMP, LIGHT_OFF);
     } else if (left_turn_signal && right_turn_signal) {
         WriteCarStatus(TURN_SIGNAL_LAMP, HAZARD_LIGHTS);
     } else if (left_turn_signal) {
@@ -261,12 +242,13 @@
 
 static void flashBeamLightClose(apptimer_var_t val)
 {
-    WriteCarStatus(FLASH_BEAM_LAMP, OFF_LIGHT);
+    WriteCarStatus(FLASH_BEAM_LAMP, LIGHT_OFF);
 }
 
 static void SensorChanged(int id, int value)
 {
     DEBUG("鐘舵�佹敼鍙� %d = %d", id, value);
+
     switch (id) {
         case SENSOR_LEFT_TURN_SIGNAL: {
             left_turn_signal = (bool) (value > 0);
@@ -286,25 +268,25 @@
         }
         case SENSOR_FOG_LIGHT: {
             if (value == 0) {
-                WriteCarStatus(FOG_LAMP, OFF_LIGHT);
+                WriteCarStatus(FOG_LAMP, LIGHT_OFF);
             } else {
-                WriteCarStatus(FOG_LAMP, FOG_LIGHT);
+                WriteCarStatus(FOG_LAMP, LIGHT_ON);
             }
             break;
         }
         case SENSOR_CLEARANCE_LIGHT: {
             if (value == 0) {
-                WriteCarStatus(CLEARANCE_LAMP, OFF_LIGHT);
+                WriteCarStatus(CLEARANCE_LAMP, LIGHT_OFF);
             } else {
-                WriteCarStatus(CLEARANCE_LAMP, CLEARANCE_LIGHT);
+                WriteCarStatus(CLEARANCE_LAMP, LIGHT_ON);
             }
             break;
         }
         case SENSOR_DIPPED_BEAM_LIGHT: {
             if (value == 0) {
-                WriteCarStatus(DIPPED_BEAM_LAMP, OFF_LIGHT);
+                WriteCarStatus(DIPPED_BEAM_LAMP, LIGHT_OFF);
             } else {
-                WriteCarStatus(DIPPED_BEAM_LAMP, DIPPED_BEAM_LIGHT);
+                WriteCarStatus(DIPPED_BEAM_LAMP, LIGHT_ON);
             }
             break;
         }
@@ -312,17 +294,17 @@
             static uint32_t t1 = 0;
 
             if (value == 0) {
-                WriteCarStatus(MAIN_BEAM_LAMP, OFF_LIGHT);
+                WriteCarStatus(MAIN_BEAM_LAMP, LIGHT_OFF);
             } else {
-                WriteCarStatus(MAIN_BEAM_LAMP, MAIN_BEAM_LIGHT);
+                WriteCarStatus(MAIN_BEAM_LAMP, LIGHT_ON);
             }
 
             if (value != 0) {
                 t1 = AppTimer_GetTickCount();
             } else if (AppTimer_GetTickCount() - t1 < D_SEC(3)) {
                 // 3绉掑唴瀹屾垚浜伃锛岄棯鐏�
-                if (ReadCarStatus(FLASH_BEAM_LAMP) != FLASH_BEAM_LIGHT) {
-                    WriteCarStatus(FLASH_BEAM_LAMP, FLASH_BEAM_LIGHT);
+                if (ReadCarStatus(FLASH_BEAM_LAMP) != LIGHT_ON) {
+                    WriteCarStatus(FLASH_BEAM_LAMP, LIGHT_ON);
                 }
                 AppTimer_delete(flashBeamLightClose);
                 AppTimer_add(flashBeamLightClose, D_SEC(2));
@@ -331,41 +313,41 @@
         }
         case SENSOR_SEATBELT: {
             if (value == 0) {
-                WriteCarStatus(SEATBELT, EJECT_SEATBELT);
+                WriteCarStatus(SEATBELT, EJECT);
             } else {
-                WriteCarStatus(SEATBELT, INSERT_SEATBELT);
+                WriteCarStatus(SEATBELT, INSERT);
             }
             break;
         }
         case SENSOR_ENGINE_START: {
             if (value == 0) {
-                WriteCarStatus(ENGINE_START, ENGINE_START_INACTIVE);
+                WriteCarStatus(ENGINE_START, INACTIVE);
             } else {
-                WriteCarStatus(ENGINE_START, ENGINE_START_ACTIVE);
+                WriteCarStatus(ENGINE_START, ACTIVE);
             }
             break;
         }
         case SENSOR_BREAK: {
             if (value == 0) {
-                WriteCarStatus(BREAK, BREAK_INACTIVE);
+                WriteCarStatus(BRAKE, INACTIVE);
             } else {
-                WriteCarStatus(BREAK, BREAK_ACTIVE);
+                WriteCarStatus(BRAKE, ACTIVE);
             }
             break;
         }
         case SENSOR_BREAK2: {
             if (value == 0) {
-                WriteCarStatus(SECOND_BREAK, BREAK_INACTIVE);
+                WriteCarStatus(SECOND_BRAKE, INACTIVE);
             } else {
-                WriteCarStatus(SECOND_BREAK, BREAK_ACTIVE);
+                WriteCarStatus(SECOND_BRAKE, ACTIVE);
             }
             break;
         }
         case SENSOR_HANDBREAK: {
             if (value == 0) {
-                WriteCarStatus(HAND_BREAK, BREAK_INACTIVE);
+                WriteCarStatus(HAND_BRAKE, INACTIVE);
             } else {
-                WriteCarStatus(HAND_BREAK, BREAK_ACTIVE);
+                WriteCarStatus(HAND_BRAKE, ACTIVE);
             }
             break;
         }
@@ -379,48 +361,36 @@
         }
         case SENSOR_SURROUND_CAR_1: {
             if (value == 0) {
-                WriteCarStatus(SURROUND_CAR_1, SURROUND_CAR_INACTIVE);
+                WriteCarStatus(SURROUND_CAR_1, INACTIVE);
             } else {
-                WriteCarStatus(SURROUND_CAR_1, SURROUND_CAR_ACTIVE);
+                WriteCarStatus(SURROUND_CAR_1, ACTIVE);
             }
             break;
         }
         case SENSOR_SURROUND_CAR_2: {
             if (value == 0) {
-                WriteCarStatus(SURROUND_CAR_2, SURROUND_CAR_INACTIVE);
+                WriteCarStatus(SURROUND_CAR_2, INACTIVE);
             } else {
-                WriteCarStatus(SURROUND_CAR_2, SURROUND_CAR_ACTIVE);
+                WriteCarStatus(SURROUND_CAR_2, ACTIVE);
             }
             break;
         }
         case SENSOR_SURROUND_CAR_3: {
             if (value == 0) {
-                WriteCarStatus(SURROUND_CAR_3, SURROUND_CAR_INACTIVE);
+                WriteCarStatus(SURROUND_CAR_3, INACTIVE);
             } else {
-                WriteCarStatus(SURROUND_CAR_3, SURROUND_CAR_ACTIVE);
+                WriteCarStatus(SURROUND_CAR_3, ACTIVE);
             }
             break;
         }
         case SENSOR_SURROUND_CAR_4: {
             if (value == 0) {
-                WriteCarStatus(SURROUND_CAR_4, SURROUND_CAR_INACTIVE);
+                WriteCarStatus(SURROUND_CAR_4, INACTIVE);
             } else {
-                WriteCarStatus(SURROUND_CAR_4, SURROUND_CAR_ACTIVE);
+                WriteCarStatus(SURROUND_CAR_4, ACTIVE);
             }
             break;
         }
-//        case SENSOR_SHIFT_N:
-//        case SENSOR_SHIFT_1:
-//        case SENSOR_SHIFT_2:
-//        case SENSOR_SHIFT_3:
-//        case SENSOR_SHIFT_4:
-//        case SENSOR_SHIFT_5:
-//        case SENSOR_SHIFT_R: {
-//            if (value != 0) {
-//                WriteCarStatus(GEAR, id - SENSOR_SHIFT_N + GEAR_N);
-//            }
-//            break;
-//        }
         default:
             return;
     }

--
Gitblit v1.8.0