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