From 6c7f9e67fdcb882725d2790279fe9d99fb343c06 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 12 三月 2020 17:39:37 +0800
Subject: [PATCH] 更新传感器
---
/dev/null | 46 -----
lib/src/main/cpp/driver_test.cpp | 433 ++++++++++++++++++++---------------------------
lib/src/main/cpp/master/comm_if.cpp | 1
lib/src/main/cpp/test_items2/common_check.cpp | 6
lib/src/main/cpp/CMakeLists.txt | 3
lib/src/main/cpp/driver_test.h | 6
lib/src/main/cpp/rtk_platform/platform.cpp | 2
7 files changed, 192 insertions(+), 305 deletions(-)
diff --git a/lib/src/main/cpp/CMakeLists.txt b/lib/src/main/cpp/CMakeLists.txt
index a194d80..35a34fe 100644
--- a/lib/src/main/cpp/CMakeLists.txt
+++ b/lib/src/main/cpp/CMakeLists.txt
@@ -27,13 +27,14 @@
Geometry.cpp
driver_test.cpp
mcu/mcu_if.cpp
+
+ test_common/car_sensor.cpp
test_items/error_list.cpp
test_items/park_edge.cpp
test_items/park_bottom.cpp
test_items/stop_and_start.cpp
test_items/driving_curve.cpp
test_items/turn_a90.cpp
- test_items/comm_test.cpp
test_items2/common_check.cpp
test_items2/dummy_light.cpp
diff --git a/lib/src/main/cpp/driver_test.cpp b/lib/src/main/cpp/driver_test.cpp
index d795059..80ccb06 100644
--- a/lib/src/main/cpp/driver_test.cpp
+++ b/lib/src/main/cpp/driver_test.cpp
@@ -26,8 +26,9 @@
#include "test_items/stop_and_start.h"
#include "master/comm_if.h"
#include "utils/xconvert.h"
-#include "test_items/comm_test.h"
+#include "test_common/car_sensor.h"
#include "mcu/mcu_if.h"
+#include "test_common/car_sensor.h"
#define DEBUG(fmt, args...) LOGD("<driver_test> <%s>: " fmt, __func__, ##args)
@@ -65,8 +66,9 @@
TEST_TYPE_ROAD_TRUE_LIGHT
};
-static bool TestStart = false;
-static int TestType;
+static bool ExamStart = false;
+static int ExamType;
+static bool reportSeatbeltEject;
static int CarInArea = 0;
int errs = 0;
@@ -91,17 +93,9 @@
static car_model *CarModel = NULL;
static car_model *CarModelPrev = NULL;
-static struct sensor_cfg {
- int gpioId;
- int funId;
- int validLvl;
-} SensorConfig[32];
-static int SensorNum = 0;
-
-static int SensorValidLevel;
-
static struct dummy_light_exam *DummyLightContent;
static int DummyLightContentSize;
+static bool engineRuning = false;
#define MOV_AVG_SIZE 1
#define RTK_BUFFER_SIZE 100
@@ -113,11 +107,13 @@
static rtk_info *RtkBuffer = NULL;
static int RtkBufferNum = 0, RtkBufferIn = 0;
+static void DetectEnterOrExitMap(void);
+static void ExecuteExam(double speed, int move, double azimuth, const struct RtkTime* rtkTime);
static uint32_t CalcTimeDiff(const rtk_info *a, const rtk_info *b);
static void ReadDriverExamPrimerTimeout(union sigval sig);
static void UpdateCarBodyCoord(double azimuth, double pitch, double roll, PointF main_ant, car_model *carModel);
static bool UpdateCarCoord(double &spd, int &mov, int &idx);
-static bool FrontTireEnterArea(const Polygon *car, const Polygon *map);
+
static int EnterMap(const car_model *car, const struct map_list *mapList, int mapNum);
static bool ExitMap(const car_model *car, int mapId, const struct map_list *mapList, int mapNum);
static int GetMapId(int index, const struct map_list *mapList, int mapNum);
@@ -128,17 +124,13 @@
pthread_mutex_init(&rtk_clock_mutex, NULL);
memset(&rtkClock, 0, sizeof(rtkClock));
- TestStart = false;
+ ExamStart = false;
memset(&MapList, 0, sizeof(MapList));
MapNum = 0;
CarModel = NULL;
CarModelPrev = NULL;
- CommTestInit();
- SensorNum = 0;
- memset(SensorConfig, 0, sizeof(SensorConfig));
-
- SensorValidLevel = 0;
+ CarSensorInit();
DummyLightContentSize = 0;
DummyLightContent = NULL;
@@ -165,7 +157,7 @@
void ClearMap(void)
{
- if (TestStart) return;
+ if (ExamStart) return;
for (int i = 0; i < MapNum; ++i) {
if (MapList[i].map.point != NULL)
@@ -183,7 +175,7 @@
AppTimer_delete(ReadDriverExamPrimerTimeout);
- if (map == NULL || pointNum == 0 || TestStart)
+ if (map == NULL || pointNum == 0 || ExamStart)
return;
MapList[MapNum].id = id;
@@ -219,7 +211,7 @@
{
DEBUG("鍔犲叆杞﹁締淇℃伅 pointNum %d", pointNum);
- if (point == NULL || pointNum == 0 || TestStart) return;
+ if (point == NULL || pointNum == 0 || ExamStart) return;
if (CarModel != NULL) {
if (CarModel->body != NULL)
@@ -329,54 +321,11 @@
DEBUG("SetCarMeasurePoint Calc Over");
}
-void SetSensorCfg(int (*sensor)[3], int sensorNum)
-{
- DEBUG("鍔犲叆浼犳劅鍣ㄩ厤缃� sensorNum %d", sensorNum);
- SensorValidLevel = 0;
-
- SensorNum = sensorNum;
- for (int i = 0; i < sensorNum; ++i) {
- SensorConfig[i].gpioId = sensor[i][0];
- SensorConfig[i].funId = sensor[i][1];
- SensorConfig[i].validLvl = sensor[i][2];
-
- if (sensor[i][2] != 0) {
- SensorValidLevel |= BV(i);
- }
- }
-}
-
-int GetSensorValidLevel(void)
-{
- return SensorValidLevel;
-}
-
-void GetSensorCfg(int gpio, int &func, bool &lvl)
-{
- for (int i = 0; i < SensorNum; ++i) {
- if (SensorConfig[i].gpioId == gpio) {
- func = SensorConfig[i].funId;
- lvl = SensorConfig[i].validLvl == 0 ? false : true;
- }
- }
-}
-
-void FindSensorCfg(int func, int &gpio, bool &lvl)
-{
- gpio = -1;
- for (int i = 0; i < SensorNum; ++i) {
- if (SensorConfig[i].funId == func) {
- gpio = SensorConfig[i].gpioId;
- lvl = SensorConfig[i].validLvl == 0 ? false : true;
- }
- }
-}
-
void SetDummyLightExam(int n, struct dummy_light_exam *cfg)
{
- DEBUG("鑾峰彇妯℃嫙璺�冪伅鍏夋祴璇曢」鐩� N = %d %d", n, TestStart);
+ DEBUG("鑾峰彇妯℃嫙璺�冪伅鍏夋祴璇曢」鐩� N = %d %d", n, ExamStart);
-// if (TestStart) return;
+// if (ExamStart) return;
if (DummyLightContent != NULL) {
free(DummyLightContent);
@@ -401,7 +350,7 @@
if (start == 0) {
DEBUG("缁撴潫鑰冭瘯");
// CurrExamMapIndex = -1;
-// TestStart = false;
+// ExamStart = false;
// CommTestStart(false);
// MA_SendExamStatus(0, 0);
return;
@@ -421,14 +370,14 @@
}
if (!err) {
- if (!TestStart) {
+ if (!ExamStart) {
DEBUG("鍚姩鑰冭瘯");
ExamFaultList.clear();
examFaultIndex = 0;
- TestStart = true;
- TestType = type;
- CommTestStart(true);
+ ExamStart = true;
+ ExamType = type;
+ reportSeatbeltEject = false;
if (type == TEST_TYPE_ROAD_DUMMY_LIGHT) {
StartDummyLightExam(DummyLightContent, DummyLightContentSize);
@@ -535,107 +484,179 @@
rtkTime.ss = RtkBuffer[index].ss;
rtkTime.mss = RtkBuffer[index].dss;
- if (TestStart) {
- if (CurrExamMapIndex < 0) {
- if (CurrEnterMapIndex < 0) {
- CurrEnterMapIndex = EnterMap(CarModel, MapList, MapNum);
- if (CurrEnterMapIndex >= 0) {
- DEBUG("鍙戦�佽繘鍏ュ満鍦版姤鍛� %d", GetMapId(CurrEnterMapIndex, MapList, MapNum));
- MA_EnterMap(GetMapId(CurrEnterMapIndex, MapList, MapNum), GetMapType(CurrEnterMapIndex, MapList, MapNum), 1);
+ DetectEnterOrExitMap();
- CurrExamMapIndex = CurrEnterMapIndex;
- CurrExamStatus = EXAM_AREA_START;
- }
- } else {
- if (ExitMap(CarModel, CurrEnterMapIndex, MapList, MapNum)) {
- DEBUG("鍙戦�佺寮�鍦哄湴鎶ュ憡 %d", GetMapId(CurrEnterMapIndex, MapList, MapNum));
- MA_EnterMap(GetMapId(CurrEnterMapIndex, MapList, MapNum), GetMapType(CurrEnterMapIndex, MapList, MapNum), 0);
- CurrEnterMapIndex = -1;
- }
- }
- }
- //ExitMap(const car_model *car, int index, const struct map_list *mapList, int mapNum)
+ if (ExamStart) {
+ ExecuteExam(speed, move, azimuth, &rtkTime);
}
+ }
+}
- if (CurrExamMapIndex >= 0) {
- int mtype = GetMapType(CurrExamMapIndex, MapList, MapNum);
+static void DetectEnterOrExitMap(void)
+{
+ if (ExamType == TEST_TYPE_AREA) {
- if (CurrExamStatus == EXAM_AREA_START) {
- DEBUG("CurrExamMapIndex %d mtype %d", GetMapId(CurrExamMapIndex, MapList, MapNum), mtype);
+ }
+ if (CurrExamMapIndex < 0) {
+ if (CurrEnterMapIndex < 0) {
+ CurrEnterMapIndex = EnterMap(CarModel, MapList, MapNum);
+ if (CurrEnterMapIndex >= 0) {
+ DEBUG("鍙戦�佽繘鍏ュ満鍦版姤鍛� %d", GetMapId(CurrEnterMapIndex, MapList, MapNum));
+ MA_EnterMap(GetMapId(CurrEnterMapIndex, MapList, MapNum), GetMapType(CurrEnterMapIndex, MapList, MapNum), 1);
- switch (mtype) {
- case MAP_TYPE_PARK_BUTTOM:
- DEBUG("杩涘叆鍊掕溅鍏ュ簱鍦哄湴");
- MA_SendDebugInfo("杩涘叆鍊掕溅鍏ュ簱鍦哄湴 %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
+ CurrExamMapIndex = CurrEnterMapIndex;
+ CurrExamStatus = EXAM_AREA_START;
+ }
+ } else {
+ if (ExitMap(CarModel, CurrEnterMapIndex, MapList, MapNum)) {
+ DEBUG("鍙戦�佺寮�鍦哄湴鎶ュ憡 %d", GetMapId(CurrEnterMapIndex, MapList, MapNum));
+ MA_EnterMap(GetMapId(CurrEnterMapIndex, MapList, MapNum), GetMapType(CurrEnterMapIndex, MapList, MapNum), 0);
+ CurrEnterMapIndex = -1;
+ }
+ }
+ }
+}
- StartParkBottom(move, &rtkTime);
- CurrExamStatus = EXAM_AREA_RUN;
- break;
- case MAP_TYPE_STOP_START:
- DEBUG("杩涘叆涓婂潯璧锋鍦哄湴");
- MA_SendDebugInfo("杩涘叆涓婂潯璧锋鍦哄湴 %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
- StartSAS(move, &rtkTime);
- CurrExamStatus = EXAM_AREA_RUN;
- break;
- case MAP_TYPE_PART_EDGE:
- DEBUG("杩涘叆渚ф柟浣嶅仠杞﹀満鍦�");
- MA_SendDebugInfo("杩涘叆渚ф柟浣嶅仠杞﹀満鍦� %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
- StartParkEdge(move, &rtkTime);
+static void ExecuteExam(double speed, int move, double azimuth, const struct RtkTime* rtkTime)
+{
+ if (move != 0) {
+ if (ReadSensor(SENSOR_SEATBELT) == 0 && !reportSeatbeltEject) {
+ DEBUG("涓嶇郴瀹夊叏甯�");
+ reportSeatbeltEject = true;
+ AddExamFault(1, rtkTime);
+ }
+ }
- CurrExamStatus = EXAM_AREA_RUN;
- break;
- case MAP_TYPE_CURVE:
- DEBUG("杩涘叆鏇茬嚎琛岄┒鍦哄湴");
- MA_SendDebugInfo("杩涘叆鏇茬嚎琛岄┒鍦哄湴 %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
- StartDrivingCurve(move, &rtkTime);
+ if (CurrExamMapIndex >= 0) {
+ int mtype = GetMapType(CurrExamMapIndex, MapList, MapNum);
- CurrExamStatus = EXAM_AREA_RUN;
- break;
- case MAP_TYPE_TURN_90:
- DEBUG("杩涘叆鐩磋杞集鍦哄湴");
- MA_SendDebugInfo("杩涘叆鐩磋杞集鍦哄湴 %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
- StartTurnA90(move, azimuth, &rtkTime);
- CurrExamStatus = EXAM_AREA_RUN;
- break;
- default:break;
- }
- } else if (CurrExamStatus == EXAM_AREA_RUN) {
- int testing = 0;
- switch (mtype) {
- case MAP_TYPE_PARK_BUTTOM:
- testing = TestParkBottom(&MapList[CurrExamMapIndex].map,
- CarModel, CarModelPrev, speed, move, &rtkTime);
- break;
- case MAP_TYPE_STOP_START:
- testing = TestSAS(&MapList[CurrExamMapIndex].map, CarModel, CarModelPrev, speed, move, &rtkTime);
- break;
- case MAP_TYPE_PART_EDGE:
- testing = TestParkEdge(&MapList[CurrExamMapIndex].map, CarModel, CarModelPrev, speed, move, &rtkTime);
- break;
- case MAP_TYPE_CURVE:
- testing = TestDrivingCurve(&MapList[CurrExamMapIndex].map, &MapList[CurrExamMapIndex].map2, CarModel, CarModelPrev, speed, move, &rtkTime);
- break;
- case MAP_TYPE_TURN_90:
- testing = TestTurnA90(&MapList[CurrExamMapIndex].map, CarModel, CarModelPrev, azimuth, speed, move, &rtkTime);
- break;
- default:
- break;
- }
+ if (CurrExamStatus == EXAM_AREA_START) {
+ DEBUG("CurrExamMapIndex %d mtype %d", GetMapId(CurrExamMapIndex, MapList, MapNum), mtype);
- if (testing > 0) {
+ switch (mtype) {
+ case MAP_TYPE_PARK_BUTTOM:
+ DEBUG("杩涘叆鍊掕溅鍏ュ簱鍦哄湴");
+ MA_SendDebugInfo("杩涘叆鍊掕溅鍏ュ簱鍦哄湴 %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
+
+ StartParkBottom(move, rtkTime);
CurrExamStatus = EXAM_AREA_RUN;
- } else {
- CurrExamStatus = EXAM_AREA_END;
- }
+ break;
+ case MAP_TYPE_STOP_START:
+ DEBUG("杩涘叆涓婂潯璧锋鍦哄湴");
+ MA_SendDebugInfo("杩涘叆涓婂潯璧锋鍦哄湴 %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
+ StartSAS(move, rtkTime);
+ CurrExamStatus = EXAM_AREA_RUN;
+ break;
+ case MAP_TYPE_PART_EDGE:
+ DEBUG("杩涘叆渚ф柟浣嶅仠杞﹀満鍦�");
+ MA_SendDebugInfo("杩涘叆渚ф柟浣嶅仠杞﹀満鍦� %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
+ StartParkEdge(move, rtkTime);
+
+ CurrExamStatus = EXAM_AREA_RUN;
+ break;
+ case MAP_TYPE_CURVE:
+ DEBUG("杩涘叆鏇茬嚎琛岄┒鍦哄湴");
+ MA_SendDebugInfo("杩涘叆鏇茬嚎琛岄┒鍦哄湴 %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
+ StartDrivingCurve(move, rtkTime);
+
+ CurrExamStatus = EXAM_AREA_RUN;
+ break;
+ case MAP_TYPE_TURN_90:
+ DEBUG("杩涘叆鐩磋杞集鍦哄湴");
+ MA_SendDebugInfo("杩涘叆鐩磋杞集鍦哄湴 %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
+ StartTurnA90(move, azimuth, rtkTime);
+ CurrExamStatus = EXAM_AREA_RUN;
+ break;
+ default:break;
+ }
+ } else if (CurrExamStatus == EXAM_AREA_RUN) {
+ int testing = 0;
+ switch (mtype) {
+ case MAP_TYPE_PARK_BUTTOM:
+ testing = TestParkBottom(&MapList[CurrExamMapIndex].map,
+ CarModel, CarModelPrev, speed, move, rtkTime);
+ break;
+ case MAP_TYPE_STOP_START:
+ testing = TestSAS(&MapList[CurrExamMapIndex].map, CarModel, CarModelPrev, speed, move, rtkTime);
+ break;
+ case MAP_TYPE_PART_EDGE:
+ testing = TestParkEdge(&MapList[CurrExamMapIndex].map, CarModel, CarModelPrev, speed, move, rtkTime);
+ break;
+ case MAP_TYPE_CURVE:
+ testing = TestDrivingCurve(&MapList[CurrExamMapIndex].map, &MapList[CurrExamMapIndex].map2, CarModel, CarModelPrev, speed, move, rtkTime);
+ break;
+ case MAP_TYPE_TURN_90:
+ testing = TestTurnA90(&MapList[CurrExamMapIndex].map, CarModel, CarModelPrev, azimuth, speed, move, rtkTime);
+ break;
+ default:
+ break;
}
- if (CurrExamStatus != EXAM_AREA_RUN) {
- // 鏌愰」缁撴潫
- //DEBUG("閫�鍑哄満鍦� %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
- //MA_SendDebugInfo("閫�鍑哄満鍦� %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
- CurrExamStatus = EXAM_AREA_NONE;
- CurrExamMapIndex = -1;
+ if (testing > 0) {
+ CurrExamStatus = EXAM_AREA_RUN;
+ } else {
+ CurrExamStatus = EXAM_AREA_END;
}
+ }
+ if (CurrExamStatus != EXAM_AREA_RUN) {
+ // 鏌愰」缁撴潫
+ //DEBUG("閫�鍑哄満鍦� %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
+ //MA_SendDebugInfo("閫�鍑哄満鍦� %d", GetMapId(CurrExamMapIndex, MapList, MapNum));
+ CurrExamStatus = EXAM_AREA_NONE;
+ CurrExamMapIndex = -1;
+ }
+ }
+}
+
+static void EngineStartHold(union sigval sig) {
+ AppTimer_delete(EngineStartHold);
+
+ // 涓嶅強鏃舵澗寮�鍚姩寮�鍏筹紝鎵�10鍒�
+ if (ReadSensor(SENSOR_ENGINE_START) == 1 && ExamStart) {
+ if (ExamType == TEST_TYPE_AREA)
+ AddExamFault(4, &rtkClock);
+ }
+}
+
+void SensorChanged(int *sensorId, int *sensorValue, int num)
+{
+ const int ENGINE_MIN_ROTATE = 200;
+
+ for (int i = 0; i < num; ++i) {
+ switch (sensorId[i]) {
+ case SENSOR_SEATBELT:
+ break;
+ case SENSOR_ENGINE_START:
+ AppTimer_delete(EngineStartHold);
+
+ if (sensorValue[i] == 1) {
+ if (ReadSensor(SENSOR_SHIFT_N) == 0) {
+ // 涓嶆槸绌烘尅鐐圭伀锛屼笉鍚堟牸
+ if (ExamType == TEST_TYPE_AREA)
+ AddExamFault(3, &rtkClock);
+ else
+ AddExamFault(4, &rtkClock);
+ }
+ AppTimer_add(EngineStartHold, D_SEC(2));
+ }
+ break;
+ case SENSOR_ENGINE_RPM:
+ if (sensorValue[i] < ENGINE_MIN_ROTATE) {
+ if (engineRuning) {
+ engineRuning = false;
+ if (ExamType == TEST_TYPE_AREA) {
+ // 鐔勭伀1娆★紝鎵�10鍒�
+ AddExamFault(5, &rtkClock);
+ } else {
+ AddExamFault(20, &rtkClock);
+ }
+ }
+ } else {
+ engineRuning = true;
+ }
+ break;
+ default:
+ break;
}
}
}
@@ -770,87 +791,6 @@
// DEBUG("tmDiff = %ld speed = %f m/Sec move = %d", tmDiff, speed, move);
return true;
-/* if (!TestStart) return;
-
- if (CarInArea == 0) {
-// if (FrontTireEnterArea(&py, &theParkEdgeMap)) {
-// CarInArea = TEST_PARK_BOTTOM;
-// TestItem = TEST_PARK_BOTTOM;
-// StartParkBottom();
-// }
-
- CarInArea = TEST_SLOPE;
- TestItem = TEST_SLOPE;
- StartSAS();
- }
-
- switch (TestItem) {
- case TEST_NONE: {
- break;
- }
- case TEST_PARK_BOTTOM: {
- errs = TestParkBottom(ErrorList, &theParkEdgeMap, GetCarModelCache(0), currSpeed, currDirect);
-
- if (errs != 0) {
- StopParkBottom();
- TestItem = TEST_NONE;
- }
- break;
- }
- case TEST_PARK_EDGE: {
- errs = TestParkEdge(ErrorList, &theParkEdgeMap, GetCarModelCache(0), currSpeed, currDirect);
-
- if (errs != 0) {
- StopParkEdge();
- TestItem = TEST_NONE;
- }
- break;
- }
-
- case TEST_TUNE_90: {
- errs = TestTurnA90(ErrorList, &theTurn90Map, GetCarModelCache(0), currSpeed, currDirect, currAzimuth);
-
- if (errs != 0) {
- StopTurnA90();
- TestItem = TEST_NONE;
- }
-
- break;
- }
-
- case TEST_SLOPE: {
- errs = TestSAS(ErrorList, &theSSMap, GetCarModelCache(0), currSpeed, currDirect);
-
- if (errs != 0) {
- StopSAS();
- TestItem = TEST_NONE;
- }
-
- break;
- }
- default:
- break;
- }
-
- if (ErrorList.size() > 0) {
- vector<int>::iterator it = ErrorList.end();
- it--;
- error_list_t list = GetErrorList(*it);
-
- int scr = 0;
-
- for (vector<int>::iterator it1 = ErrorList.begin(); it1 != ErrorList.end(); ++it1) {
- error_list_t list = GetErrorList(*it1);
-
- scr += list.dec_score;
- }
-
- char buff[256];
-
- sprintf(buff, "%s, 鎬昏鎵e垎 %d", list.text_desc, scr);
-
- TextOsd(1, buff);
- }*/
}
static int EnterMap(const car_model *car, const struct map_list *mapList, int mapNum)
@@ -1033,6 +973,9 @@
{
struct ExamFault fault;
+ if (!ExamStart)
+ return;
+
fault.sn = examFaultIndex++;
sprintf(fault.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + rtkTime->YY,
rtkTime->MM, rtkTime->DD, rtkTime->hh, rtkTime->mm, rtkTime->ss, rtkTime->mss);
@@ -1088,14 +1031,6 @@
projectDistance * cos(toRadians(azimuth)) * cos(toRadians(projectAngle)) +
main_ant.Y;
}
-}
-
-static bool FrontTireEnterArea(const Polygon *car, const Polygon *map)
-{
- if (IntersectionOf(car->point[0], map) == GM_Containment) {
- return true;
- }
- return false;
}
void SystemShutdown(int event, int timeout)
diff --git a/lib/src/main/cpp/driver_test.h b/lib/src/main/cpp/driver_test.h
index 6f6288d..4ffde45 100644
--- a/lib/src/main/cpp/driver_test.h
+++ b/lib/src/main/cpp/driver_test.h
@@ -88,11 +88,7 @@
void SetCarMeasurePoint(double *basePoint, int *axial, int *left_front_tire,
int *right_front_tire, int *left_rear_tire, int *right_rear_tire,
int *body, int bodyNum, double (*point)[2], int pointNum, double antPitch);
-void SetSensorCfg(int (*sensor)[3], int sensorNum);
-int GetSensorValidLevel(void);
-void GetSensorCfg(int gpio, int &func, bool &lvl);
-void FindSensorCfg(int func, int &gpio, bool &lvl);
-
+void SensorChanged(int *sensorId, int *sensorValue, int num);
void StartDriverExam(int start, int type);
void StartMapExam(int map_id, int exam);
void GetRtkClock(struct RtkTime *s);
diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp
index 7ba83ed..b1ea6af 100644
--- a/lib/src/main/cpp/master/comm_if.cpp
+++ b/lib/src/main/cpp/master/comm_if.cpp
@@ -15,6 +15,7 @@
#include "../common/apptimer.h"
#include "../jni_log.h"
#include "../mcu/mcu_if.h"
+#include "../test_common/car_sensor.h"
#include <string>
#include <iostream>
diff --git a/lib/src/main/cpp/rtk_platform/platform.cpp b/lib/src/main/cpp/rtk_platform/platform.cpp
index d44eac7..4f9f0bb 100644
--- a/lib/src/main/cpp/rtk_platform/platform.cpp
+++ b/lib/src/main/cpp/rtk_platform/platform.cpp
@@ -21,7 +21,7 @@
#include "../utils/xconvert.h"
#include "../utils/num.h"
#include "../driver_test.h"
-#include "../test_items/comm_test.h"
+#include "../test_common/car_sensor.h"
#define PARSE_BUFF_SIZE 4096
diff --git a/lib/src/main/cpp/test_items/comm_test.cpp b/lib/src/main/cpp/test_items/comm_test.cpp
deleted file mode 100644
index f715788..0000000
--- a/lib/src/main/cpp/test_items/comm_test.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-//
-// Created by fctom on 2020/2/13.
-//
-
-#include "comm_test.h"
-#include "../driver_test.h"
-#include "../defs.h"
-#include "../common/apptimer.h"
-
-static bool seatbeltInsert;
-static bool engineStart;
-
-const int ENGINE_MIN_ROTATE = 200;
-
-static bool commTest = false;
-static uint16_t gpioStore = 0;
-
-static void SensorChange(int gpio, bool value);
-static void EngineStartHold(union sigval sig);
-
-void CommTestInit(void)
-{
- gpioStore = 0;
- engineStart = true;
- commTest = false;
-}
-
-void CommTestStart(bool start)
-{
- commTest = start;
- if (start) {
- // 妫�鏌ュ畨鍏ㄥ甫
- if (CheckSensorX(SEATBELT) == 0) {
- struct RtkTime rt;
- GetRtkClock(&rt);
-// AddExamFault(1, &rt);
- }
- }
-}
-
-void UpdateSensor(uint16_t gpio, uint16_t speed, uint16_t engine)
-{
- int idx, lvl;
-
- uint16_t chg = gpioStore^gpio;
-
- gpioStore = gpio;
-
- if (commTest) {
- for (int i = 0; i < 16; ++i) {
- if (chg & BV(i)) {
- SensorChange(i, (bool) (gpio & BV(i)));
- }
- }
- }
-
- if (engine < ENGINE_MIN_ROTATE) {
- if (engineStart) {
- if (commTest) {
- // 鐔勭伀1娆★紝鎵�10鍒�
- struct RtkTime rt;
- GetRtkClock(&rt);
- AddExamFault(5, &rt);
- }
- engineStart = false;
- }
- } else {
- engineStart = true;
- }
-}
-
-int CheckSensorX(int func)
-{
- int gpio;
- bool level;
- int validLevel = GetSensorValidLevel();
-
- // 浼犳劅鍣ㄦ棤鏁堬紝璁や负閫氳繃
- switch (func) {
- case SEATBELT:
- FindSensorCfg(SENSOR_SEATBELT, gpio, level);
- if (gpio >= 0 && (gpioStore & BV(gpio)) != (validLevel & BV(gpio)) ) {
- return 0;
- }
- return 1;
- case LEFT_TURN_SIGNAL:
- FindSensorCfg(SENSOR_LEFT_TURN_SIGNAL, gpio, level);
- if (gpio == -1 || (gpioStore & BV(gpio)) == (validLevel & BV(gpio)) ) {
- return 1;
- }
- return 0;
- case RIGHT_TURN_SIGNAL:
- FindSensorCfg(SENSOR_RIGHT_TURN_SIGNAL, gpio, level);
- if (gpio == -1 || (gpioStore & BV(gpio)) == (validLevel & BV(gpio)) ) {
- return 1;
- }
- return 0;
- case HANDBREAK:
- FindSensorCfg(SENSOR_HANDBREAK, gpio, level);
- if (gpio == -1 || (gpioStore & BV(gpio)) == (validLevel & BV(gpio)) ) {
- return 1;
- }
- return 0;
- case SHIFT:
- FindSensorCfg(SENSOR_SHIFT_N, gpio, level);
- if (gpio == -1 || (gpioStore & BV(gpio)) == (validLevel & BV(gpio))) {
- return 'N';
- }
- return 0;
- default:
- break;
- }
-
- return -1;
-}
-
-static void EngineStartHold(union sigval sig) {
- AppTimer_delete(EngineStartHold);
-
- // 涓嶅強鏃舵澗寮�鍚姩寮�鍏筹紝鎵�10鍒�
- struct RtkTime rt;
- GetRtkClock(&rt);
- AddExamFault(4, &rt);
-}
-
-static void SensorChange(int gpio, bool value)
-{
- int func;
- bool level;
-
- GetSensorCfg(gpio, func, level);
-
- switch (func) {
- case SENSOR_SEATBELT:
- if (level != value) {
- // 涓嶄娇鐢ㄥ畨鍏ㄥ甫锛屼笉鍚堟牸
- seatbeltInsert = false;
-
- struct RtkTime rt;
- GetRtkClock(&rt);
- AddExamFault(1, &rt);
- } else {
- seatbeltInsert = true;
- }
- break;
- case SENSOR_RIGHT_TURN_SIGNAL:
- break;
- case SENSOR_LEFT_TURN_SIGNAL:
- break;
- case SENSOR_HANDBREAK:
- break;
- case SENSOR_ENGINE_START:
- AppTimer_delete(EngineStartHold);
- if (level == value) {
- AppTimer_add(EngineStartHold, D_SEC(2));
-
- // 妫�鏌ユ槸鍚﹀湪绌烘尅
- if (CheckSensorX(SHIFT) != 'N') {
- // 涓嶆槸绌烘尅鐐圭伀锛屼笉鍚堟牸
- struct RtkTime rt;
- GetRtkClock(&rt);
- AddExamFault(3, &rt);
- }
- } else {
-
- }
- break;
- default:
- break;
- }
-}
diff --git a/lib/src/main/cpp/test_items/comm_test.h b/lib/src/main/cpp/test_items/comm_test.h
deleted file mode 100644
index 568ee32..0000000
--- a/lib/src/main/cpp/test_items/comm_test.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// Created by fctom on 2020/2/13.
-//
-
-#ifndef MYAPPLICATION2_COMM_TEST_H
-#define MYAPPLICATION2_COMM_TEST_H
-
-#include <cstdint>
-
-enum {
- SENSOR_SEATBELT,
- SENSOR_LEFT_TURN_SIGNAL,
- SENSOR_RIGHT_TURN_SIGNAL,
- SENSOR_HANDBREAK,
- SENSOR_BREAK,
- SENSOR_LIGHT,
- SENSOR_FAR_LIGHT,
- SENSOR_DOOR,
- SENSOR_SHIFT_N,
- SENSOR_SHIFT_1,
- SENSOR_SHIFT_2,
- SENSOR_SHIFT_3,
- SENSOR_SHIFT_4,
- SENSOR_SHIFT_5,
- SENSOR_SHIFT_R,
- SENSOR_ENGINE_START
-};
-
-enum {
- SEATBELT,
- LEFT_TURN_SIGNAL,
- RIGHT_TURN_SIGNAL,
- HANDBREAK,
- SHIFT,
- LIGHT,
- FAR_LIGHT,
- DOOR,
- ENGINE_START
-};
-
-void CommTestInit(void);
-void CommTestStart(bool start);
-void UpdateSensor(uint16_t gpio, uint16_t speed, uint16_t engine);
-int CheckSensorX(int func);
-
-#endif //MYAPPLICATION2_COMM_TEST_H
diff --git a/lib/src/main/cpp/test_items2/common_check.cpp b/lib/src/main/cpp/test_items2/common_check.cpp
index e572c16..d4e483b 100644
--- a/lib/src/main/cpp/test_items2/common_check.cpp
+++ b/lib/src/main/cpp/test_items2/common_check.cpp
@@ -3,7 +3,7 @@
//
#include "common_check.h"
-#include "../test_items/comm_test.h"
+#include "../test_common/car_sensor.h"
#include "../driver_test.h"
// 鐢变汉宸ョ‘璁�
@@ -20,12 +20,12 @@
if (prevMoveDirect == 0) {
// 璧锋鎸傞敊鎸★紝涓嶅悎鏍�
- if (CheckSensorX(SHIFT) != '1') {
+ if (ReadSensor(SENSOR_SHIFT_1) != 1) {
AddExamFault(19, rtkTime);
}
// 璧锋娌℃湁鍏抽棴杞﹂棬锛屼笉鍚堟牸
- if (CheckSensorX(DOOR) != 1) {
+ if (ReadSensor(SENSOR_DOOR) != 1) {
AddExamFault(23, rtkTime);
}
--
Gitblit v1.8.0