From 03a05501800d2c02bca1c05ca6f7080d715aba23 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期五, 18 九月 2020 15:41:50 +0800
Subject: [PATCH] 坐标

---
 lib/src/main/cpp/test_items2/road_exam.cpp |   34 +++++++++++++++++++++++++++++++---
 1 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/lib/src/main/cpp/test_items2/road_exam.cpp b/lib/src/main/cpp/test_items2/road_exam.cpp
index 0ade5a9..8a1c97f 100644
--- a/lib/src/main/cpp/test_items2/road_exam.cpp
+++ b/lib/src/main/cpp/test_items2/road_exam.cpp
@@ -90,9 +90,11 @@
 static bool occurSlide;
 
 static struct RtkTime crashGreenRunTime, crashGreenStartTime, stopTimepoint;
-
+static struct RtkTime gearChangeTimePoint;
 static struct RtkTime gearErrorTimePoint;
 static struct RtkTime gearNSlideTimePoint;
+
+static int gearChange;
 
 static car_sensor_value_t turnSignalStatus;
 
@@ -1324,6 +1326,21 @@
             occurSecondBreak = false;
         }
 
+        // 涓ゆ鎹㈡尅涓嶈繘
+        static int prevGear = -1;
+
+        int currGear = ReadCarStatus(GEAR);
+        if (currGear != GEAR_N && prevGear == GEAR_N) {
+            // 涓�娆℃崲鎸�
+            if (gearChange == currGear && TimeGetDiff(rtkTime, &gearChangeTimePoint) < D_SEC(5)) {
+                AddExamFault(7, rtkTime);
+            }
+
+            gearChange = currGear;
+            gearChangeTimePoint = *rtkTime;
+        }
+        prevGear = currGear;
+
         // 鎸′綅鍖归厤妫�娴�
         bool currGearError = false;
         bool currGearNSlide = false;
@@ -1475,9 +1492,9 @@
 
         if (RoadMap.calibrate) {
             if (currExamMapIndex < 0 && oldid >= 0) {
-                RoadChange(oldid, 0);
+                RoadChange(RoadMap.roads[oldid].id, 0);
             } else if (currExamMapIndex >= 0) {
-                RoadChange(currExamMapIndex, 1);
+                RoadChange(RoadMap.roads[currExamMapIndex].id, 1);
             }
         }
         Lane.guide = 0;
@@ -1648,6 +1665,9 @@
             RoadExamItem[RoadExamStatus] = ROAD_EXAM_ITEM_EXECED;
             if (RoadExamStatus == ROAD_EXAM_ITEM_CAR_START) {
                 freeRunExceptDistance = 60.0;
+            } else if (RoadExamStatus == ROAD_EXAM_ITEM_CAR_STOP) {
+                // 鑰冭瘯缁撴潫
+                MA_SendExamStatus(1, 1);
             } else {
                 freeRunExceptDistance = 2;//250.0;
             }
@@ -1674,6 +1694,14 @@
     } else if (RoadExamStatus == ROAD_EXAM_READY_NEXT && item == 2) {
         StartOvertakeExam(Lane.no);
         RoadExamStatus = ROAD_EXAM_ITEM_OVER_TAKE;
+    } else if (RoadExamStatus == ROAD_EXAM_READY_NEXT && item == 5) {
+        if (RoadExamItem[ROAD_EXAM_ITEM_STRAIGHT] == ROAD_EXAM_ITEM_EXECED &&
+                RoadExamItem[ROAD_EXAM_ITEM_OP_GEAR] == ROAD_EXAM_ITEM_EXECED &&
+                RoadExamItem[ROAD_EXAM_ITEM_CHANGE_LANE] == ROAD_EXAM_ITEM_EXECED &&
+                RoadExamItem[ROAD_EXAM_ITEM_OVER_TAKE] == ROAD_EXAM_ITEM_EXECED) {
+            StartStopCarExam();
+            RoadExamStatus = ROAD_EXAM_ITEM_CAR_STOP;
+        }
     }
 }
 

--
Gitblit v1.8.0