diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt
index 6f9ae857d3..27de31e663 100644
--- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt
+++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt
@@ -135,6 +135,7 @@ import com.zhjt.service.chain.ChainLog
import fault_management.FmInfo
import fsm.Fsm2024
import function_state_management.FunctionStates
+import hadmap.Hadmap
import localization.LocState
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
@@ -1654,6 +1655,16 @@ class MoGoAdasListenerImpl : OnAdasListener {
CallerV2XManager.invokeObuUploadStatus(enable)
}
+ /**
+ * 决策停止线(自动驾驶决策呈现使用) 定频,理论是10hz,实际会有不同
+ *
+ * @param header 头
+ * @param mapMsg 数据
+ */
+ override fun onPlanningStopLine(header: MessagePad.Header, mapMsg: Hadmap.MapMsg) {
+
+ }
+
/**
* 是否可以启动自动驾驶
* 使用方法查看:app_ipc_monitoring/uiMainActivity/onAutopilotAbility
diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java
index 264861b6c1..519f77c5e1 100644
--- a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java
+++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java
@@ -117,6 +117,7 @@ public enum MessageType {
TYPE_SEND_SET_OBU_UPLOAD_REQ(MessagePad.MessageType.MsgTypeSetObuUploadReq, R.string.adas_data_MsgTypeSetObuUploadReq),
TYPE_SEND_OBU_UPLOAD_STATUS(MessagePad.MessageType.MsgTypeObuUploadStatus, R.string.adas_data_MsgTypeObuUploadStatus_SEND),
TYPE_RECEIVE_OBU_UPLOAD_STATUS(MessagePad.MessageType.MsgTypeObuUploadStatus, R.string.adas_data_MsgTypeObuUploadStatus_RECEIVE),
+ TYPE_RECEIVE_PLANNING_STOP_LINE(MessagePad.MessageType.MsgTypePlanningStopLine, R.string.adas_data_MsgTypePlanningStopLine),
//TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, R.string.adas_data_MsgTypePlanningDecisionState),
diff --git a/libraries/mogo-adas-data/src/main/proto/hadmap.proto b/libraries/mogo-adas-data/src/main/proto/hadmap.proto
new file mode 100644
index 0000000000..bff3dd7f0a
--- /dev/null
+++ b/libraries/mogo-adas-data/src/main/proto/hadmap.proto
@@ -0,0 +1,499 @@
+syntax = "proto2";
+package hadmap;
+
+import "header.proto";
+import "geometry.proto";
+
+//////////////////////////////////////////////////
+
+enum LaneMarkColor {
+ COLOR_WHITE = 0;
+ COLOR_YELLOW = 1;
+}
+
+enum LaneMarkType {
+ LANE_MARK_NONE = 0; //û�л��ߵij���
+ LANE_MARK_SOLID = 0x1; //��ɫ��ʵ��
+ LANE_MARK_BROKEN = 0x2; //��ɫ������
+ LANE_MARK_SOLID2 = 0x10;
+ LANE_MARK_BROKEN2 = 0x20;
+ LANE_MARK_SOLIDSOLID = 0x11; //LANE_MARK_SOLID | LANE_MARK_SOLID2, ��ɫ˫ʵ��
+ LANE_MARK_SOLIDBROKEN = 0x21; //LANE_MARK_SOLID | LANE_MARK_BROKEN2, ��ɫʵ����
+ LANE_MARK_BROKENSOLID = 0x12; //LANE_MARK_BROKEN | LANE_MARK_SOLID2, ��ɫ��ʵ��
+ LANE_MARK_BROKENBROKEN = 0x22; //LANE_MARK_BROKEN | LANE_MARK_BROKEN2,��ɫ˫����
+
+ LANE_MARK_CURB = 0x100; //·��ʯ
+
+ LANE_MARK_FENCE = 0x200; //դ��
+ LANE_MARK_SOLID_FENCE = 0x201; //LANE_MARK_SOLID | LANE_MARK_FENCE, դ����ʵ��
+ LANE_MARK_BROKEN_FENCE = 0x202; //LANE_MARK_BROKEN | LANE_MARK_FENCE, դ��������
+ LANE_MARK_SOLIDSOLID_FENCE = 0x211; //LANE_MARK_SOLIDSOLID | LANE_MARK_FENCE, դ��˫ʵ��
+ LANE_MARK_SOLIDBROKEN_FENCE = 0x221; //LANE_MARK_SOLIDBROKEN | LANE_MARK_FENCE, դ��ʵ����
+ LANE_MARK_BROKENSOLID_FENCE = 0x212; //LANE_MARK_BROKENSOLID | LANE_MARK_FENCE, դ����ʵ��
+ LANE_MARK_BROKENBROKEN_FENCE = 0x222; //LANE_MARK_BROKENBROKEN | LANE_MARK_FENCE, դ��˫����
+
+ LANE_MARK_GRASS = 0x400; //·��Ե
+ LANE_MARK_BOLD = 0x1000; //bold line
+
+ LANE_MARK_YELLOW = 0x10000; //yellow lines, default white,blue green red
+ LANE_MARK_SOLID_YELLOW = 0x10001; //LANE_MARK_SOLID | LANE_MARK_YELLOW,//�Ƶ�ʵ��
+ LANE_MARK_BROKEN_YELLOW = 0x10002; //LANE_MARK_BROKEN | LANE_MARK_YELLOW,//�Ƶ�����
+ LANE_MARK_SOLIDSOLID_YELLOW = 0x10011; //LANE_MARK_SOLIDSOLID | LANE_MARK_YELLOW,//��˫ʵ��
+ LANE_MARK_SOLIDBROKEN_YELLOW = 0x10021; //LANE_MARK_SOLIDBROKEN | LANE_MARK_YELLOW,//��ʵ����
+ LANE_MARK_BROKENSOLID_YELLOW = 0x10012; //LANE_MARK_BROKENSOLID | LANE_MARK_YELLOW,//����ʵ��
+ LANE_MARK_BROKENBROKEN_YELLOW = 0x10022; //LANE_MARK_BROKENBROKEN | LANE_MARK_YELLOW,//��˫��
+
+ LANE_MARK_SOLID_YELLOW_FENCE = 0x10201; //LANE_MARK_SOLID_FENCE | LANE_MARK_YELLOW,դ���Ƶ�ʵ��
+ LANE_MARK_Broken_YELLOW_FENCE = 0x10202; //LANE_MARK_BROKEN_FENCE | LANE_MARK_YELLOW,դ���Ƶ�����
+ LANE_MARK_SOLIDSOLID_YELLOW_FENCE = 0x10211; //LANE_MARK_SOLIDSOLID_FENCE | LANE_MARK_YELLOW,դ����˫ʵ��
+ LANE_MARK_SOLIDBROKEN_YELLOW_FENCE = 0x10221; //LANE_MARK_SOLIDBROKEN_FENCE | LANE_MARK_YELLOW,դ����ʵ����
+ LANE_MARK_BROKENSOLID_YELLOW_FENCE = 0x10212; //LANE_MARK_BROKENSOLID_FENCE | LANE_MARK_YELLOW,դ������ʵ��
+ LANE_MARK_BROKENBROKEN_YELLOW_FENCE = 0x10222; //LANE_MARK_BROKENBROKEN_FENCE | LANE_MARK_YELLOW,դ��˫��ʵ
+
+ LANE_MARK_WHITEYELLOW = 0x20000; //����һ�
+ LANE_MARK_SOLIDSOLID_WHITEYELLOW = 0x20011; //LANE_MARK_SOLIDSOLID | LANE_MARK_WHITEYELLOW,����һ�˫ʵ��
+ LANE_MARK_SOLIDBROKEN_WHITEYELLOW = 0x20012; //LANE_MARK_SOLIDBROKEN | LANE_MARK_WHITEYELLOW,����һ���ʵ������
+ LANE_MARK_BROKENSOLID_WHITEYELLOW = 0x20021; //LANE_MARK_BROKENSOLID | LANE_MARK_WHITEYELLOW,����һ���ʵ����
+ LANE_MARK_BROKENBROKEN_WHITEYELLOW = 0x20022; //LANE_MARK_BROKENBROKEN | LANE_MARK_WHITEYELLOW,����һ�˫��
+
+ LANE_MARK_YELLOWWHITE = 0x30000; ////����Ұ�
+ LANE_MARK_SOLIDSOLID_YELLOWWHITE = 0x30011; //LANE_MARK_SOLIDSOLID | LANE_MARK_YELLOWWHITE,����Ұ�˫ʵ��
+ LANE_MARK_SOLIDBROKEN_YELLOWWHITE = 0x30012; //LANE_MARK_SOLIDBROKEN | LANE_MARK_YELLOWWHITE,����Ұ�ʵ����
+ LANE_MARK_BROKENSOLID_YELLOWWHITE = 0x30021; //LANE_MARK_BROKENSOLID | LANE_MARK_YELLOWWHITE,����Ұ���ʵ��
+ LANE_MARK_BROKENBROKEN_YELLOWWHITE = 0x30022; //LANE_MARK_BROKENBROKEN | LANE_MARK_YELLOWWHITE,����Ұ�˫����
+
+ LANE_MARK_OTHERCOLORS = 0x40000;
+ LANE_MARK_LDM_P = 0x100000;
+ LANE_MARK_VGL_P = 0x200000;
+ LANE_MARK_SHIELDED = 0x1000000;
+ LANE_MARK_ABSEBNT = 0x2000000;
+}
+
+enum LaneType {
+ LANE_TYPE_None = 0;
+ LANE_TYPE_Driving = 1;
+ LANE_TYPE_Stop = 2;
+ LANE_TYPE_Shoulder = 3;
+ LANE_TYPE_Biking = 4;
+ LANE_TYPE_Sidewalk = 5;
+ LANE_TYPE_Border = 6;
+ LANE_TYPE_Restricted = 7;//BUS
+ LANE_TYPE_Parking = 8;
+ LANE_TYPE_MwyEntry = 9;
+ LANE_TYPE_MwyExit = 10;
+ LANE_TYPE_Acceleration = 11;//加速车�?
+ LANE_TYPE_Deceleration = 12;//减速车�?
+ LANE_TYPE_Compound = 13;//???, todo
+ LANE_TYPE_HOV = 14;//美国/加拿大为提高效率,拼车或者公交车�?行的车道,乘车人数需2人及以上
+ LANE_TYPE_Slow = 15;//???? todo
+ LANE_TYPE_Reversible = 16;//�?汐车�?
+ LANE_TYPE_EmergencyParking = 17;//紧急停车带
+ LANE_TYPE_Emergency = 20;
+ LANE_TYPE_TurnLeftWaiting = 21;
+ LANE_TYPE_Ramp = 22;//匝道
+ LANE_TYPE_UTurnWaiting = 23;//掉头待转区车�?
+ LANE_TYPE_TurnRightWaiting = 24;//右转待转区车�?
+ LANE_TYPE_JuncTurnLeft = 25;//�?口左�?车道
+ LANE_TYPE_JuncStraight = 26;//�?口直行车�?
+ LANE_TYPE_JuncTurnRight = 27;//�?口右�?车道
+ LANE_TYPE_Turn = 28;//掉头车道
+ LANE_TYPE_Diversion = 29;//导流带车�?
+ LANE_TYPE_DrivingSide = 30;//�?通车�?-辅路
+ LANE_TYPE_BikingSide = 31;//非机动车�?-辅路
+ LANE_TYPE_TurnRighSide = 32;//右转车道-辅路
+ LANE_TYPE_TaxiLane = 33;//出�?�车专用车道
+ LANE_TYPE_LeftOrUturnWaite = 34;//左转或调头待�?车道
+ LANE_TYPE_PoliceCarLane = 35;//警务专用车道
+ LANE_TYPE_AcceleOrDeceleLane = 36;//加减速车�?
+}
+
+enum LaneArrow {
+ LANE_ARROW_None = 0x0;
+ LANE_ARROW_Straight = 0x1;
+ LANE_ARROW_Left = 0x2;
+ LANE_ARROW_Right = 0x4;
+ LANE_ARROW_Uturn = 0x8;
+ LANE_ARROW_SkewLeft = 0x20;
+ LANE_ARROW_SkewRight = 0x40;
+ LANE_ARROW_StraightLeft = 0x3;//LANE_ARROW_Straight | LANE_ARROW_Left,
+ LANE_ARROW_StraightRight = 0x5;//LANE_ARROW_Straight | LANE_ARROW_Right,
+ LANE_ARROW_LeftRight = 0x6;//LANE_ARROW_Left | LANE_ARROW_Right,
+ LANE_ARROW_LeftUturn = 0xa;//LANE_ARROW_Left | LANE_ARROW_Uturn,
+ LANE_ARROW_StraightUturn = 0x9;//LANE_ARROW_Straight | LANE_ARROW_Uturn,
+}
+
+enum RoadType {
+ ROAD_TYPE_Normal = 0;
+ ROAD_TYPE_OTHER = 1;
+ ROAD_TYPE_SA = 2; // Service Area
+ ROAD_TYPE_PA = 3; //Parking Area
+ ROAD_TYPE_ControlAccess = 4;
+ ROAD_TYPE_GenerapRamp = 5;
+ ROAD_TYPE_Overpass = 6;
+ ROAD_TYPE_Underpass = 7;
+ ROAD_TYPE_PrivateRoad = 8;
+ ROAD_TYPE_PedestrainRoad = 9;
+ ROAD_TYPE_OverpassForP = 10; //Overpass for passenger
+ ROAD_TYPE_BusOnly = 11;
+ ROAD_TYPE_BicycleOnly = 12; //Bicycle only30 Bridge
+ ROAD_TYPE_Tunnel = 13;
+ ROAD_TYPE_UTA = 14; //Undefined Traffic Figure
+ ROAD_TYPE_ICEntrance = 15;
+ ROAD_TYPE_TollBooth = 16;
+ ROAD_TYPE_ConstructionRoad = 17;
+ ROAD_TYPE_Roundabout = 18;
+ ROAD_TYPE_Intersection = 19;
+}
+
+enum RoadDirection {
+ ROAD_DIRECTION_FORWARD = 0;
+ ROAD_DIRECTION_BACKWARD = 1;
+ ROAD_DIRECTION_BIDIRECTIONAL = 2;
+}
+
+enum ObjectType {
+ OBJECT_TYPE_None = 0;
+ OBJECT_TYPE_Curb = 1;
+ OBJECT_TYPE_TrafficBarrier = 2;
+ OBJECT_TYPE_OverheadCrossing = 3;
+ OBJECT_TYPE_Tunnel = 4;
+ OBJECT_TYPE_Gantry = 5;
+ OBJECT_TYPE_TrafficSign = 6;
+ OBJECT_TYPE_VariableMessageSign = 7;
+ OBJECT_TYPE_PermanentDelineator = 8;
+ OBJECT_TYPE_TollBooth = 9;
+ OBJECT_TYPE_EmergencyCallbox = 10;
+ OBJECT_TYPE_Ditch = 11;
+ OBJECT_TYPE_Pole = 12;
+ OBJECT_TYPE_Building = 13;
+ OBJECT_TYPE_RoadSign = 14;
+ OBJECT_TYPE_CrossWalk = 15;
+ OBJECT_TYPE_TrafficLights = 16;
+ OBJECT_TYPE_TunnelWall = 17;
+ OBJECT_TYPE_Arrow = 18;
+ OBJECT_TYPE_Text = 19;
+ OBJECT_TYPE_RoadSign_Text = 20;
+ OBJECT_TYPE_Stop = 21;
+ OBJECT_TYPE_LaneBoundary = 22;
+ OBJECT_TYPE_ParkingSpace = 23;
+ OBJECT_TYPE_DrivingArea = 24;
+ OBJECT_TYPE_FeaturePoint = 25;
+ OBJECT_TYPE_SpeedLimit = 26;
+ OBJECT_TYPE_EdgeDriving = 27;
+ OBJECT_TYPE_Horn = 28;
+ OBJECT_TYPE_NoParkingGrid = 29;
+}
+
+enum ObjectShape {
+ OBJECT_SHAPE_None = 0;
+ OBJECT_SHAPE_Rectangle = 1;
+ OBJECT_SHAPE_Triangle = 2;
+ OBJECT_SHAPE_Circle = 3;
+ OBJECT_SHAPE_Diamond = 4;
+ OBJECT_SHAPE_RTriangle = 5;
+ OBJECT_SHAPE_Arrow = 6;
+ OBJECT_SHAPE_Bicycle = 7;
+ OBJECT_SHAPE_WheelChair = 8;
+ OBJECT_SHAPE_Cross = 9;
+ OBJECT_SHAPE_Polyline = 10;
+ OBJECT_SHAPE_Polygon = 11;
+ OBJECT_SHAPE_Point = 12;
+}
+
+// junction type
+enum JunctionType {
+ JCT_TYPE_CROSS = 609; //ʮ��·�ڡ�T��·��
+ JCT_TYPE_SIDE_MASTER = 612; //��·����·֮���·�ڿ�
+ JCT_TYPE_TO_RIGHT = 614; //����
+ JCT_TYPE_INCREASE = 6151; //���������Ӵ�
+ JCT_TYPE_DECREASE = 6152; //���������ٴ�
+ JCT_TYPE_OUT_RAMP = 6153; //���ѵ���
+ JCT_TYPE_IN_RAMP = 6154; //���ѵ���
+ JCT_TYPE_SINGLE_UTURN = 616; //�����ͷ
+ JCT_TYPE_RING_LAND = 617; //����
+ JCT_TYPE_SAMLL_MASTER = 619; //С·�ڡ���·���Ӵ�
+ JCT_TYPE_CROSS_NOT_LANE_NOT_SEGGREGATE = 6091; //ʮ��·�ڡ�T��·��(·�ڷ�Χ�������߹ᴩ,��·�м���������)
+ JCT_TYPE_CROSS_NOT_LANE_SEGGREGATE = 6092; //ʮ��·�ڡ�T��·��(·�ڷ�Χ�������߹ᴩ,��·�м���������)
+ JCT_TYPE_CROSS_LANE_NOT_SEGGREGATE = 6201; //ʮ��·�ڡ�T��·��(·�ڷ�Χ�ڴ��ڳ����߹ᴩ,��·�м���������)
+ JCT_TYPE_CROSS_LANE_SEGGREGATE = 6202; //ʮ��·�ڡ�T��·��(·�ڷ�Χ�ڴ��ڳ����߹ᴩ,��·�м���������)
+
+ JCT_TYPE_UNKOWN = 99999; // δ֪����
+}
+
+// physical isolation type
+enum IsolationType {
+ ISO_TYPE_GREENBELT = 1;
+ ISO_TYPE_SAFETYISLAND = 2;
+ ISO_TYPE_JUNCTION_CURB = 3;
+}
+
+message BoundaryPoint{
+ optional double x = 1;
+ optional double y = 2;
+ optional double z = 3;
+ optional LaneMarkType point_type = 4;
+ optional uint32 lane_tag = 5;
+}
+
+message LanePoint{
+ optional double x = 1;
+ optional double y = 2;
+ optional double z = 3;
+ optional LaneType point_center_type = 4;
+ optional LaneArrow point_center_arrow = 5;
+ optional uint32 point_speed_limit = 6;
+}
+
+message LaneBoundary {
+ // lane boundary primary key
+ optional uint64 pkid = 1;
+
+ // epsg code
+ optional uint32 srs = 2;
+
+ // lane mark
+ optional LaneMarkType type = 3;
+ optional LaneMarkColor color = 4;
+
+ // 将LaneMarkType绑定到每个geom点上
+ repeated BoundaryPoint point = 5;
+}
+
+message Lane {
+ // road primary key
+ optional uint64 road_pkid = 1;
+
+ // sectin id, ascend order
+ optional uint32 section_id = 2;
+
+ // lane id follow OpenDrive Specification
+ optional int32 lane_id = 3;
+
+ // lane name, "road.section.lane"
+ optional string name = 4;
+
+ // epsg code
+ optional uint32 srs = 5;
+
+ // left lane boundary geometry pkid
+ optional uint64 left_boundary_id = 6;
+
+ // right lane boundary geometry pkid
+ optional uint64 right_boundary_id = 7;
+
+ // lane type
+ optional LaneType type = 8;
+
+ // lane arrow
+ optional LaneArrow arrow = 9;
+
+ // speed limit
+ optional uint32 speed_limit = 10;
+
+ // 将LaneType,LaneArrow,speedlimit绑定到每个geom点上
+ repeated LanePoint point = 11;
+
+ // ��ǰ�����ڵ��ܳ���������
+ optional uint32 parallel_lane_count = 12;
+
+ // ��ǰ�����ڵij����Ļ�����������
+ optional uint32 drive_lane_count = 13;
+
+ // whether it is recommended
+ optional bool recommended = 14;
+
+ // for parallel lanes, steps away from the best lane
+ optional int32 rank = 15;
+
+ // Passable distance
+ optional double passable_dis = 16;
+
+ optional double dis_to_goal = 17;
+}
+
+message Section {
+ // section id
+ optional uint32 id = 1;
+
+ // lanes
+ repeated Lane lanes = 2;
+
+ // boundaries
+ repeated LaneBoundary boundaries = 3;
+}
+
+message Road {
+ // primary key
+ optional uint64 pkid = 1;
+
+ // geohash key
+ optional string id = 2;
+
+ // road name
+ optional string name = 3;
+
+ // epsg code
+ optional uint32 srs = 4;
+
+ // road length
+ optional float length = 6;
+
+ // section count of road
+ optional uint32 section_num = 7;
+
+ // road type
+ optional RoadType road_type = 8;
+
+ // road driving direction
+ optional RoadDirection direction = 9;
+
+ // curvature geometry
+ repeated geometry.Point curvature = 10;
+
+ // slope geometry
+ repeated geometry.Point slope = 11;
+
+ // heading geometry
+ repeated geometry.Point heading = 12;
+
+ // super_elevation geometry
+ repeated geometry.Point super_elevation = 13;
+
+ // road geometry
+ repeated geometry.Point geom = 14;
+
+ // sections
+ repeated Section sections = 15;
+
+ // opposite roads
+ repeated uint64 opposite_pkid = 16;
+
+ // this road have lane nums
+ optional uint32 lane_num = 17;
+
+ // this road hava drive lane nums
+ optional uint32 drive_lane_num = 18;
+}
+
+message Junction {
+ // primary key
+ optional uint64 pkid = 1;
+
+ // epsg code
+ optional uint32 srs = 2;
+
+ // junction altitude
+ optional float altitude = 3;
+
+ // junction polygon
+ optional geometry.Polygon geom = 4;
+
+ // junction type
+ optional JunctionType type = 5;
+
+ // road pkid
+ repeated uint32 road_ids = 6;
+}
+
+message LaneLink {
+ // primary key
+ optional uint64 pkid = 1;
+
+ // from road pkid
+ optional uint64 from_road_pkid = 2;
+
+ // from road section id
+ optional uint32 from_section_id = 3;
+
+ // from road lane id
+ optional int32 from_lane_id = 4;
+
+ // to road pkid
+ optional uint64 to_road_pkid = 5;
+
+ // to road section id
+ optional uint32 to_section_id = 6;
+
+ // to road lane id
+ optional int32 to_lane_id = 7;
+
+ // 驶出�?口的lanlink,�?�字段true,非�?�?fasle
+ optional bool from_junction = 8;
+
+ // 进出�?口的lanlink,�?�字段true,非�?�?false
+ optional bool to_junction = 9;
+
+ // lane_link geometry
+ repeated geometry.Point geom = 10;
+
+ // the type of lane_link
+ optional LaneType type = 11;
+}
+
+
+message Object {
+ // object primary key
+ optional uint64 pkid = 1;
+
+ // road id
+ optional uint64 road_pkid = 2;
+
+ // section id
+ optional uint64 section_id = 3;
+
+ // lane id
+ optional int32 lane_id = 4;
+
+ // objcet type
+ optional ObjectType type = 5;
+
+ // polygon style
+ optional ObjectShape shape = 6;
+
+ // object text
+ optional string text = 7;
+
+ // object attribute
+ optional string attribute = 8;
+
+ // object geom
+ repeated geometry.Point geom = 9;
+
+ // object value
+ optional float value = 10;
+
+}
+
+message PhysicalIsolation {
+ // primary key
+ optional uint64 pkid = 1;
+
+ // physical isolation name
+ optional string name = 2;
+
+ // type
+ optional IsolationType type = 3;
+
+ // road pkid
+ repeated uint64 road_pkid = 4;
+
+ // junction pkid
+ repeated uint64 junction_pkid = 5;
+
+ // physical isolation geometry
+ optional geometry.Polygon geom = 6;
+}
+
+message Map {
+ repeated Road roads = 1;
+ repeated LaneLink lanelinks = 2;
+ repeated Junction junctions = 3;
+ repeated Object objects = 4;
+ repeated PhysicalIsolation isolations = 5;
+ //TODO: junction relation with roads
+}
+
+message MapMsg {
+ optional common.Header header = 1;
+ optional Map map = 2;
+}
diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto
index 354ca0df3d..e826d5f81c 100644
--- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto
+++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto
@@ -112,6 +112,7 @@ enum MessageType
MsgTypeForceStopOrStartCloudReq = 0x10138;//关闭或打开云链接
MsgTypeSetObuUploadReq = 0x10139;//关闭或打开域控上报自车数据到OBU
MsgTypeObuUploadStatus = 0x1013A;//obu上报状态查询以结果(上下行)
+ MsgTypePlanningStopLine = 0x1013B;//决策停止线(自动驾驶决策呈现使用) 定频,理论是10hz,实际会有不同
}
message Header
diff --git a/libraries/mogo-adas-data/src/main/res/values-en/strings.xml b/libraries/mogo-adas-data/src/main/res/values-en/strings.xml
index 945b7badeb..c326933535 100644
--- a/libraries/mogo-adas-data/src/main/res/values-en/strings.xml
+++ b/libraries/mogo-adas-data/src/main/res/values-en/strings.xml
@@ -92,6 +92,7 @@
Domain control OBU upload switch control
Domain control OBU upload status query
Domain control OBU upload status response
+ Planning Stop Line
Planning decision state
Sweeper index data
OBU warning event
diff --git a/libraries/mogo-adas-data/src/main/res/values/strings.xml b/libraries/mogo-adas-data/src/main/res/values/strings.xml
index 12f216d32c..34f31740ef 100644
--- a/libraries/mogo-adas-data/src/main/res/values/strings.xml
+++ b/libraries/mogo-adas-data/src/main/res/values/strings.xml
@@ -92,6 +92,7 @@
域控上报OBU开关控制
域控上报OBU开关状态查询
域控上报OBU开关状态响应
+ 决策停止线
Planning决策状态
清扫车指标数据
OBU预警事件
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java
index ce1670483c..423e3a28af 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java
@@ -43,6 +43,7 @@ import chassis.VehicleStateOuterClass;
import fault_management.FmInfo;
import fsm.Fsm2024;
import function_state_management.FunctionStates;
+import hadmap.Hadmap;
import localization.LocState;
import mogo.telematics.pad.MessagePad;
import mogo.v2x.MogoV2X;
@@ -778,6 +779,14 @@ public interface OnAdasListener {
*/
void onObuUploadStatus(@NonNull MessagePad.Header header, @NonNull MessagePad.SetEnableReq enable);
+ /**
+ * 决策停止线(自动驾驶决策呈现使用) 定频,理论是10hz,实际会有不同
+ *
+ * @param header 头
+ * @param mapMsg 数据
+ */
+ void onPlanningStopLine(@NonNull MessagePad.Header header, @NonNull Hadmap.MapMsg mapMsg);
+
/**
* 是否有能力启动自动驾驶
*
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java
index f2351c52ab..ce0c62b736 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java
@@ -63,6 +63,7 @@ public class MyMessageFactory implements IMyMessageFactory {
private IMsg vlmMessage;//视觉语言模型
private IMsg vlmMessageImage;//视觉语言模型图像
private IMsg obuUploadStatusMessage;//域控上报OBU开关状态响应
+ private IMsg planningStopLineMessage;//决策停止线
private final AutopilotReview autopilotReview;
private final TurnLightState lightLeft = new TurnLightState();
@@ -373,6 +374,12 @@ public class MyMessageFactory implements IMyMessageFactory {
obuUploadStatusMessage = new ObuUploadStatusMessage();
}
return obuUploadStatusMessage;
+ } else if (messageType == MessageType.TYPE_RECEIVE_PLANNING_STOP_LINE.typeCode) {
+ //决策停止线
+ if (planningStopLineMessage == null) {
+ planningStopLineMessage = new PlanningStopLineMessage();
+ }
+ return planningStopLineMessage;
} else {
//MessageType.TYPE_DEFAULT.typeCode
return null;
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningStopLineMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningStopLineMessage.java
new file mode 100644
index 0000000000..ab4a27261b
--- /dev/null
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/PlanningStopLineMessage.java
@@ -0,0 +1,34 @@
+
+package com.zhidao.support.adas.high.msg;
+
+import android.os.SystemClock;
+
+import com.google.protobuf.InvalidProtocolBufferException;
+import com.zhidao.support.adas.high.AdasChannel;
+import com.zhidao.support.adas.high.OnAdasListener;
+import com.zhidao.support.adas.high.common.CupidLogUtils;
+import com.zhidao.support.adas.high.protocol.RawData;
+
+import hadmap.Hadmap;
+
+/**
+ * 决策停止线
+ */
+public class PlanningStopLineMessage extends MyAbstractMessageHandler {
+
+ public PlanningStopLineMessage() {
+ }
+
+ @Override
+ public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException {
+ Hadmap.MapMsg mapMsg = Hadmap.MapMsg.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue());
+ AdasChannel.calculateTimeConsumingOnDispatchRaw("决策停止线", raw.receiveTime);
+ long nowTime = 0;
+ if (CupidLogUtils.isEnableLog())
+ nowTime = SystemClock.elapsedRealtime();
+ if (adasListener != null) {
+ adasListener.onPlanningStopLine(raw.getHeader(), mapMsg);
+ }
+ AdasChannel.calculateTimeConsumingBusiness("决策停止线", nowTime);
+ }
+}