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/road_exam.cpp |   26 ++++++++++++++------------
 1 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/lib/src/main/cpp/test_items2/road_exam.cpp b/lib/src/main/cpp/test_items2/road_exam.cpp
index b158dd5..b280802 100644
--- a/lib/src/main/cpp/test_items2/road_exam.cpp
+++ b/lib/src/main/cpp/test_items2/road_exam.cpp
@@ -13,6 +13,7 @@
 #include "through_something.h"
 #include "../master/comm_if.h"
 #include "drive_straight.h"
+#include "stop_car.h"
 
 #include <vector>
 #include <list>
@@ -55,13 +56,7 @@
 static bool slideNormalDistance;
 static bool occurSlide;
 
-static struct drive_timer {
-    int hour;
-    int min;
-    int sec;
-    int msec;
-} crashGreenRunTime, crashGreenCmpTime, crashGreenStartTime, turnSignalChangeTime;
-
+static struct drive_timer crashGreenRunTime, crashGreenCmpTime, crashGreenStartTime, turnSignalChangeTime;
 static struct drive_timer gearErrorTimePoint;
 static struct drive_timer gearNSlideTimePoint;
 
@@ -85,7 +80,7 @@
 static const int SPEED_GEAR_TABLE[][2] = {{0, 20}, {5, 30}, {15, 40}, {25, 10000}, {35, 10000}};
 
 static void TestRoadStartCar(const car_model *car, double speed, int moveDirect, const struct RtkTime *rtkTime);
-static void Rtk2DriveTimer(struct drive_timer &tm, const struct RtkTime *rtkTime);
+
 static char isTurn(int currYaw, int prevYaw, int &ang);
 static char CheckCarTurn(LIST_CAR_MODEL &CarModelList);
 static bool CrashRedLine(LIST_ROAD_MAP &RoadMapList, const car_model *car);
@@ -494,22 +489,29 @@
                 StartThroughExam(currExamMapIndex, RoadMapList);
             } else if (RoadMapList[currExamMapIndex].type == DRIVE_STRAIGHT_MAP) {
                 StartDriveStraightExam(currExamMapIndex, RoadMapList);
+            } else if (RoadMapList[currExamMapIndex].type == STOP_CAR_MAP) {
+                StartStopCarExam(currExamMapIndex, RoadMapList);
             }
         }
     } else if (startCar == START_CAR_DONE) {
         int prevIdx = currExamMapIndex;
 
-        if (currExamMapIndex >= THROUGH_INTERSECTION_MAP && currExamMapIndex <= TURN_AROUND_MAP) {
+        if (RoadMapList[currExamMapIndex].type >= THROUGH_INTERSECTION_MAP && currExamMapIndex <= TURN_AROUND_MAP) {
             currExamMapIndex = ExecuteThroughExam(currExamMapIndex, RoadMapList, car,
                                                   CarModelList, speed, moveDirect, rtkTime);
         }
-        else if (currExamMapIndex == DRIVE_STRAIGHT_MAP) {
+        else if (RoadMapList[currExamMapIndex].type == DRIVE_STRAIGHT_MAP) {
             currExamMapIndex = ExecuteDriveStraightExam(currExamMapIndex, RoadMapList, car,
                                      CarModelList, speed, moveDirect, rtkTime);
+        } else if (RoadMapList[currExamMapIndex].type == STOP_CAR_MAP) {
+            currExamMapIndex = ExecuteStopCarExam(currExamMapIndex, RoadMapList, car,
+                                                        CarModelList, speed, moveDirect, rtkTime);
         }
 
         if (currExamMapIndex == -1) {
-            MA_EnterMap(RoadMapList[prevIdx].id, RoadMapList[prevIdx].type, 1);
+            DEBUG("绂诲紑鍖哄煙 index %d id %d type %d", prevIdx, RoadMapList[prevIdx].id, RoadMapList[prevIdx].type);
+
+            MA_EnterMap(RoadMapList[prevIdx].id, RoadMapList[prevIdx].type, 0);
         }
     }
 }
@@ -596,7 +598,7 @@
     return ret;
 }
 
-static void Rtk2DriveTimer(struct drive_timer &tm, const struct RtkTime *rtkTime)
+void Rtk2DriveTimer(struct drive_timer &tm, const struct RtkTime *rtkTime)
 {
     tm.hour = rtkTime->hh;
     tm.min = rtkTime->mm;

--
Gitblit v1.8.0