From 87156fa3adfa2e3232a6f6e612584aa8a4ebaea1 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 19 一月 2021 18:40:25 +0800
Subject: [PATCH] 添加模拟灯光

---
 lib/src/main/cpp/test_common/car_sensor.cpp |   27 +++++++++++----------------
 1 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/lib/src/main/cpp/test_common/car_sensor.cpp b/lib/src/main/cpp/test_common/car_sensor.cpp
index 8caa027..1a1a20b 100644
--- a/lib/src/main/cpp/test_common/car_sensor.cpp
+++ b/lib/src/main/cpp/test_common/car_sensor.cpp
@@ -16,7 +16,6 @@
 
 static uint16_t gpioStore;
 static int left_turn_signal, right_turn_signal;
-static int flashMainBeamCnt;
 
 enum {
     SENSOR_SEATBELT,
@@ -67,7 +66,7 @@
 static void ChangeLRLight(int light);
 static void ConfirmTurnSigalLater(union sigval sig);
 static void flashBeamLightClose(union sigval sig);
-static void confirmFlashBeamLightLater(union sigval sig);
+
 static void SensorChanged(int id, int value);
 
 void CarSensorInit(void)
@@ -83,7 +82,6 @@
     memset(&Sensor, 0, sizeof(Sensor));
 
     left_turn_signal = right_turn_signal = 0;
-    flashMainBeamCnt = 0;
 
     pthread_mutex_init(&sonser_mutex, NULL);
     pthread_mutex_init(&status_rw_mutex, NULL);
@@ -272,15 +270,9 @@
     WriteCarStatus(FLASH_BEAM_LAMP, OFF_LIGHT);
 }
 
-static void confirmFlashBeamLightLater(union sigval sig)
-{
-    AppTimer_delete(confirmFlashBeamLightLater);
-    flashMainBeamCnt = 0;
-}
-
 static void SensorChanged(int id, int value)
 {
-//    DEBUG("鐘舵�佹敼鍙� %d = %d", id, value);
+    DEBUG("鐘舵�佹敼鍙� %d = %d", id, value);
     switch (id) {
         case SENSOR_LEFT_TURN_SIGNAL: {
             left_turn_signal = value;
@@ -335,21 +327,24 @@
             break;
         }
         case SENSOR_MAIN_BEAM_LIGHT: {
+            static uint32_t t1 = 0;
+
             if (value == 0) {
                 WriteCarStatus(MAIN_BEAM_LAMP, OFF_LIGHT);
             } else {
                 WriteCarStatus(MAIN_BEAM_LAMP, MAIN_BEAM_LIGHT);
             }
 
-            if (++flashMainBeamCnt > 3) {         // 浜�-鐏�-浜�-鐏�
-                WriteCarStatus(FLASH_BEAM_LAMP, FLASH_BEAM_LIGHT);
-
+            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);
+                }
                 AppTimer_delete(flashBeamLightClose);
                 AppTimer_add(flashBeamLightClose, D_SEC(2));
             }
-
-            AppTimer_delete(confirmFlashBeamLightLater);
-            AppTimer_add(confirmFlashBeamLightLater, D_SEC(3));
             break;
         }
         case SENSOR_SEATBELT: {

--
Gitblit v1.8.0