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