From 683b1595260e638d1d3c6cc0d6543a72f6d6f925 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 12 一月 2021 14:36:42 +0800
Subject: [PATCH] 扣分码标准化
---
lib/src/main/cpp/driver_test.cpp | 96 ++++++++++++++++++++++++++++++++++++------------
1 files changed, 72 insertions(+), 24 deletions(-)
diff --git a/lib/src/main/cpp/driver_test.cpp b/lib/src/main/cpp/driver_test.cpp
index b90ea78..e1df9bb 100644
--- a/lib/src/main/cpp/driver_test.cpp
+++ b/lib/src/main/cpp/driver_test.cpp
@@ -37,6 +37,7 @@
#include "test_common/car_sensor.h"
#include "test_items2/road_exam.h"
#include "test_items/area_exam.h"
+#include "test_items2/prepare.h"
#define DEBUG(fmt, args...) LOGD("<driver_test> <%s>: " fmt, __func__, ##args)
@@ -86,6 +87,12 @@
static const int DEFAULT_START_CAR_MAX_RMP = 2500;
static const int DEFAULT_START_CAR_DISTANCE = 10;
static const double DEFAULT_START_CAR_OPEN_DOOR_DISTANCE = 1.0;
+static const char DEFAULT_PREPARE_TTS[] = "璇峰紑濮嬩笂杞﹀噯澶�";
+static const char DEFAULT_TOUCH_LEFT_FRONT[] = "瀛﹀憳閫氳繃宸﹀墠鏂�";
+static const char DEFAULT_TOUCH_LEFT_REAR[] = "瀛﹀憳閫氳繃宸﹀悗鏂�";
+static const char DEFAULT_TOUCH_RIGHT_FRONT[] = "瀛﹀憳閫氳繃鍙冲墠鏂�";
+static const char DEFAULT_TOUCH_RIGHT_REAR[] = "瀛﹀憳閫氳繃鍙冲悗鏂�";
+static const char DEFAULT_START_ENGINE[] = "璇峰惎鍔ㄥ彂鍔ㄦ満";
static const char DEFAULT_START_CAR_BEGIN_TTS[] = "璇疯捣姝ワ紝缁х画瀹屾垚鑰冭瘯";
static const char DEFAULT_START_CAR_END_TTS[] = "璧锋瀹屾垚";
static const int CHANGE_LANE_MAX_DISTANCE = 100;
@@ -235,6 +242,14 @@
examParam.start_car_max_rpm = DEFAULT_START_CAR_MAX_RMP;
examParam.start_car_limit_distance = DEFAULT_START_CAR_DISTANCE;
examParam.open_door_drive_allow_distance = DEFAULT_START_CAR_OPEN_DOOR_DISTANCE;
+
+ examParam.prepare_tts = DEFAULT_PREPARE_TTS;
+ examParam.touch_leftfront_tts = DEFAULT_TOUCH_LEFT_FRONT;
+ examParam.touch_leftrear_tts = DEFAULT_TOUCH_LEFT_REAR;
+ examParam.touch_rightfront_tts = DEFAULT_TOUCH_RIGHT_FRONT;
+ examParam.touch_rightrear_tts = DEFAULT_TOUCH_RIGHT_REAR;
+ examParam.start_engine_tts = DEFAULT_START_ENGINE;
+
examParam.start_car_begin_tts = DEFAULT_START_CAR_BEGIN_TTS;
examParam.start_car_end_tts = DEFAULT_START_CAR_END_TTS;
examParam.change_lane_limit_distance = CHANGE_LANE_MAX_DISTANCE;
@@ -371,7 +386,7 @@
RoadMap.examScheme.assign(scheme.begin(), scheme.end());
- DEBUG("寰楀埌鏂扮殑璺�冨湴鍥� 椤圭洰鏁伴噺 %d", RoadMap.examScheme.size());
+ DEBUG("寰楀埌璺�冮」鐩柟妗� 椤圭洰鏁伴噺 %d", RoadMap.examScheme.size());
}
void SetCarMeasurePoint(double *basePoint, int *axial, int *left_front_tire,
@@ -505,18 +520,38 @@
{
DEBUG("鑾峰彇妯℃嫙璺�冪伅鍏夋祴璇曢」鐩� N = %d %d", n, ExamStart);
+ static const int cov[] = {0,
+ (DIPPED_BEAM_LAMP<<8)+DIPPED_BEAM_LIGHT,
+ (MAIN_BEAM_LAMP<<8)+MAIN_BEAM_LIGHT,
+ (CLEARANCE_LAMP<<8)+CLEARANCE_LIGHT,
+ (FOG_LAMP<<8)+FOG_LIGHT,
+ (TURN_SIGNAL_LAMP<<8)+LEFT_TURN_LIGHT,
+ (TURN_SIGNAL_LAMP<<8)+RIGHT_TURN_LIGHT,
+ (TURN_SIGNAL_LAMP<<8)+HAZARD_LIGHTS,
+ (FLASH_BEAM_LAMP<<8)+FLASH_BEAM_LIGHT};
+
if (ExamStart) return;
if (DummyLightContent != NULL) {
- free(DummyLightContent);
+ delete []DummyLightContent;
DummyLightContent = NULL;
+ DummyLightContentSize = 0;
}
- DummyLightContent = (struct dummy_light_exam *)malloc(n * sizeof(struct dummy_light_exam));
+ DummyLightContent = new struct dummy_light_exam[n];
DummyLightContentSize = n;
for (int i = 0; i < n; i++) {
- DummyLightContent[i] = cfg[i];
+ DummyLightContent[i].item = cfg[i].item;
+ DummyLightContent[i].tts = cfg[i].tts;
+ DummyLightContent[i].wrongCode = cfg[i].wrongCode;
+ // Sensor Name<<8 + Sensor Status
+ for (int j = 0; j < cfg[i].process.size(); ++j) {
+ DummyLightContent[i].process[j] = cov[cfg[i].process[j]];
+ }
+ for (int j = 0; j < cfg[i].solution.size(); ++j) {
+ DummyLightContent[i].solution[j] = cov[cfg[i].solution[j]];
+ }
}
}
@@ -688,8 +723,6 @@
}
}
-
-
static void PrintObdInfo(struct RtkTime *rtkTime, double speed) {
static struct RtkTime cTime = *rtkTime;
@@ -791,9 +824,9 @@
engineRuning = false;
if (ExamType == TEST_TYPE_AREA) {
// 鐔勭伀1娆★紝鎵�10鍒�
- AddExamFault(5, rtkTime);
+ AddExamFault(10210, rtkTime);
} else {
- AddExamFault(20, rtkTime);
+ AddExamFault(30208, rtkTime);
}
}
} else {
@@ -806,9 +839,9 @@
if (ReadCarStatus(GEAR) != GEAR_N) {
// 涓嶆槸绌烘尅鐐圭伀锛屼笉鍚堟牸
if (ExamType == TEST_TYPE_AREA)
- AddExamFault(3, rtkTime);
+ AddExamFault(10105, rtkTime);
else
- AddExamFault(4, rtkTime);
+ AddExamFault(30105, rtkTime);
}
AppTimer_delete(EngineStartHold);
AppTimer_add(EngineStartHold, examParam.hold_start_key_limit_time);
@@ -823,19 +856,23 @@
// 涓嶅強鏃舵澗寮�鍚姩寮�鍏筹紝鎵�10鍒�
if (ExamType == TEST_TYPE_AREA)
- AddExamFault(4, rtkTime);
+ AddExamFault(10201, rtkTime);
}
if (ExamType == TEST_TYPE_ROAD_DUMMY_LIGHT) {
if (exam_dummy_light == 0) {
- StartDummyLightExam(DummyLightContent, DummyLightContentSize, rtkTime);
+ StartPrepare();
+// StartDummyLightExam(DummyLightContent, DummyLightContentSize, rtkTime);
exam_dummy_light = 1;
- // 姹囨姤鐏厜鑰冭瘯寮�濮�
- DEBUG("鐏厜鑰冭瘯寮�濮�");
- } else if (exam_dummy_light == 1) {
- exam_dummy_light = ExecuteDummyLightExam(rtkTime);
- // 姹囨姤鐏厜鑰冭瘯缁撴潫
- if (exam_dummy_light == 2) {
+ DEBUG("寮�濮嬩笂杞﹀噯澶�");
+ } else if (exam_dummy_light == 2) {
+ DEBUG("寮�濮嬬伅鍏夎�冭瘯");
+ StartDummyLightExam(DummyLightContent, DummyLightContentSize, rtkTime);
+ exam_dummy_light = 3;
+ } else if (exam_dummy_light == 3) {
+ if (!ExecuteDummyLightExam(rtkTime)) {
+ exam_dummy_light = 4;
+ // 姹囨姤鐏厜鑰冭瘯缁撴潫
DEBUG("鐏厜鑰冭瘯缁撴潫");
InitRoadExam(RoadMap);
}
@@ -849,12 +886,12 @@
if (ReadCarStatus(SEATBELT) == EJECT_SEATBELT && !reportSeatbeltEject) {
DEBUG("涓嶇郴瀹夊叏甯�");
reportSeatbeltEject = true;
- AddExamFault(1, rtkTime);
+ AddExamFault(ExamType == TEST_TYPE_AREA? 10101: 30101, rtkTime);
}
}
if (ExamType != TEST_TYPE_AREA) {
- if (exam_dummy_light == 2 || ExamType == TEST_TYPE_ROAD_TRUE_LIGHT || ExamType == TEST_TYPE_ROAD_CALIBRATE) {
+ if (exam_dummy_light == 4 || ExamType == TEST_TYPE_ROAD_TRUE_LIGHT || ExamType == TEST_TYPE_ROAD_CALIBRATE) {
TestRoadGeneral(RoadMap, CarModel, CarModelList, speed, move, rtkTime);
}
} else {
@@ -1089,13 +1126,13 @@
sprintf(fault.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + rtkTime->YY,
rtkTime->MM, rtkTime->DD, rtkTime->hh, rtkTime->mm, rtkTime->ss, rtkTime->mss);
- if (ExamType != TEST_TYPE_AREA) {
- wrong += 1000;
- }
+// if (ExamType != TEST_TYPE_AREA) {
+// wrong += 1000;
+// }
fault.wrong_id = wrong;
- DEBUG("鑰冭瘯鍙戠敓閿欒 %d %s", wrong, fault.utc);
+ DEBUG("鑰冭瘯鍙戠敓閿欒 code = %d %s", wrong, fault.utc);
ExamFaultList.push_back(fault);
@@ -1204,3 +1241,14 @@
}
}
+
+void SensorXChanged(uint16_t id, int value)
+{
+ handlePrepare(id, value);
+ handleLigthExam(id, value);
+}
+
+void PrepareOver(int res)
+{
+ exam_dummy_light = 2;
+}
--
Gitblit v1.8.0