From 7b6dd5603277ac8fddba735c456f99d4c07e2e9b Mon Sep 17 00:00:00 2001
From: fctom1215 <fctom1215@outlook.com>
Date: 星期三, 12 二月 2020 17:43:36 +0800
Subject: [PATCH] 修改了上坡起步。
---
lib/src/main/cpp/test_items/park_edge.cpp | 36 +++++++++++++++++++++++++++++-------
1 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/lib/src/main/cpp/test_items/park_edge.cpp b/lib/src/main/cpp/test_items/park_edge.cpp
index 87993ff..105bd16 100644
--- a/lib/src/main/cpp/test_items/park_edge.cpp
+++ b/lib/src/main/cpp/test_items/park_edge.cpp
@@ -20,6 +20,7 @@
const int PARK_TIMEOUT = 90;
const uint32_t STOP_CAR_TIME = D_SEC(2);
+static bool reportExamTimeout;
static uint64_t stopTimepoint = 0;
static bool occurCrashRedLine1, occurCrashRedLine2;
static int prevMoveStatus, storeMoveStatusBeforeStop;
@@ -31,10 +32,12 @@
static bool CrashRedLine2(const Polygon *map, const car_model *car);
static bool EnterParking(const Polygon *map, const car_model *car);
static bool ExitParkArea(const Polygon *map, const car_model *car);
+static bool ExitParkArea2(const Polygon *map, const car_model *car);
void StartParkEdge(int moveStatus, const struct RtkTime *rtkTime)
{
occurCrashRedLine1 = occurCrashRedLine2 = false; // 杩欎釜绉戠洰瑙勫畾鐗规畩鐐癸紝鍙戠敓涓�娆℃墸10鍒嗭紝鑰屼笉鐩存帴娣樻卑
+ reportExamTimeout = false;
prevMoveStatus = moveStatus;
parkSuccess = false;
@@ -74,25 +77,23 @@
occurCrashRedLine2 = false;
}
- if (ExitParkArea(map, car)) {
+ if (ExitParkArea(map, car) || ExitParkArea2(map, car)) {
if (!parkSuccess || !occurMoveBack) {
// 鐩存帴椹剁娴嬭瘯鍖猴紝璁や负绉诲簱涓嶅叆
AddExamFault(21, rtkTime);
DEBUG("鐩存帴椹剁娴嬭瘯鍖�,绉诲簱涓嶅叆");
- status = -1;
- } else {
- status = 1;
}
+ status = 1;
}
if (occurMoveBack) {
uint32_t tp = TimeMakeComposite(2000 + rtkTime->YY, rtkTime->MM, rtkTime->DD, rtkTime->hh, rtkTime->mm, rtkTime->ss);
- if (tp - moveBackTimePoint >= PARK_TIMEOUT) {
+ if (!reportExamTimeout && tp - moveBackTimePoint >= PARK_TIMEOUT) {
// 瓒呮椂90绉掞紝涓嶅悎鏍�
AddExamFault(22, rtkTime);
+ reportExamTimeout = true;
DEBUG("绉诲簱90绉掕秴鏃�");
- status = -1;
}
}
@@ -129,7 +130,6 @@
// 鍋滄鍚庯紝杞﹁韩鍑虹嚎锛屼笉鍚堟牸
AddExamFault(21, rtkTime);
DEBUG("绉诲簱涓嶅叆");
- status = -1;
}
// 鍦ㄨ繖閲屾鏌ヨ浆鍚戠伅鐘舵��
@@ -254,3 +254,25 @@
}
return true;
}
+
+static bool ExitParkArea2(const Polygon *map, const car_model *car)
+{
+// 鍏ㄨ溅閮介渶涓嶅湪鍦板浘涓�
+ bool ret = false;
+
+ Polygon carBody;
+
+ carBody.num = car->bodyNum;
+ carBody.point = (PointF *)malloc(carBody.num * sizeof(PointF));
+ for (int i = 0; i < carBody.num; ++i) {
+ carBody.point[i] = car->carXY[car->body[i]];
+ }
+
+ if (IntersectionOf(&carBody, map) == GM_None) {
+ ret = true;
+ }
+
+ free(carBody.point);
+
+ return ret;
+}
--
Gitblit v1.8.0