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