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/driver_test.cpp | 36 ++++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/lib/src/main/cpp/driver_test.cpp b/lib/src/main/cpp/driver_test.cpp
index 9e0f000..00e93e5 100644
--- a/lib/src/main/cpp/driver_test.cpp
+++ b/lib/src/main/cpp/driver_test.cpp
@@ -38,6 +38,7 @@
#include "test_items2/road_exam.h"
#include "test_items/area_exam.h"
#include "test_items2/prepare.h"
+#include "test_common/odo_graph.h"
#define DEBUG(fmt, args...) LOGD("<driver_test> <%s>: " fmt, __func__, ##args)
@@ -891,14 +892,49 @@
static void ExecuteExam(double speed, int move, double azimuth, const struct RtkTime* rtkTime)
{
+ static bool rec = false;
+ static bool handBreakActive = false, handBreakActive2 = false;
+ static double startCarMoveDistance;
+ static int prevMove = 0;
+
if (move != 0) {
if (ReadCarStatus(SEATBELT) == EJECT_SEATBELT && !reportSeatbeltEject) {
DEBUG("涓嶇郴瀹夊叏甯�");
reportSeatbeltEject = true;
AddExamFault(ExamType == TEST_TYPE_AREA? 10101: 30101, rtkTime);
}
+ if (rec) {
+ if (!handBreakActive2 && ReadOdo() - startCarMoveDistance >= examParam.start_car_limit_distance) {
+ handBreakActive2 = true;
+
+ if (ExamType == TEST_TYPE_ROAD_DUMMY_LIGHT || ExamType == TEST_TYPE_ROAD_TRUE_LIGHT) {
+ if (ReadCarStatus(HAND_BREAK) == BREAK_ACTIVE) {
+ DEBUG("Handbreak active move over 10m");
+ // 鎵嬪埞鎷夎捣鐘舵�佷笅锛岃椹朵簡10绫充互涓婏紝涓嶅悎鏍�
+ AddExamFault(40205, rtkTime);
+ } else if (handBreakActive) {
+ // 鎵嬪埞鎷夎捣鐘舵�佷笅锛岃椹朵簡1绫充互涓婏紝鎵�10鍒�
+ DEBUG("Handbreak active move over 1M");
+ AddExamFault(40206, rtkTime);
+ }
+ }
+ } else if (!handBreakActive && ReadOdo() - startCarMoveDistance >= examParam.open_door_drive_allow_distance && ReadCarStatus(HAND_BREAK) == BREAK_ACTIVE) {
+ handBreakActive = true;
+
+ if (ExamType == TEST_TYPE_AREA) {
+ DEBUG("Handbreak active move over 1M");
+ AddExamFault(10107, rtkTime);
+ }
+ }
+ }
+ } else if (!rec || prevMove != 0) { // 璁板綍鍋滆溅鐐�
+ rec = true;
+ handBreakActive = handBreakActive2 = false;
+ startCarMoveDistance = ReadOdo();
}
+ prevMove = move;
+
if (ExamType != TEST_TYPE_AREA) {
if (exam_dummy_light == 4 || ExamType == TEST_TYPE_ROAD_TRUE_LIGHT || ExamType == TEST_TYPE_ROAD_CALIBRATE) {
TestRoadGeneral(RoadMap, CarModel, CarModelList, speed, move, rtkTime);
--
Gitblit v1.8.0