From 3d3a5aa436645e5af1a4877338319ff8274e0346 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 19 三月 2020 18:04:46 +0800
Subject: [PATCH] 通相检查

---
 lib/src/main/cpp/driver_test.cpp |   44 +++++++++++++++++++++++---------------------
 1 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/lib/src/main/cpp/driver_test.cpp b/lib/src/main/cpp/driver_test.cpp
index 58c440f..8a9c7cd 100644
--- a/lib/src/main/cpp/driver_test.cpp
+++ b/lib/src/main/cpp/driver_test.cpp
@@ -55,17 +55,6 @@
 #define MAP_LIST_SIZE               32
 
 enum {
-    TEST_NONE,
-    TEST_PARK_EDGE,
-    TEST_PARK_BOTTOM,
-    TEST_TUNE_90,
-    TEST_S_CURVE,
-    TEST_SLOPE,
-    TEST_SIMPLE,
-    TEST_END
-};
-
-enum {
     TEST_TYPE_AREA = 2,
     TEST_TYPE_ROAD_DUMMY_LIGHT,
     TEST_TYPE_ROAD_TRUE_LIGHT
@@ -258,8 +247,8 @@
 
         if (map.triggerLine != NULL) {
             for (int j = 0; j < map.triggerLineNum; ++j) {
-                if (map.triggerLine[j].point != NULL)
-                    free(map.triggerLine[j].point);
+                if (map.triggerLine[j].line.point != NULL)
+                    free(map.triggerLine[j].line.point);
             }
             free(map.triggerLine);
         }
@@ -305,6 +294,8 @@
                 newMap.redLine[i].point[j] = RoadMapPoints.point[redLines[i][j]];
             }
         }
+    } else {
+        newMap.redLine = NULL;
     }
 
     if ((newMap.redAreaNum = redAreas.size()) > 0) {
@@ -318,6 +309,8 @@
                 newMap.redArea[i].point[j] = RoadMapPoints.point[redAreas[i][j]];
             }
         }
+    } else {
+        newMap.redArea = NULL;
     }
 
     if ((newMap.greenLineNum = greenLines.size()) > 0) {
@@ -331,20 +324,25 @@
                 newMap.greenLine[i].point[j] = RoadMapPoints.point[greenLines[i][j]];
             }
         }
+    } else {
+        newMap.greenLine = NULL;
     }
 
     if ((newMap.triggerLineNum = triggerLines.size()) > 0) {
-        newMap.triggerLine = (Polygon *) malloc(sizeof(Polygon) * newMap.triggerLineNum);
+        newMap.triggerLine = (struct trigger_line_t *) malloc(sizeof(struct trigger_line_t) * newMap.triggerLineNum);
 
         for (int i = 0; i < newMap.triggerLineNum; ++i) {
-            newMap.triggerLine[i].num = triggerLines[i].size();
-            newMap.triggerLine[i].point = (PointF *) malloc(sizeof(PointF) * newMap.triggerLine[i].num);
+            newMap.triggerLine[i].line.num = triggerLines[i].size() - 1;
+            newMap.triggerLine[i].line.point = (PointF *) malloc(sizeof(PointF) * newMap.triggerLine[i].line.num);
 
-            for (int j = 0; j < newMap.triggerLine[i].num; ++j) {
-                newMap.triggerLine[i].point[j] = RoadMapPoints.point[triggerLines[i][j]];
+            newMap.triggerLine[i].triggerMapId = triggerLines[i][0];
+            for (int j = 0; j < newMap.triggerLine[i].line.num; ++j) {
+                newMap.triggerLine[i].line.point[j] = RoadMapPoints.point[triggerLines[i][j+1]];
             }
         }
-    }
+    } else {
+        newMap.triggerLine = NULL;
+    };
 
     RoadMapList.push_back(newMap);
 }
@@ -480,7 +478,7 @@
         return;
     }
 
-    if (MapNum == 0) {
+    if (MapNum == 0 && type == TEST_TYPE_AREA) {
         err = true;
         MA_SendExamStatus(0, -1);
     }
@@ -491,6 +489,10 @@
     if (DummyLightContent == NULL && type == TEST_TYPE_ROAD_DUMMY_LIGHT) {
         err = true;
         MA_SendExamStatus(0, -3);
+    }
+    if (type != TEST_TYPE_AREA && (RoadMapPoints.num == 0 || RoadMapPoints.point == NULL || RoadMapList.size() == 0)) {
+        err = true;
+        MA_SendExamStatus(0, -1);
     }
 
     if (!err) {
@@ -657,7 +659,7 @@
     if (ReadCarStatus(ENGINE_START) == ENGINE_START_ACTIVE) {
         if (!engineStart) {
             engineStart = true;
-            if (ReadCarStatus(SHIFT) != 'N') {
+            if (ReadCarStatus(GEAR) != 'N') {
                 // 涓嶆槸绌烘尅鐐圭伀锛屼笉鍚堟牸
                 if (ExamType == TEST_TYPE_AREA)
                     AddExamFault(3, rtkTime);

--
Gitblit v1.8.0