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