From 026e1750503ec74bbe181bce3ece9931c244e367 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期三, 03 二月 2021 09:23:31 +0800
Subject: [PATCH] 适配模拟灯光。
---
lib/src/main/cpp/driver_test.cpp | 47 ++++++++++++++++++++++++++++++++++-------------
1 files changed, 34 insertions(+), 13 deletions(-)
diff --git a/lib/src/main/cpp/driver_test.cpp b/lib/src/main/cpp/driver_test.cpp
index 29b76ee..9e0f000 100644
--- a/lib/src/main/cpp/driver_test.cpp
+++ b/lib/src/main/cpp/driver_test.cpp
@@ -147,7 +147,6 @@
static bool engineRuning = false;
const int ENGINE_MIN_ROTATE = 200;
static bool engineStart = false;
-static bool engineStartTimeout = false;
exam_param_t examParam;
@@ -157,6 +156,9 @@
static rtk_info *RtkBuffer = NULL;
static int RtkBufferNum = 0, RtkBufferIn = 0;
+
+static pthread_mutex_t clock_mutex = PTHREAD_MUTEX_INITIALIZER;
+static struct RtkTime rtkClock;
static void SetExamParamDefault(void);
static void EngineStartHold(union sigval sig);
@@ -191,6 +193,8 @@
RtkBuffer = (rtk_info *) malloc(RTK_BUFFER_SIZE * sizeof(rtk_info));
RtkBufferNum = RtkBufferIn = 0;
+
+ pthread_mutex_init(&clock_mutex, NULL);
}
static void SetExamParamDefault(void)
@@ -643,8 +647,7 @@
void UpdateRTKInfo(const rtk_info *s)
{
- struct RtkTime rtkClock;
-
+ pthread_mutex_lock(&clock_mutex);
rtkClock.YY = s->YY;
rtkClock.MM = s->MM;
rtkClock.DD = s->DD;
@@ -652,6 +655,7 @@
rtkClock.mm = s->mm;
rtkClock.ss = s->ss;
rtkClock.mss = s->dss;
+ pthread_mutex_unlock(&clock_mutex);
if (ExamStart) {
ExecuteExam(&rtkClock); // 鎵ц鏃犻渶杞﹁締瀹氫綅鐨勯」鐩�
@@ -845,8 +849,10 @@
if (ReadCarStatus(ENGINE_START) == ENGINE_START_ACTIVE) {
if (!engineStart) {
+ DEBUG("妫�娴嬪埌鐐圭伀");
engineStart = true;
if (ReadCarStatus(GEAR) != GEAR_N) {
+ DEBUG("涓嶅湪绌烘尅鐐圭伀");
// 涓嶆槸绌烘尅鐐圭伀锛屼笉鍚堟牸
if (ExamType == TEST_TYPE_AREA)
AddExamFault(10105, rtkTime);
@@ -857,16 +863,9 @@
AppTimer_add(EngineStartHold, examParam.hold_start_key_limit_time);
}
} else if (engineStart) {
+ DEBUG("妫�娴嬪埌鍏抽棴鐐圭伀");
engineStart = false;
AppTimer_delete(EngineStartHold);
- }
-
- if (engineStartTimeout) {
- engineStartTimeout = false;
-
- // 涓嶅強鏃舵澗寮�鍚姩寮�鍏筹紝鎵�10鍒�
- if (ExamType == TEST_TYPE_AREA)
- AddExamFault(10201, rtkTime);
}
if (ExamType == TEST_TYPE_ROAD_DUMMY_LIGHT) {
@@ -911,9 +910,20 @@
static void EngineStartHold(union sigval sig) {
AppTimer_delete(EngineStartHold);
-
+ DEBUG("鐐圭伀瓒呮椂");
if (ReadCarStatus(ENGINE_START) == ENGINE_START_ACTIVE) {
- engineStartTimeout = true;
+ struct RtkTime rtkTime;
+
+ pthread_mutex_lock(&clock_mutex);
+ rtkTime = rtkClock;
+ pthread_mutex_unlock(&clock_mutex);
+
+ // 涓嶅強鏃舵澗寮�鍚姩寮�鍏筹紝鎵�10鍒�
+ if (ExamType == TEST_TYPE_AREA) {
+ AddExamFault(10201, &rtkTime);
+ } else if (ExamType != TEST_TYPE_ROAD_CALIBRATE) {
+ AddExamFault(40207, &rtkTime);
+ }
}
}
@@ -1260,5 +1270,16 @@
void PrepareOver(int res)
{
+ DEBUG("涓婅溅鍑嗗缁撴潫 %d", res);
+
+ if (res != 0) {
+ struct RtkTime rtkTime;
+
+ pthread_mutex_lock(&clock_mutex);
+ rtkTime = rtkClock;
+ pthread_mutex_unlock(&clock_mutex);
+
+ AddExamFault(40101, &rtkTime);
+ }
exam_dummy_light = 2;
}
--
Gitblit v1.8.0