From aef1984ccc48e81ab238d889327f85867ca0a973 Mon Sep 17 00:00:00 2001 From: fctom1215 <fctom1215@outlook.com> Date: 星期三, 25 三月 2020 22:51:59 +0800 Subject: [PATCH] 修改加减挡操作. --- lib/src/main/cpp/test_items2/operate_gear.cpp | 91 +++++++++++++++++++++------------------------ 1 files changed, 43 insertions(+), 48 deletions(-) diff --git a/lib/src/main/cpp/test_items2/operate_gear.cpp b/lib/src/main/cpp/test_items2/operate_gear.cpp index b0cc48c..16f9000 100644 --- a/lib/src/main/cpp/test_items2/operate_gear.cpp +++ b/lib/src/main/cpp/test_items2/operate_gear.cpp @@ -11,33 +11,39 @@ #define DEBUG(fmt, args...) LOGD("<operate_gear> <%s>: " fmt, __func__, ##args) +static struct RtkTime currRtkTime; + +static const int MAX_READ_GEAR = 6; + static int opGear; static bool testing; static int examTtsSeq = 0; static int expectGear; static int upDownShift; -static bool checkError; +static int readGearCnt; static int opCnt = 0; enum { - START_GEAR, - WAIT_TTS_END, - TTS_END, - WAITE_CHECK, - CHECKED + SEND_OP_INS, + CHECK_OP }; static void CheckGear(union sigval sig); -void StartOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList) { +void StartOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList, const struct RtkTime *rtkTime) { if (index == -1) return; + DEBUG("寮�濮嬪姞鍑忔尅鎿嶄綔"); testing = true; - opGear = START_GEAR; - checkError = false; + opGear = SEND_OP_INS; + readGearCnt = 0; upDownShift = 0; opCnt = 0; + currRtkTime = *rtkTime; + + AppTimer_delete(CheckGear); + AppTimer_add(CheckGear, 100); } void TerminateOperateGearExam(void) @@ -45,22 +51,19 @@ AppTimer_delete(CheckGear); } -int ExecuteOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList, const car_model *car, - LIST_CAR_MODEL &CarModelList, double speed, int moveDirect, const struct RtkTime *rtkTime) { - DEBUG("opGear %d", opGear); +static void CheckGear(union sigval sig) { + AppTimer_delete(CheckGear); - if (opGear == START_GEAR) { - int currGear = ReadCarStatus(GEAR); - switch (currGear) { + if (opGear == SEND_OP_INS) { + readGearCnt++; + switch (ReadCarStatus(GEAR)) { case GEAR_1: { - opGear = WAIT_TTS_END; upDownShift = 1; expectGear = GEAR_2; examTtsSeq = PlayTTS("璇峰姞鍒颁簩鎸�"); break; } case GEAR_2: { - opGear = WAIT_TTS_END; if (upDownShift == 0) { upDownShift = 1; expectGear = GEAR_3; @@ -77,7 +80,6 @@ break; } case GEAR_3: { - opGear = WAIT_TTS_END; if (upDownShift == 0) { upDownShift = -1; expectGear = GEAR_2; @@ -94,7 +96,6 @@ break; } case GEAR_4: { - opGear = WAIT_TTS_END; if (upDownShift == 0) { upDownShift = -1; expectGear = GEAR_3; @@ -111,7 +112,6 @@ break; } case GEAR_5: { - opGear = WAIT_TTS_END; upDownShift = -1; expectGear = GEAR_4; examTtsSeq = PlayTTS("璇峰噺鍒板洓鎸�"); @@ -119,51 +119,46 @@ } default: // 鏈鍒版湁鏁堟尅浣嶏紝缁х画灏濊瘯 + if (readGearCnt > MAX_READ_GEAR) { + DEBUG("鎬绘槸璇诲埌绌烘尅鎴栨棤鏁堟尅浣�"); + AddExamFault(31, &currRtkTime); + testing = false; + } else { + AppTimer_add(CheckGear, 500); + } break; } - } else if (opGear == WAIT_TTS_END) { - - } else if (opGear == TTS_END) { + } else { + DEBUG("妫�娴嬫尅浣� %d", expectGear); opCnt++; - opGear = WAITE_CHECK; - checkError = false; - AppTimer_delete(CheckGear); - AppTimer_add(CheckGear, D_SEC(5)); - } else if (opGear == CHECKED) { - if (checkError) { + // 妫�鏌ユ尅浣� + if (ReadCarStatus(GEAR) != expectGear) { // 鏈寜鎸囦护鎿嶄綔鎸′綅锛屼笉鍚堟牸 DEBUG("鏈寜鎸囦护鎿嶄綔鎸′綅"); - AddExamFault(31, rtkTime); - } + AddExamFault(31, &currRtkTime); - if (opCnt < 2) { - opGear = START_GEAR; + testing = false; + } else if (opCnt < 2) { + opGear = SEND_OP_INS; + AppTimer_add(CheckGear, 500); } else { testing = false; } } +} +int ExecuteOperateGearExam(int index, LIST_ROAD_MAP &RoadMapList, const car_model *car, + LIST_CAR_MODEL &CarModelList, double speed, int moveDirect, const struct RtkTime *rtkTime) { + currRtkTime = *rtkTime; return testing ? index : -1; } void OperateGearTTSDone(int id) { - DEBUG("OperateGearTTSDone %d", id); + DEBUG("鍗囬檷鎸℃寚浠ゅ彂鍑哄畬姣� %d", id); // 绛夎闊虫挱鎶ュ畬姣曞悗璁℃椂 if (id == examTtsSeq) { - opGear = TTS_END; + opGear = CHECK_OP; + AppTimer_add(CheckGear, D_SEC(7)); } -} - -static void CheckGear(union sigval sig) -{ - AppTimer_delete(CheckGear); - - DEBUG("妫�娴嬫尅浣� %d", expectGear); - // 妫�鏌ユ尅浣� - if (ReadCarStatus(GEAR) != expectGear) { - // 涓嶆墽琛屾寚瀹氭尅浣嶏紝涓嶅悎鏍� - checkError = true; - } - opGear = CHECKED; } -- Gitblit v1.8.0