From 2d6a9d02c77d7e08d4f18ee87d6e3d337b949f47 Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期四, 20 八月 2020 19:35:17 +0800 Subject: [PATCH] 坐标 --- lib/src/main/cpp/test_items2/operate_gear.cpp | 190 ++++++++++++++++++++--------------------------- 1 files changed, 81 insertions(+), 109 deletions(-) diff --git a/lib/src/main/cpp/test_items2/operate_gear.cpp b/lib/src/main/cpp/test_items2/operate_gear.cpp index f40b9db..564cbee 100644 --- a/lib/src/main/cpp/test_items2/operate_gear.cpp +++ b/lib/src/main/cpp/test_items2/operate_gear.cpp @@ -8,155 +8,127 @@ #include "../native-lib.h" #include "../test_common/car_sensor.h" #include "../jni_log.h" +#include "../test_common/odo_graph.h" +#include "road_exam.h" #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 int readGearCnt; -static int opCnt = 0; -enum { - SEND_OP_INS, - CHECK_OP -}; +static int setup; -static void CheckGear(union sigval sig); +static double maxMoveDistance; +static double gearMoveDistance; -void StartOperateGearExam(const struct RtkTime *rtkTime) { +static void TtsBack(int seq) +{ + maxMoveDistance = ReadOdo(); + setup = 1; +} + +void StartOperateGearExam(void) { DEBUG("寮�濮嬪姞鍑忔尅鎿嶄綔"); - testing = true; - opGear = SEND_OP_INS; - readGearCnt = 0; - upDownShift = 0; - opCnt = 0; - currRtkTime = *rtkTime; + setup = 0; - AppTimer_delete(CheckGear); - AppTimer_add(CheckGear, 100); + PlayTTS("璇疯繘琛屽姞鍑忔尅浣嶆搷浣�", TtsBack); } -void TerminateOperateGearExam(void) +bool TestOperateGear(const struct RtkTime *rtkTime) { - AppTimer_delete(CheckGear); -} + car_sensor_value_t sensor = ReadCarSensorValue(GEAR); -static void CheckGear(union sigval sig) { - AppTimer_delete(CheckGear); + if (sensor.name != GEAR) + return false; - if (opGear == SEND_OP_INS) { - readGearCnt++; - switch (ReadCarStatus(GEAR)) { + if (setup == 0) { + return true; + } else if (setup == 1) { + switch (sensor.value) { case GEAR_1: { - upDownShift = 1; expectGear = GEAR_2; - examTtsSeq = PlayTTS("璇峰姞鍒颁簩鎸�"); + upDownShift = 1; + PlayTTS("璇峰姞鍒颁簩鎸�", NULL); + setup = 2; break; } case GEAR_2: { - if (upDownShift == 0) { - upDownShift = 1; - expectGear = GEAR_3; - examTtsSeq = PlayTTS("璇峰姞鍒颁笁鎸�"); - } else if (upDownShift == 1) { - upDownShift = -1; - expectGear = GEAR_1; - examTtsSeq = PlayTTS("璇峰噺鍒颁竴鎸�"); - } else { - upDownShift = 1; - expectGear = GEAR_3; - examTtsSeq = PlayTTS("璇峰姞鍒颁笁鎸�"); - } + expectGear = GEAR_3; + upDownShift = 1; + PlayTTS("璇峰姞鍒颁笁鎸�", NULL); + setup = 2; break; } case GEAR_3: { - if (upDownShift == 0) { - upDownShift = -1; - expectGear = GEAR_2; - examTtsSeq = PlayTTS("璇峰噺鍒颁簩鎸�"); - } else if (upDownShift == 1) { - upDownShift = -1; - expectGear = GEAR_2; - examTtsSeq = PlayTTS("璇峰噺鍒颁簩鎸�"); - } else { - upDownShift = 1; - expectGear = GEAR_4; - examTtsSeq = PlayTTS("璇峰姞鍒板洓鎸�"); - } + expectGear = GEAR_2; + upDownShift = -1; + PlayTTS("璇峰噺鍒颁簩鎸�", NULL); + setup = 2; break; } case GEAR_4: { - if (upDownShift == 0) { - upDownShift = -1; - expectGear = GEAR_3; - examTtsSeq = PlayTTS("璇峰噺鍒颁笁鎸�"); - } else if (upDownShift == 1) { - upDownShift = -1; - expectGear = GEAR_3; - examTtsSeq = PlayTTS("璇峰噺鍒颁笁鎸�"); - } else { - upDownShift = 1; - expectGear = GEAR_5; - examTtsSeq = PlayTTS("璇峰姞鍒颁簲鎸�"); - } + expectGear = GEAR_3; + upDownShift = -1; + PlayTTS("璇峰噺鍒颁笁鎸�", NULL); + setup = 2; break; } case GEAR_5: { upDownShift = -1; expectGear = GEAR_4; - examTtsSeq = PlayTTS("璇峰噺鍒板洓鎸�"); + PlayTTS("璇峰噺鍒板洓鎸�", NULL); + setup = 2; break; } - default: - // 鏈鍒版湁鏁堟尅浣嶏紝缁х画灏濊瘯 - if (readGearCnt > MAX_READ_GEAR) { - DEBUG("鎬绘槸璇诲埌绌烘尅鎴栨棤鏁堟尅浣�"); - AddExamFault(31, &currRtkTime); - testing = false; - } else { - AppTimer_add(CheckGear, 500); - } - break; } - } else { - DEBUG("妫�娴嬫尅浣� %d", expectGear); - opCnt++; - // 妫�鏌ユ尅浣� - if (ReadCarStatus(GEAR) != expectGear) { + } else if (setup == 2) { + if (sensor.value == GEAR_N) { + + } else if (sensor.value != expectGear) { // 鏈寜鎸囦护鎿嶄綔鎸′綅锛屼笉鍚堟牸 DEBUG("鏈寜鎸囦护鎿嶄綔鎸′綅"); - AddExamFault(31, &currRtkTime); - - testing = false; - } else if (opCnt < 2) { - opGear = SEND_OP_INS; - readGearCnt = 0; - AppTimer_add(CheckGear, 500); + AddExamFault(31, rtkTime); + return false; } else { - testing = false; + // 鍦ㄦ鎸′綅琛岄┒涓�瀹氳窛绂伙紝鍐嶆墽琛屼笅涓�涓� + gearMoveDistance = ReadOdo(); + setup = 3; + } + } else if (setup == 3) { + if (ReadOdo() - gearMoveDistance > 10) { + setup = 4; + char buff[128]; + expectGear += 0 - upDownShift; + sprintf(buff, "璇�%s鍒�%d鎸�", upDownShift > 0 ? "鍑�": "鍔�", expectGear - GEAR_N); + } + } + else if (setup == 4) { + if (sensor.value == GEAR_N) { + + } else if (sensor.value != expectGear) { + // 鏈寜鎸囦护鎿嶄綔鎸′綅锛屼笉鍚堟牸 + DEBUG("鏈寜鎸囦护鎿嶄綔鎸′綅"); + AddExamFault(31, rtkTime); + return false; + } else { + // 鍦ㄦ鎸′綅琛岄┒涓�瀹氳窛绂伙紝鍐嶆墽琛屼笅涓�涓� + gearMoveDistance = ReadOdo(); + setup = 5; + } + } else if (setup == 5) { + if (ReadOdo() - gearMoveDistance > 10) { + PlayTTS("鍔犲噺鎸′綅鎿嶄綔缁撴潫", NULL); + return false; } } -} -int ExecuteOperateGearExam(const struct RtkTime *rtkTime) { - currRtkTime = *rtkTime; - return testing ? 1 : -1; -} - -void OperateGearTTSDone(int id) -{ - // 绛夎闊虫挱鎶ュ畬姣曞悗璁℃椂 - if (id == examTtsSeq) { - DEBUG("鍗囬檷鎸℃寚浠ゅ彂鍑哄畬姣� %d", id); - opGear = CHECK_OP; - AppTimer_add(CheckGear, D_SEC(7)); + if (ReadOdo() - maxMoveDistance > 120) { + // 鏈寜鎸囦护鎿嶄綔鎸′綅锛屼笉鍚堟牸 + DEBUG("鏈寜鎸囦护鎿嶄綔鎸′綅"); + AddExamFault(31, rtkTime); + return false; } + + return true; } -- Gitblit v1.8.0