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/test_items2/prepare.h | 1 lib/src/main/cpp/driver_test.cpp | 47 +++++++++++++++++------ lib/src/main/cpp/master/comm_if.cpp | 1 lib/src/main/cpp/test_items2/dummy_light.cpp | 9 ++++ lib/src/main/cpp/test_items2/prepare.cpp | 7 +++ lib/src/main/cpp/test_items2/road_exam.cpp | 5 +- lib/build.gradle | 1 lib/src/main/cpp/rtk_module/virtual_rtk.cpp | 22 ++++++---- lib/src/main/cpp/rtk_platform/platform.cpp | 3 + 9 files changed, 71 insertions(+), 25 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 24ef7ba..8f31f11 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -15,6 +15,7 @@ externalNativeBuild { cmake { cppFlags "-std=c++11 -frtti -fexceptions" +// cppFlags += "-DAY_DEVICE" } } ndk { 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; } diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp index b2772e1..455de37 100644 --- a/lib/src/main/cpp/master/comm_if.cpp +++ b/lib/src/main/cpp/master/comm_if.cpp @@ -141,6 +141,7 @@ pthread_mutex_unlock(&msg_mutex); } else { // 寤惰繜閲嶅彂 + DEBUG("鍙戦�佸け璐�"); usleep(500000); sem_post(&sem_msg_income); } diff --git a/lib/src/main/cpp/rtk_module/virtual_rtk.cpp b/lib/src/main/cpp/rtk_module/virtual_rtk.cpp index 04e7a08..fcdfd30 100644 --- a/lib/src/main/cpp/rtk_module/virtual_rtk.cpp +++ b/lib/src/main/cpp/rtk_module/virtual_rtk.cpp @@ -35,6 +35,7 @@ static void TcpDataCallback2(void *buffer, int length, void *p, void *context); static void ConnectLater(union sigval sig); +static void ConnectLater2(union sigval sig); void InitVirtualDevice(const char *domain_name, int port) { @@ -87,14 +88,17 @@ static void ConnectLater(union sigval sig) { AppTimer_delete(ConnectLater); - if (sig.sival_int == 1) { - if (ctp != NULL) { - ctp->OpenTcpPort(VAddr.domain_name, VAddr.port); - } - } else { - if (ctp2 != NULL) { - ctp2->OpenTcpPort(VAddr.domain_name, VAddr.port + 1); - } + if (ctp != NULL) { + ctp->OpenTcpPort(VAddr.domain_name, VAddr.port); + } +} + +static void ConnectLater2(union sigval sig) +{ + AppTimer_delete(ConnectLater2); + + if (ctp2 != NULL) { + ctp2->OpenTcpPort(VAddr.domain_name, VAddr.port + 1); } } @@ -155,7 +159,7 @@ connectCnt2++; if (connectCnt2 < 3) { - AppTimer_add(ConnectLater, D_SEC(3), 2); + AppTimer_add(ConnectLater2, D_SEC(3), 2); } PlayTTS("鐏厜妯℃嫙鍣ㄦ柇寮�", NULL); } diff --git a/lib/src/main/cpp/rtk_platform/platform.cpp b/lib/src/main/cpp/rtk_platform/platform.cpp index 33efdc8..27dd2a5 100644 --- a/lib/src/main/cpp/rtk_platform/platform.cpp +++ b/lib/src/main/cpp/rtk_platform/platform.cpp @@ -516,6 +516,7 @@ break; } case CAR_SENSOR_UPDATE_EVT: { + DEBUG("CAR_SENSOR_UPDATE_EVT"); struct carSensorBrief brief; int x = 20; @@ -585,6 +586,8 @@ if (sensor.clutch == 1) sensor.gear = 0; + DEBUG("鐢垫睜鐢靛帇 %f", sensor.cellVolt); + UpdateSensor(&sensor); break; } diff --git a/lib/src/main/cpp/test_items2/dummy_light.cpp b/lib/src/main/cpp/test_items2/dummy_light.cpp index 3f68f1f..9697856 100644 --- a/lib/src/main/cpp/test_items2/dummy_light.cpp +++ b/lib/src/main/cpp/test_items2/dummy_light.cpp @@ -37,6 +37,12 @@ for (int i = 0; i < contentNum; ++i) { DEBUG("鐏厜椤圭洰 <%d> item %d, TTS %s", i, content[i].item, content[i].tts.c_str()); + for (int j = 0; j < content[i].process.size(); ++j) { + DEBUG("鐏厜杩囩▼瑙�<%d> %d - %d", i, (content[i].process[j] >> 8) & 0xFF, content[i].process[j] & 0xFF); + } + for (int j = 0; j < content[i].solution.size(); ++j) { + DEBUG("鐏厜鏈�缁堣В<%d> %d - %d", i, (content[i].solution[j] >> 8) & 0xFF, content[i].solution[j] & 0xFF); + } } testing = true; @@ -63,6 +69,7 @@ for (int i = 0; i < content[question].process.size(); ++i) { if (ReadCarStatus((content[question].process[i]>>8) & 0xFF) == content[question].process[i] & 0xFF) { process.push_back(content[question].process[i]); + DEBUG("鐏厜鎿嶄綔杩囩▼瑙�1<%d> %d - %d", question, (content[question].process[i]>>8) & 0xFF, content[question].process[i] & 0xFF); } } @@ -83,6 +90,7 @@ if (testing) { for (int i = 0; i < content[question].process.size(); ++i) { if (id == ((content[question].process[i] >> 8) & 0xFF) && value == (content[question].process[i] & 0xFF)) { + DEBUG("鐏厜鎿嶄綔杩囩▼瑙�2<%d> %d - %d", question, (content[question].process[i]>>8) & 0xFF, content[question].process[i] & 0xFF); if (process.size() == 0 || process.back() != content[question].process[i]) { process.push_back(content[question].process[i]); } @@ -113,6 +121,7 @@ for (int i = 0; i < content[question].solution.size(); ++i) { if (ReadCarStatus((content[question].solution[i]>>8)&0xFF) != (content[question].solution[i] & 0xFF)) { + DEBUG("鐏厜纭涓嶅悎鏍�<%d> %d != %d", question, (content[question].solution[i]>>8) & 0xFF, content[question].solution[i] & 0xFF); AddExamFault(content[question].wrongCode, &currRtkTime); break; } diff --git a/lib/src/main/cpp/test_items2/prepare.cpp b/lib/src/main/cpp/test_items2/prepare.cpp index 79fec6c..0ed3d54 100644 --- a/lib/src/main/cpp/test_items2/prepare.cpp +++ b/lib/src/main/cpp/test_items2/prepare.cpp @@ -27,6 +27,13 @@ DEBUG("寮�濮嬩笂杞﹀噯澶�"); } +void TerminatePrepare(void) +{ + exec = false; + AppTimer_delete(PrepareTimeout); + AppTimer_delete(PrepareTimeout2); +} + void handlePrepare(uint16_t sensor_id, int value) { if (!exec) diff --git a/lib/src/main/cpp/test_items2/prepare.h b/lib/src/main/cpp/test_items2/prepare.h index 538a015..0f197df 100644 --- a/lib/src/main/cpp/test_items2/prepare.h +++ b/lib/src/main/cpp/test_items2/prepare.h @@ -8,6 +8,7 @@ #include <cstdint> void StartPrepare(void); +void TerminatePrepare(void); void handlePrepare(uint16_t sensor_id, int value); void PrepareOver(int res); diff --git a/lib/src/main/cpp/test_items2/road_exam.cpp b/lib/src/main/cpp/test_items2/road_exam.cpp index 166cbc3..c946ecc 100644 --- a/lib/src/main/cpp/test_items2/road_exam.cpp +++ b/lib/src/main/cpp/test_items2/road_exam.cpp @@ -19,6 +19,7 @@ #include "car_start.h" #include "overtake.h" #include "change_lane.h" +#include "prepare.h" #include <cmath> #include <vector> @@ -202,9 +203,7 @@ void TerminateRoadExam(void) { TerminateDummyLightExam(); -// TerminateStopCarExam(); -// TerminateOperateGearExam(); -// TerminateDriveStraightExam(); + TerminatePrepare(); } /********************************************************************* -- Gitblit v1.8.0