From e021e593c56c3338ddddd35d7817ef6cd2fa504b Mon Sep 17 00:00:00 2001
From: fctom1215 <fctom1215@outlook.com>
Date: 星期日, 15 三月 2020 22:55:22 +0800
Subject: [PATCH] 完善车辆信号测试。
---
lib/src/main/cpp/test_items2/dummy_light.cpp | 94 +++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 83 insertions(+), 11 deletions(-)
diff --git a/lib/src/main/cpp/test_items2/dummy_light.cpp b/lib/src/main/cpp/test_items2/dummy_light.cpp
index c25c199..83d3ee1 100644
--- a/lib/src/main/cpp/test_items2/dummy_light.cpp
+++ b/lib/src/main/cpp/test_items2/dummy_light.cpp
@@ -7,46 +7,119 @@
#include "dummy_light.h"
#include "../native-lib.h"
#include "../jni_log.h"
+#include "../test_common/car_sensor.h"
#define DEBUG(fmt, args...) LOGD("<dummy_light> <%s>: " fmt, __func__, ##args)
+static struct RtkTime currRtkTime;
static struct dummy_light_exam *content;
static int contentNum;
static int currContent;
+static int checkCnt;
+static bool turn_left_active, flash_beam_active;
-static void DummyLightCheckLight(union sigval sig);
+static void DummyLightCheckActive(union sigval sig);
static void ExamDummyLight(union sigval sig);
-void StartDummyLightExam(struct dummy_light_exam *ptr, int num)
+void StartDummyLightExam(struct dummy_light_exam *ptr, int num, const struct RtkTime* rtkTime)
{
DEBUG("StartDummyLightExam");
content = ptr;
contentNum = num;
currContent = 0;
+ currRtkTime = *rtkTime;
- AppTimer_delete(DummyLightCheckLight);
+ AppTimer_delete(DummyLightCheckActive);
AppTimer_delete(ExamDummyLight);
AppTimer_add(ExamDummyLight, D_SEC(2));
+}
+
+int ExecuteDummyLightExam(const struct RtkTime* rtkTime)
+{
+ currRtkTime = *rtkTime;
+ return (currContent == contentNum)?2:1;
}
void DummyLightTTSDone(int id)
{
DEBUG("DummyLightTTSDone %d", id);
-
+ // 绛夎闊虫挱鎶ュ畬姣曞悗璁℃椂
if (id == 100) {
- AppTimer_add(DummyLightCheckLight, D_SEC(3), id);
+ AppTimer_add(DummyLightCheckActive, D_SEC(3), id);
} else if (id == 101) {
- AppTimer_add(DummyLightCheckLight, D_SEC(1), id);
+ AppTimer_add(DummyLightCheckActive, D_SEC(1), id);
+ } else if (id == OVERTAKE) {
+ checkCnt = 0;
+ turn_left_active = flash_beam_active = false;
+ AppTimer_add(DummyLightCheckActive, D_SEC(1), id);
} else {
- AppTimer_add(DummyLightCheckLight, D_SEC(5), id);
+ AppTimer_add(DummyLightCheckActive, D_SEC(5), id);
}
}
-static void DummyLightCheckLight(union sigval sig)
+static void DummyLightCheckActive(union sigval sig)
{
- AppTimer_delete(DummyLightCheckLight);
+ AppTimer_delete(DummyLightCheckActive);
- DEBUG("DummyLightCheckLight %d", sig.sival_int);
+ DEBUG("DummyLightCheckActive %d", sig.sival_int);
+
+ switch (sig.sival_int) {
+ case DRIVE_AT_NIGHT:
+ case TURN_ON_MAIN_BEAM_LAMP:
+ if (ReadCarStatus(MAIN_BEAM_LAMP) != MAIN_BEAM_LIGHT) {
+ AddExamFault(58, &currRtkTime);
+ }
+ break;
+ case TURN_ON_DIPPED_LAMP:
+ case BRIDGE_MEET_CAR:
+ case FOLLOW_CAR:
+ if (ReadCarStatus(DIPPED_BEAM_LAMP) != DIPPED_BEAM_LIGHT) {
+ AddExamFault(58, &currRtkTime);
+ }
+ break;
+ case DRIVE_IN_FOG:
+ if (ReadCarStatus(FOG_LAMP) != FOG_LIGHT) {
+ AddExamFault(58, &currRtkTime);
+ }
+ break;
+ case THROUGE_CROSSWALK:
+ case THROUGE_CURVE:
+ case THROUGE_CROSSROADS:
+ if (ReadCarStatus(FLASH_BEAM_LAMP) != FLASH_BEAM_LIGHT) {
+ AddExamFault(58, &currRtkTime);
+ }
+ break;
+ case OVERTAKE:
+ if (++checkCnt < 5) {
+ if (!flash_beam_active) {
+ if (ReadCarStatus(TURN_SIGNAL_LAMP) == LEFT_TURN_LIGHT) {
+ turn_left_active = true;
+ }
+ }
+ if (turn_left_active) {
+ if (ReadCarStatus(FLASH_BEAM_LAMP) == FLASH_BEAM_LIGHT) {
+ flash_beam_active = true;
+ }
+ }
+ AppTimer_add(DummyLightCheckActive, D_SEC(1), OVERTAKE);
+ return;
+ } else {
+ if (!flash_beam_active || !turn_left_active) {
+ AddExamFault(58, &currRtkTime);
+ }
+ }
+ break;
+ case CAR_FAULT:
+ case PARK_CAR_TEMP:
+ if (ReadCarStatus(TURN_SIGNAL_LAMP) != HAZARD_LIGHTS) {
+ AddExamFault(58, &currRtkTime);
+ }
+ break;
+ default:
+ break;
+ }
+
+ AppTimer_add(ExamDummyLight, D_SEC(1));
}
static void ExamDummyLight(union sigval sig)
@@ -58,6 +131,5 @@
PlayTTS(content[currContent].tts, content[currContent].item);
currContent++;
- AppTimer_add(ExamDummyLight, D_SEC(5));
}
}
--
Gitblit v1.8.0