From 611f51ed073de48e83f46d47c82cd5ebe61258d7 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期三, 16 九月 2020 18:14:27 +0800
Subject: [PATCH] 加入地图标定模式

---
 lib/src/main/cpp/test_items2/through_something.cpp |  113 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 61 insertions(+), 52 deletions(-)

diff --git a/lib/src/main/cpp/test_items2/through_something.cpp b/lib/src/main/cpp/test_items2/through_something.cpp
index 09f6318..1000b06 100644
--- a/lib/src/main/cpp/test_items2/through_something.cpp
+++ b/lib/src/main/cpp/test_items2/through_something.cpp
@@ -104,6 +104,10 @@
             RemoveTargetReduceRec(TargetReduceRec, key);
         }
     }
+
+    if (RoadMap.calibrate == 1)
+        goto GET_DISTANCE_OF_NEARBY_TARGET;
+
     // 浜鸿閬撱�佸叕浜ょ珯銆佸鏍�
     for (int i = 0; i < RoadMap.specialAreas.size(); i++) {
         if (RoadMap.specialAreas[i].type == GRID_AREA || RoadMap.specialAreas[i].road != RoadMap.roads[roadIndex].id)
@@ -165,6 +169,7 @@
         }
     }
 
+    GET_DISTANCE_OF_NEARBY_TARGET:
     if (nearbyTarget.size() > 0) {
         sort(nearbyTarget.begin(), nearbyTarget.end());
         return nearbyTarget[0];
@@ -182,69 +187,73 @@
             if (CrashTheLine(RoadMap.roads[road].stopLine[x].line, car, CarModelList)) {
                 DEBUG("瓒婅繃璺彛 road %d 璺彛 %d", road, x);
 
-                CrossRoadCallback(road, x, RoadMap.roads[road].stopLine[x].active, car);
+                CrossRoadCallback(RoadMap, road, x, ExamSchemeCrossing(RoadMap, road, x), car);
 
-                if (!(it->second & REDUCE_SPEED)) {
-                    // 涓嶆寜瑙勫畾鍑忛�燂紝涓嶅悎鏍�
-                    DEBUG("涓嶆寜瑙勫畾鍑忛��");
+                if (RoadMap.calibrate == 0) {
+                    if (!(it->second & REDUCE_SPEED)) {
+                        // 涓嶆寜瑙勫畾鍑忛�燂紝涓嶅悎鏍�
+                        DEBUG("涓嶆寜瑙勫畾鍑忛��");
 
-                    if (RoadMap.roads[road].stopLine[x].active == ROAD_ACTIVE_FORWARD) {
-                        AddExamFault(41, rtkTime);
-                    } else if (RoadMap.roads[road].stopLine[x].active ==
-                               ROAD_ACTIVE_TURN_LEFT) {
-                        AddExamFault(43, rtkTime);
-                    } else if (RoadMap.roads[road].stopLine[x].active ==
-                               ROAD_ACTIVE_TURN_RIGHT) {
-                        AddExamFault(46, rtkTime);
+                        if (ExamSchemeCrossing(RoadMap, road, x) == ROAD_ACTIVE_FORWARD) {
+                            AddExamFault(41, rtkTime);
+                        } else if (ExamSchemeCrossing(RoadMap, road, x) ==
+                                   ROAD_ACTIVE_TURN_LEFT) {
+                            AddExamFault(43, rtkTime);
+                        } else if (ExamSchemeCrossing(RoadMap, road, x) ==
+                                   ROAD_ACTIVE_TURN_RIGHT) {
+                            AddExamFault(46, rtkTime);
+                        }
+                    }
+                    if (!(it->second & STOP_CAR) && RoadMap.roads[road].stopLine[x].stopFlag) {
+                        // 涓嶅仠杞︾灜鏈涳紝涓嶅悎鏍�
+                        DEBUG("涓嶅仠杞︾灜鏈�");
+                        if (ExamSchemeCrossing(RoadMap, road, x) == ROAD_ACTIVE_FORWARD) {
+                            AddExamFault(42, rtkTime);
+                        } else if (ExamSchemeCrossing(RoadMap, road, x) ==
+                                   ROAD_ACTIVE_TURN_LEFT) {
+                            AddExamFault(44, rtkTime);
+                        } else if (ExamSchemeCrossing(RoadMap, road, x) ==
+                                   ROAD_ACTIVE_TURN_RIGHT) {
+                            AddExamFault(47, rtkTime);
+                        }
                     }
                 }
-                if (!(it->second & STOP_CAR) && RoadMap.roads[road].stopLine[x].stopFlag) {
-                    // 涓嶅仠杞︾灜鏈涳紝涓嶅悎鏍�
-                    DEBUG("涓嶅仠杞︾灜鏈�");
-                    if (RoadMap.roads[road].stopLine[x].active == ROAD_ACTIVE_FORWARD) {
-                        AddExamFault(42, rtkTime);
-                    } else if (RoadMap.roads[road].stopLine[x].active ==
-                               ROAD_ACTIVE_TURN_LEFT) {
-                        AddExamFault(44, rtkTime);
-                    } else if (RoadMap.roads[road].stopLine[x].active ==
-                               ROAD_ACTIVE_TURN_RIGHT) {
-                        AddExamFault(47, rtkTime);
-                    }
-                }
-
                 RemoveTargetReduceRec(TargetReduceRec, it->first);
                 goto RECHECK;
             }
     }
 
+    if (RoadMap.calibrate == 1)
+        return;
+
     RECHECK2:
     for (auto it = TargetReduceRec2.begin(); it != TargetReduceRec2.end(); ++it) {
-            int x = it->first;
-            Line line;
-            int roadIndex = 0;
+        int x = it->first;
+        Line line;
+        int roadIndex = 0;
 
-            for (; roadIndex < RoadMap.roads.size(); ++roadIndex) {
-                if (RoadMap.roads[roadIndex].id == RoadMap.specialAreas[x].road)
-                    break;
-            }
-
-            PointF point2 = CalcProjectionWithRoadEdge(RoadMap.roads[roadIndex].leftEdge,
-                                                       RoadMap.specialAreas[x].area[0]);
-            MakeLine(&line, &RoadMap.specialAreas[x].area[0], &point2);
-
-            if (CrashTheLine(line, car, CarModelList)) {
-                if (RoadMap.specialAreas[x].type == ZEBRA_CROSSING &&
-                    !(it->second & REDUCE_SPEED)) {
-                    DEBUG("浜鸿閬� 涓嶆寜瑙勫畾鍑忛��");
-                    AddExamFault(48, rtkTime);
-                }
-                if (RoadMap.specialAreas[x].type == BUS_STATION_AREA &&
-                    !(it->second & REDUCE_SPEED)) {
-                    DEBUG("鍏氦绔� 涓嶆寜瑙勫畾鍑忛��");
-                    AddExamFault(50, rtkTime);
-                }
-                RemoveTargetReduceRec(TargetReduceRec2, it->first);
-                goto RECHECK2;
-            }
+        for (; roadIndex < RoadMap.roads.size(); ++roadIndex) {
+            if (RoadMap.roads[roadIndex].id == RoadMap.specialAreas[x].road)
+                break;
         }
+
+        PointF point2 = CalcProjectionWithRoadEdge(RoadMap.roads[roadIndex].leftEdge,
+                                                   RoadMap.specialAreas[x].area[0]);
+        MakeLine(&line, &RoadMap.specialAreas[x].area[0], &point2);
+
+        if (CrashTheLine(line, car, CarModelList)) {
+            if (RoadMap.specialAreas[x].type == ZEBRA_CROSSING &&
+                !(it->second & REDUCE_SPEED)) {
+                DEBUG("浜鸿閬� 涓嶆寜瑙勫畾鍑忛��");
+                AddExamFault(48, rtkTime);
+            }
+            if (RoadMap.specialAreas[x].type == BUS_STATION_AREA &&
+                !(it->second & REDUCE_SPEED)) {
+                DEBUG("鍏氦绔� 涓嶆寜瑙勫畾鍑忛��");
+                AddExamFault(50, rtkTime);
+            }
+            RemoveTargetReduceRec(TargetReduceRec2, it->first);
+            goto RECHECK2;
+        }
+    }
 }

--
Gitblit v1.8.0