From 25777013517d1bd398a98504826a417236706af2 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 24 三月 2020 19:01:29 +0800
Subject: [PATCH] 车辆信号完善,路边停车完善。

---
 lib/src/main/cpp/test_items2/dummy_light.cpp |   30 +++++++++++++++++++++++-------
 1 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/lib/src/main/cpp/test_items2/dummy_light.cpp b/lib/src/main/cpp/test_items2/dummy_light.cpp
index 3f7298d..9c7fc71 100644
--- a/lib/src/main/cpp/test_items2/dummy_light.cpp
+++ b/lib/src/main/cpp/test_items2/dummy_light.cpp
@@ -25,6 +25,7 @@
 
 static int checkCnt;
 static bool turn_left_active, flash_beam_active;
+
 static int examTtsSeq = 0;
 static bool testing;
 
@@ -43,6 +44,8 @@
         content[i].itemStatus = TTS_NOT_START;
     }
     testing = true;
+
+    AppTimer_delete(DummyLightCheckActive);
     AppTimer_delete(ExamDummyLight);
     AppTimer_add(ExamDummyLight, D_SEC(2));
 }
@@ -71,9 +74,11 @@
 
 static void DummyLightCheckActive(union sigval sig)
 {
-    DEBUG("DummyLightCheckActive item = %d", sig.sival_int);
+    int active = sig.sival_int;
+    AppTimer_delete(DummyLightCheckActive);
+    DEBUG("DummyLightCheckActive item = %d", active);
 
-    switch (sig.sival_int) {
+    switch (active) {
         case DRIVE_AT_NIGHT:
         case TURN_ON_MAIN_BEAM_LAMP:
             if (ReadCarStatus(MAIN_BEAM_LAMP) != MAIN_BEAM_LIGHT) {
@@ -95,8 +100,16 @@
         case THROUGE_CROSSWALK:
         case THROUGE_CURVE:
         case THROUGE_CROSSROADS:
-            if (ReadCarStatus(FLASH_BEAM_LAMP) != FLASH_BEAM_LIGHT) {
-                AddExamFault(58, &currRtkTime);
+            if (++checkCnt < 5) {
+                if (ReadCarStatus(FLASH_BEAM_LAMP) == FLASH_BEAM_LIGHT) {
+                    flash_beam_active = true;
+                }
+                AppTimer_add(DummyLightCheckActive, D_SEC(1), active);
+                return;
+            } else {
+                if (!flash_beam_active) {
+                    AddExamFault(58, &currRtkTime);
+                }
             }
             break;
         case OVERTAKE:
@@ -130,7 +143,7 @@
     }
 
     for (int i = 0; i < contentNum; ++i) {
-        if (content[i].item == sig.sival_int) {
+        if (content[i].item == active) {
             content[i].itemStatus = CHECK_OPERATE;
             break;
         }
@@ -161,8 +174,11 @@
                     checkCnt = 0;
                     turn_left_active = flash_beam_active = false;
                     AppTimer_add(DummyLightCheckActive, D_SEC(1), content[i].item);
-                }
-                else if (content[i].item >= 100)
+                } else if (content[i].item == THROUGE_CROSSWALK || content[i].item == THROUGE_CURVE || content[i].item == THROUGE_CROSSROADS) {
+                    checkCnt = 0;
+                    flash_beam_active = false;
+                    AppTimer_add(DummyLightCheckActive, D_SEC(1), content[i].item);
+                } else if (content[i].item >= 100)
                     AppTimer_add(DummyLightCheckActive, D_SEC(3), content[i].item);
                 else
                     AppTimer_add(DummyLightCheckActive, D_SEC(5), content[i].item);

--
Gitblit v1.8.0