From 27fc91fbe8f88b6885356e68828cfe1ce1db7601 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期三, 28 二月 2024 09:53:13 +0800
Subject: [PATCH] 坐标

---
 lib/src/main/cpp/driver_test.h |  205 +++++++++++++--------------------------------------
 1 files changed, 53 insertions(+), 152 deletions(-)

diff --git a/lib/src/main/cpp/driver_test.h b/lib/src/main/cpp/driver_test.h
index f773daa..a42c989 100644
--- a/lib/src/main/cpp/driver_test.h
+++ b/lib/src/main/cpp/driver_test.h
@@ -8,6 +8,10 @@
 #include <vector>
 #include <string>
 #include <list>
+#include <map>
+#include <tuple>
+#include <atomic>
+
 #include "test_common/Geometry.h"
 #include "rtk_module/rtk.h"
 #include "map.h"
@@ -28,7 +32,7 @@
     MAP_TYPE_UPHILL,
     MAP_TYPE_PARK_EDGE,
     MAP_TYPE_CURVE,
-    MAP_TYPE_TURN_90
+    MAP_TYPE_RIGHT_CORNER
 } map_type_t;
 
 typedef struct {
@@ -80,146 +84,31 @@
 
 typedef struct {
     map_type_t type;
-    int map_idx;        // 瀵瑰簲绉戠洰鍦板浘闆嗗悎涓殑搴忓彿
+    int idx;        // 瀵瑰簲绉戠洰鍦板浘闆嗗悎涓殑搴忓彿
+    int stage;      // 瀵逛簬鍊掕溅鍏ュ簱绛夐」鐩細鏈夊涓搷浣滈樁娈�
 } map_t;
 
 typedef struct {
-    bool examing = false;
-    int curr_modeling_index = -1;
-    int prev_modeling_index = -1;
-    area_map_t *pMap;
-    car_model_t *pModel;
-    modeling_t *pModeling;
-    motion_t *pMotion;
-    map_t curr_exam_map;
-    map_t arriving_map;
-} prime_t;
-
-struct ExamFault {
-    int sn;
-    char utc[32];
-    int wrong_id;
-};
-
-#define LINE_DOTTED            0
-#define LINE_SOLID             1
-#define LINE_HALF_SOLID_LEFT        2
-#define LINE_HALF_SOLID_RIGHT       3
-#define LINE_BOUNDARY               4
-
-//杞﹂亾鏂瑰悜锛堟寜浣嶇粍鍚堬級,濡傛灉涓�0锛屽垯琛ㄦ棤杞﹂亾鏂瑰悜璇存槑锛�
-#define LANE_FORWARD	0x01
-#define LANE_LEFT		0x02
-#define LANE_RIGHT		0x04
-#define LANE_BACKWARD	0x08
-
-#define ZEBRA_CROSSING              0
-#define SCHOOL_AREA                 1
-#define BUS_STATION_AREA            2
-#define GRID_AREA                   3
-
-#define ROAD_ACTIVE_FORWARD     LANE_FORWARD
-#define ROAD_ACTIVE_TURN_LEFT   LANE_LEFT
-#define ROAD_ACTIVE_TURN_RIGHT  LANE_RIGHT
-#define ROAD_ACTIVE_TURN_BACKWARD   LANE_BACKWARD
-
-typedef struct {
-    int character;                  // 灞炴�э紙瀹炵嚎銆佽櫄绾匡紝鏈変簺鍙互鎺夊ご鐨勮矾娈碉級
-    std::vector<PointF> points;     //
-} edge_t;
-
-typedef struct {
-    int character;          // 灞炴�с�婂疄绾裤�佽櫄绾裤�佸崐瀹炲崐铏氱嚎銆�
-    std::vector<PointF> points;
-} segment_t;
-
-typedef struct {
-    PointF start;
-    PointF end;
-    std::vector<int> direct;
-} lane_direct_t;
-
-// 涓�缁勫钩琛岀殑鍒嗛亾绾�
-typedef struct {
-    std::vector<lane_direct_t> lane_direct;         // 涓�缁勫鍚戠嚎鐨勯厤缃�
-    std::vector<std::vector<segment_t>> lines;      // 姣忔鍩熶笅鐨勫钩琛岀殑涓�缁勭嚎
-} separate_t;
-
-typedef struct {
-    bool stopFlag;
-    Line line;
-    bool centrePointValid;
-    PointF centrePoint;
-} stop_line_t;
-
-typedef struct {
-    int id;
-//    Line stopLine;
-//    int active;         // 鍒拌揪璺彛灏鹃儴鐨勮杩涙柟鍚�
-    bool activeBreak;   // 璺彛鍒硅溅鍑忛��
-    bool activeStop;    // 璺彛鍋滆溅鐬湜
-    bool errorLane;     // 閿欒杞﹂亾
-    int targetRoad;
-//    int stopFlag;
-//    string tts;
-//    bool arrivedTail;
-    Polygon area;       // 鏁翠釜閬撹矾鍖哄煙
-
-    std::vector<stop_line_t> stopLine;
-    std::vector<edge_t> leftEdge;
-    std::vector<edge_t> rightEdge;
-    std::vector<separate_t> separate;
-} road_t;
-
-typedef struct {
-    int id;
-    int road;
-    int type;
-    bool activeBreak;
-    bool overSpeed;
-    std::vector<PointF> area;       // 浜鸿閬撶瓑鍙充晶2鐐癸紝缃戞牸绾�4鐐�
-    std::vector<PointF> leftPoints; // 瀵瑰簲鍒伴亾璺乏渚х殑鐐�
-} special_area_t;
-
-typedef struct {
-    int road;
-    int active;
-    std::vector<PointF> points;
-} trigger_line_t;
-
-typedef struct {
-    int id;
-    int type;
-    std::vector<PointF> points;
-} forbid_line_t;
-
-typedef struct {
-    int road_id;
-    int index;
-    int active;
-} crossing_active_t;
-
-typedef struct {
-    std::string name;
-    std::vector<crossing_active_t> crossingActive;
-    std::vector<trigger_line_t> triggerLines;
-} scheme_t;
-
-struct road_exam_map {
-    int calibrate;
-    std::vector<road_t> roads;
-    std::vector<special_area_t> specialAreas;
-//    std::vector<trigger_line_t> triggerLines;
-    std::vector<forbid_line_t> forbidLines;
-    std::vector<scheme_t> examScheme;
-};
-
-struct area_exam_map {
-    int id;
-    int type;
-    Polygon map;
-    Polygon map2;
-};
+    std::atomic_int speed;
+    std::atomic_int rpm;
+    std::atomic_int gear;
+    std::atomic_int turn_signal_lamp;
+    std::atomic_int dipped_beam_lamp;
+    std::atomic_int fog_lamp;
+    std::atomic_int clearance_lamp;
+    std::atomic_int flash_beam_lamp;
+    std::atomic_int main_beam_lamp;
+    std::atomic_int seatbelt;
+    std::atomic_int engine_start;
+    std::atomic_int brake;
+    std::atomic_int hand_brake;
+    std::atomic_int second_brake;
+    std::atomic_int door;
+    std::atomic_int surround_car_1;
+    std::atomic_int surround_car_2;
+    std::atomic_int surround_car_3;
+    std::atomic_int surround_car_4;
+} sensor_t;
 
 typedef struct {
     int hold_start_key_limit_time;      // 鐐圭伀淇濇寔锛屾绉�
@@ -304,20 +193,38 @@
     std::string crossing_turn_unknown_tts;
 } exam_param_t;
 
-extern exam_param_t examParam;
+typedef struct {
+    bool examing = false;
+    int curr_modeling_index = -1;
+    int prev_modeling_index = -1;
+    int arriving_map = -1;
+    std::tuple<int, std::vector<park_button_map_t>, std::vector<uphill_map_t>, std::vector<park_edge_map_t>, std::vector<curve_map_t>, std::vector<turn_a90_map_t>> maps;
+    car_model_t *pModel;
+    modeling_t *pModeling;
+    motion_t *pMotion;
+    map_t examing_area;
+    sensor_t sensor;
+    exam_param_t examParam;
+    double odo;             // 鐢≧TK瀹氫綅璁$畻鐨勮椹堕噷绋�
+} prime_t;
 
+struct ExamFault {
+    int sn;
+    char utc[32];
+    int wrong_id;
+};
+
+prime_t& GetPrime(void);
 void DriverTestInit(void);
 void ReadDriverExamPrimer(void);
 
 void ClearAreaMap(void);
-void AddAreaMap(int id, int type, const double (*map)[2], int pointNum, const double (*map2)[2], int pointNum2);
+
 void AddCurveMap(curve_map_t &map);
 void AddParkButtonMap(park_button_map_t &map);
 void AddParkEdgeMap(park_edge_map_t &map);
-
-void CleanRoadMap(void);
-void SetRoadMap(road_exam_map &map, std::vector<scheme_t> &scheme);
-void SetRoadExamScheme(std::vector<scheme_t> &scheme);
+void AddUphillMap(uphill_map_t &map);
+void AddTurnA90Map(turn_a90_map_t &map);
 
 void SetCarMeasurePoint(double *basePoint, int *axial, int *left_front_tire,
                         int *right_front_tire, int *left_rear_tire, int *right_rear_tire,
@@ -325,19 +232,13 @@
 
 void StartDriverExam(int start, int type);
 
+void UpdateSensor(int id, int value);
 void UpdateRTKInfo(const rtk_info_t *s);
 void AddExamFault(int wrong);
-void RoadChange(int road, int status);
-void CrossingChange(int road, int crossing, int status);
+
 
 void SystemShutdown(int event, int timeout);
 
-void SetDummyLightExam(int n, struct dummy_light_exam *cfg);
-
-void MasterInqRoadStatus(void);
-
 int CorrectPauseCriteria(int src);
-
-void SensorXChanged(uint16_t id, int value);
 
 #endif //RTKDRIVERTEST_DRIVER_TEST_H

--
Gitblit v1.8.0