From eced3d013f06b623a49cb9deaba42218c4e37bb8 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期三, 15 一月 2020 10:56:05 +0800
Subject: [PATCH] update

---
 lib/src/main/cpp/test_items/park_bottom.cpp |   68 ++++++++++++++++------------------
 1 files changed, 32 insertions(+), 36 deletions(-)

diff --git a/lib/src/main/cpp/test_items/park_bottom.cpp b/lib/src/main/cpp/test_items/park_bottom.cpp
index 6bb16fb..a9b71f3 100644
--- a/lib/src/main/cpp/test_items/park_bottom.cpp
+++ b/lib/src/main/cpp/test_items/park_bottom.cpp
@@ -40,10 +40,10 @@
 
 static void StopCarTimeout(union sigval sig);
 static void LeaveTestAreaLongtime(union sigval sig);
-static void CrossCtrlLine(const Polygon *map, const car_model_cache_t *car);
-static bool EnterParking(const Polygon *map, const car_model_cache_t *car);
+static void CrossCtrlLine(const Polygon *map, const car_model *car, const car_model *prev_car);
+static bool EnterParking(const Polygon *map, const car_model *car);
 static void ParkBottomTimeout(union sigval sig);
-static bool CrashRedLine(const Polygon *map, const car_model_cache_t *car);
+static bool CrashRedLine(const Polygon *map, const car_model *car);
 
 void StartParkBottom(void)
 {
@@ -56,7 +56,7 @@
     currTarget = FIRST_TOUCH_CTRL_LINE;
     leftTireCrossLeftLine = leftTireCrossRightLine = rightTireCrossLeftLine = rightTireCrossRightLine = false;
 
-    TextOsd(0, "ParkBottom");
+    DEBUG("StartParkBottom");
 }
 
 void StopParkBottom(void)
@@ -67,10 +67,10 @@
     AppTimer_delete(LeaveTestAreaLongtime);
     currTarget = NONE;
 
-    TextOsd(0, "ParkBottom End");
+    DEBUG("ParkBottom End");
 }
 
-int TestParkBottom(vector<int>&err, const Polygon *map, const car_model_cache_t *car, double speed, int run_status)
+int TestParkBottom(vector<int>&err, const Polygon *map, const car_model *car, const car_model *carPrev, double speed, int run_status)
 {
     int status = 0;
 
@@ -84,6 +84,8 @@
         if (parkTimeout) {
             // 涓嶅悎鏍硷細鍔ㄤ綔瓒呮椂
             err.push_back(10);
+
+
             status = -1;
         }
         // 鏄惁鍘嬬嚎
@@ -94,8 +96,8 @@
         }
 
         if (trigLeaveTestAreaDetect) {
-            if (IntersectionOf(car->points[car->desc->front_left_tire[TIRE_OUTSIDE]], map) == GM_Containment &&
-                IntersectionOf(car->points[car->desc->front_right_tire[TIRE_OUTSIDE]], map) == GM_Containment) {
+            if (IntersectionOf(car->carXY[ car->left_front_tire[TIRE_OUTSIDE] ], map) == GM_Containment &&
+                IntersectionOf(car->carXY[ car->right_front_tire[TIRE_OUTSIDE] ], map) == GM_Containment) {
                 trigLeaveTestAreaDetect = false;
                 AppTimer_delete(LeaveTestAreaLongtime);
             }
@@ -114,29 +116,27 @@
             if (!((leftTireCrossLeftLine && rightTireCrossLeftLine) ||
                     (leftTireCrossRightLine && rightTireCrossRightLine))) {
                 DEBUG("CrossCtrlLine");
-                CrossCtrlLine(map, car);
+                CrossCtrlLine(map, car, carPrev);
             } else if (currTarget == FIRST_TOUCH_CTRL_LINE || currTarget == SECOND_TOUCH_CTRL_LINE) {
                 // 璺ㄨ繃鎺у埗绾垮悗锛岃溅杈嗘寔缁悜鍓嶈椹讹紝澶勭悊杩欎簺涔辨悶鎯呭喌
                 // 鏁翠釜杞﹂兘绂诲紑娴嬭瘯鍖哄悗锛屽鏋滄寔缁�15绉掞紝杩樻病鍥炲埌娴嬭瘯鍖猴紝灏卞拷鐣ヨ娴嬭瘯鎴栬�呮窐姹�
                 if (leaveTestArea) {
                     if (currTarget == FIRST_TOUCH_CTRL_LINE) {
                         status = -2;
-                        TextOsd(0, "鏉ラ亾鍦虹帺鐨�");
                         DEBUG("鏉ラ亾鍦虹帺鐨�");
                     } else {
                         // 涓嶅悎鏍硷細鏈寜瑙勫畾绾胯矾琛岄┒锛堢洿鎺ヨ窇鍑烘祴璇曞尯浜嗭級
                         err.push_back(6);
                         status = -1;
-                        TextOsd(0, "鐩存帴璺戝嚭娴嬭瘯鍖轰簡");
                         DEBUG("鐩存帴璺戝嚭娴嬭瘯鍖轰簡");
                     }
                 } else if (!trigLeaveTestAreaDetect) {
                     Polygon car_body;
 
-                    car_body.num = car->desc->body_num;
+                    car_body.num = car->bodyNum;
                     car_body.point = (PointF *) malloc(sizeof(PointF) * car_body.num);
                     for (int i = 0; i < car_body.num; ++i) {
-                        car_body.point[i] = car->points[car->desc->body[i]];
+                        car_body.point[i] = car->carXY[car->body[i]];
                     }
 
                     if (IntersectionOf(map, &car_body) == GM_None) {
@@ -196,12 +196,12 @@
                 parkTimeout = false;
                 leftTireCrossLeftLine = leftTireCrossRightLine = rightTireCrossLeftLine = rightTireCrossRightLine = false;
 
-                TextOsd(0, "绗竴娆″�掑簱");
+                DEBUG("绗竴娆″�掑簱");
             } else if (the_ctrl_line_crossed > 0) {
                 currTarget = SECOND_PARK;
                 carParkSuccess = false;
                 leftTireCrossLeftLine = leftTireCrossRightLine = rightTireCrossLeftLine = rightTireCrossRightLine = false;
-                TextOsd(0, "绗簩娆″�掑簱");
+                DEBUG("绗簩娆″�掑簱");
             } else if (currTarget != THIRD_TOUCH_CTRL_LINE) {
                 // 涓嶅悎鏍硷細鍊掕溅鍓嶏紝2鍓嶈疆娌¢┒杩囨帶鍒剁嚎
                 err.push_back(9);
@@ -243,10 +243,10 @@
                     status = -1;
                 } else if (currTarget == FIRST_PARK) {
                     currTarget = SECOND_TOUCH_CTRL_LINE;
-                    TextOsd(0, "杩囧彟涓�鏍规帶鍒剁嚎");
+                    DEBUG("杩囧彟涓�鏍规帶鍒剁嚎");
                 } else {
                     currTarget = THIRD_TOUCH_CTRL_LINE;
-                    TextOsd(0, "鍐嶈繃绗竴鏍规帶鍒剁嚎");
+                    DEBUG("鍐嶈繃绗竴鏍规帶鍒剁嚎");
                 }
             }
             carStopEvent = false;
@@ -279,25 +279,21 @@
 }
 
 // 妫�娴�2鍓嶈疆鏄惁姝e悜瓒婅繃宸﹀彸鎺у埗绾�
-static void CrossCtrlLine(const Polygon *map, const car_model_cache_t *car)
+static void CrossCtrlLine(const Polygon *map, const car_model *car, const car_model *prev_car)
 {
     Line leftCtrlLine, rightCtrlLine;
     Line track1;
     PointF p1, p2;
 
-    car_model_cache_t *prev_car = GetCarModelCache(1);
-    if (prev_car == NULL)
-        return;
-
     MakeLine(&leftCtrlLine, &map->point[0], &map->point[1]);
     MakeLine(&rightCtrlLine, &map->point[6], &map->point[7]);
 
     // 宸﹀墠杞紝鍙栬疆瀹界殑涓偣
-    p1.X = (car->points[car->desc->front_left_tire[TIRE_OUTSIDE]].X + car->points[car->desc->front_left_tire[TIRE_INSIDE]].X) / 2;
-    p1.Y = (car->points[car->desc->front_left_tire[TIRE_OUTSIDE]].Y + car->points[car->desc->front_left_tire[TIRE_INSIDE]].Y) / 2;
+    p1.X = (car->carXY[car->left_front_tire[TIRE_OUTSIDE]].X + car->carXY[car->left_front_tire[TIRE_INSIDE]].X) / 2;
+    p1.Y = (car->carXY[car->left_front_tire[TIRE_OUTSIDE]].Y + car->carXY[car->left_front_tire[TIRE_INSIDE]].Y) / 2;
 
-    p2.X = (prev_car->points[prev_car->desc->front_left_tire[TIRE_OUTSIDE]].X + prev_car->points[prev_car->desc->front_left_tire[TIRE_INSIDE]].X) / 2;
-    p2.Y = (prev_car->points[prev_car->desc->front_left_tire[TIRE_OUTSIDE]].Y + prev_car->points[prev_car->desc->front_left_tire[TIRE_INSIDE]].Y) / 2;
+    p2.X = (prev_car->carXY[prev_car->left_front_tire[TIRE_OUTSIDE]].X + prev_car->carXY[prev_car->left_front_tire[TIRE_INSIDE]].X) / 2;
+    p2.Y = (prev_car->carXY[prev_car->left_front_tire[TIRE_OUTSIDE]].Y + prev_car->carXY[prev_car->left_front_tire[TIRE_INSIDE]].Y) / 2;
 
     MakeLine(&track1, &p1, &p2);
     
@@ -312,11 +308,11 @@
     }
 
     // 鍙冲墠杞�
-    p1.X = (car->points[car->desc->front_right_tire[TIRE_OUTSIDE]].X + car->points[car->desc->front_right_tire[TIRE_INSIDE]].X) / 2;
-    p1.Y = (car->points[car->desc->front_right_tire[TIRE_OUTSIDE]].Y + car->points[car->desc->front_right_tire[TIRE_INSIDE]].Y) / 2;
+    p1.X = (car->carXY[car->right_front_tire[TIRE_OUTSIDE]].X + car->carXY[car->right_front_tire[TIRE_INSIDE]].X) / 2;
+    p1.Y = (car->carXY[car->right_front_tire[TIRE_OUTSIDE]].Y + car->carXY[car->right_front_tire[TIRE_INSIDE]].Y) / 2;
 
-    p2.X = (prev_car->points[prev_car->desc->front_right_tire[TIRE_OUTSIDE]].X + prev_car->points[prev_car->desc->front_right_tire[TIRE_INSIDE]].X) / 2;
-    p2.Y = (prev_car->points[prev_car->desc->front_right_tire[TIRE_OUTSIDE]].Y + prev_car->points[prev_car->desc->front_right_tire[TIRE_INSIDE]].Y) / 2;
+    p2.X = (prev_car->carXY[prev_car->right_front_tire[TIRE_OUTSIDE]].X + prev_car->carXY[prev_car->right_front_tire[TIRE_INSIDE]].X) / 2;
+    p2.Y = (prev_car->carXY[prev_car->right_front_tire[TIRE_OUTSIDE]].Y + prev_car->carXY[prev_car->right_front_tire[TIRE_INSIDE]].Y) / 2;
 
     MakeLine(&track1, &p1, &p2);
 
@@ -330,16 +326,16 @@
     }
 }
 
-static bool EnterParking(const Polygon *map, const car_model_cache_t *car) {
+static bool EnterParking(const Polygon *map, const car_model *car) {
     bool succ = false;
 
     Polygon parking;
     Polygon car_body;
 
-    car_body.num = car->desc->body_num;
+    car_body.num = car->bodyNum;
     car_body.point = (PointF *) malloc(sizeof(PointF) * car_body.num);
     for (int i = 0; i < car_body.num; ++i) {
-        car_body.point[i] = car->points[car->desc->body[i]];
+        car_body.point[i] = car->carXY[car->body[i]];
     }
 
     MakePolygon(&parking, {map->point[2], map->point[3], map->point[4], map->point[5]});
@@ -354,7 +350,7 @@
     return succ;
 }
 
-static bool CrashRedLine(const Polygon *map, const car_model_cache_t *car)
+static bool CrashRedLine(const Polygon *map, const car_model *car)
 {
     bool ret = false;
 
@@ -363,10 +359,10 @@
 
     Polygon car_body;
 
-    car_body.num = car->desc->body_num;
+    car_body.num = car->bodyNum;
     car_body.point = (PointF *) malloc(sizeof(PointF) * car_body.num);
     for (int i = 0; i < car_body.num; ++i) {
-        car_body.point[i] = car->points[car->desc->body[i]];
+        car_body.point[i] = car->carXY[car->body[i]];
     }
 
     for (int i = 0; i < sizeof(red_lines) / sizeof(red_lines[0]); ++i) {

--
Gitblit v1.8.0