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