From cea2a94fc97e79897cdfd217be8250c075974a1a Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期日, 07 二月 2021 17:55:42 +0800
Subject: [PATCH] 坡起限制条件和手刹起步全阶段生效.

---
 lib/src/main/cpp/test_items/stop_and_start.cpp |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/lib/src/main/cpp/test_items/stop_and_start.cpp b/lib/src/main/cpp/test_items/stop_and_start.cpp
index 47690a2..12e8000 100644
--- a/lib/src/main/cpp/test_items/stop_and_start.cpp
+++ b/lib/src/main/cpp/test_items/stop_and_start.cpp
@@ -44,9 +44,17 @@
 static double DistanceOfTire2Edge(const Polygon *map, const car_model *car);
 static bool ExitTestArea(const Polygon *map, const car_model *car);
 
-void StartSAS(int index, int moveDirect, const struct RtkTime *rtkTime)
+void StartSAS(int index, const Polygon *map, const car_model *car, int moveDirect, const struct RtkTime *rtkTime)
 {
+    double yawEdge = YawOf(map->point[8], map->point[0]);
+
+    if (moveDirect < 0 || DeltaYaw(car->yaw, yawEdge) >= 90.0) {
+        testing = false;
+        return;
+    }
+
     DEBUG("杩涘叆鍧¤捣椤圭洰");
+
     testing = true;
     mapIndex = index;
     prevMoveDirect = moveDirect;
@@ -68,6 +76,9 @@
 
 int TestSAS(const Polygon *map, const car_model *car, const car_model *carPrev, double speed, int moveDirect, const struct RtkTime *rtkTime)
 {
+    if (!testing)
+        return 0;
+
     if (CrashRedLine(map, car)) {
         // 杞﹁疆鍘嬬嚎锛屼笉鍚堟牸
         if (!occurCrashRedLine) {
@@ -81,6 +92,10 @@
 
     if (ExitTestArea(map, car)) {
         // 椹剁娴嬭瘯鍖�
+        if (!stopCar) {
+            // 涓嶅仠杞︾洿鎺ョ寮�
+            AddExamFault(10103, rtkTime);
+        }
         testing = false;
     }
 

--
Gitblit v1.8.0