From b73f32bc8ad86a7bb5f0739ac0fd7aa4c04cce98 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期三, 25 三月 2020 19:00:06 +0800
Subject: [PATCH] 加减档

---
 lib/src/main/cpp/test_items2/road_exam.cpp |   43 +++++++++++++++++++++++++++++++++++++------
 1 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/lib/src/main/cpp/test_items2/road_exam.cpp b/lib/src/main/cpp/test_items2/road_exam.cpp
index b280802..6c9e1a6 100644
--- a/lib/src/main/cpp/test_items2/road_exam.cpp
+++ b/lib/src/main/cpp/test_items2/road_exam.cpp
@@ -14,6 +14,7 @@
 #include "../master/comm_if.h"
 #include "drive_straight.h"
 #include "stop_car.h"
+#include "operate_gear.h"
 
 #include <vector>
 #include <list>
@@ -40,6 +41,7 @@
 static bool occurCrashRedLine;
 static bool occurCrashGreenLine;
 static bool occurOverSpeed;
+static bool occurSecondBreak;
 static int checkCrashGreenTimeout;
 static char carIntersectionOfGreenLine;
 static int currTurnSignalStatus;
@@ -66,9 +68,13 @@
 static int startCar;
 static int currExamMapIndex;
 
+static bool checkDoor = false;
+static bool handBreakActive = false;
+static bool reportRPMOver = false;
+
 static const int MAX_ENGINE_RPM = 2500;
-static const double START_CAR_MOVE_DISTANCE = 0.5;//10.0;
-static const double START_CAR_CHECK_DOOR_DISTANCE = 0.1;//1.0;
+static const double START_CAR_MOVE_DISTANCE = 10.0;
+static const double START_CAR_CHECK_DOOR_DISTANCE = 1.0;
 static const uint32_t GEAR_N_SLIDE_TIMEOUT = D_SEC(5);
 static const uint32_t GEAR_ERROR_TIMEOUT = D_SEC(15);
 static const uint32_t STOP_CAR_TIME = D_SEC(2);
@@ -97,6 +103,7 @@
     occurCrashRedLine = false;
     occurCrashGreenLine = false;
     occurOverSpeed = false;
+    occurSecondBreak = false;
     checkCrashGreenTimeout = 0;
     carIntersectionOfGreenLine = 0;
 
@@ -116,14 +123,22 @@
     currExamMapIndex = -1;
 
     startCar = START_CAR_NOT_DO;
+
+    checkDoor = false;
+    handBreakActive = false;
+    reportRPMOver = false;
+}
+
+void TerminateRoadExam(void)
+{
+    TerminateDummyLightExam();
+    TerminateStopCarExam();
+    TerminateOperateGearExam();
 }
 
 static void TestRoadStartCar(const car_model *car, double speed, int moveDirect, const struct RtkTime *rtkTime)
 {
     double moveDistance;
-    static bool checkDoor = false;
-    static bool handBreakActive = false;
-    static bool reportRPMOver = false;
 
     if (startCar == START_CAR_NOT_DO) {
         startPoint = car->basePoint;
@@ -186,6 +201,18 @@
         }
     } else {
         occurOverSpeed = false;
+    }
+
+    // 鍓埞杞︽娴�
+    if (ReadCarStatus(SECOND_BREAK) == BREAK_ACTIVE) {
+        // 鍓埞杞﹁俯涓嬶紝涓嶅悎鏍�
+        if (!occurSecondBreak) {
+            DEBUG("鍓埞杞﹀姩浣滀簡");
+            occurSecondBreak = true;
+            AddExamFault(17, rtkTime);
+        }
+    } else {
+        occurSecondBreak = false;
     }
 
     // 鎸′綅鍖归厤妫�娴�
@@ -327,7 +354,6 @@
             currTurnSignalStatus = ReadCarStatus(TURN_SIGNAL_LAMP);
             break;
     }
-
 
     // 妫�鏌ユ槸鍚︽寔缁浆鍚�
     char turnDirect = CheckCarTurn(CarModelList);
@@ -491,6 +517,8 @@
                 StartDriveStraightExam(currExamMapIndex, RoadMapList);
             } else if (RoadMapList[currExamMapIndex].type == STOP_CAR_MAP) {
                 StartStopCarExam(currExamMapIndex, RoadMapList);
+            } else if (RoadMapList[currExamMapIndex].type == OP_GEAER_MAP) {
+                StartOperateGearExam(currExamMapIndex, RoadMapList);
             }
         }
     } else if (startCar == START_CAR_DONE) {
@@ -506,6 +534,9 @@
         } else if (RoadMapList[currExamMapIndex].type == STOP_CAR_MAP) {
             currExamMapIndex = ExecuteStopCarExam(currExamMapIndex, RoadMapList, car,
                                                         CarModelList, speed, moveDirect, rtkTime);
+        } else if (RoadMapList[currExamMapIndex].type == OP_GEAER_MAP) {
+            currExamMapIndex = ExecuteOperateGearExam(currExamMapIndex, RoadMapList, car,
+                                   CarModelList, speed, moveDirect, rtkTime);
         }
 
         if (currExamMapIndex == -1) {

--
Gitblit v1.8.0