[8.1.0][adas] 多链路数据控制接口开发

This commit is contained in:
xinfengkun
2025-05-28 16:25:52 +08:00
parent 092d248d64
commit e11db10d67
9 changed files with 445 additions and 41 deletions

View File

@@ -105,6 +105,10 @@ public enum MessageType {
TYPE_SEND_IMG_UPLOAD_CLOUD_ENABLE(MessagePad.MessageType.MsgTypeImgUploadCloudEnable, "摄像头上传NDE云开关"),
TYPE_SEND_IMG_UPLOAD_CLOUD_STATUS_QUERY(MessagePad.MessageType.MsgTypeImgUploadCloudStatusQuery, "摄像头上传NDE云状态查询"),
TYPE_RECEIVE_IMG_UPLOAD_CLOUD_STATUS_QUERY(MessagePad.MessageType.MsgTypeImgUploadCloudStatusQuery, "摄像头上传NDE云状态响应"),
TYPE_SEND_FORCE_STOP_OR_START_CLOUD_REQ(MessagePad.MessageType.MsgTypeForceStopOrStartCloudReq, "云端配置控制"),
TYPE_SEND_SET_OBU_UPLOAD_REQ(MessagePad.MessageType.MsgTypeSetObuUploadReq, "域控上报OBU开关控制"),
TYPE_SEND_OBU_UPLOAD_STATUS(MessagePad.MessageType.MsgTypeObuUploadStatus, "域控上报OBU开关状态查询"),
TYPE_RECEIVE_OBU_UPLOAD_STATUS(MessagePad.MessageType.MsgTypeObuUploadStatus, "域控上报OBU开关状态响应"),
//TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释
TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"),

View File

@@ -76,12 +76,12 @@ public class AdasParam {
*/
public final int blindArea;
/**
* 融合v2n开关
* 融合v2n开关 NDE下行事件数据进pnc
* 0:不发给PnC 1:发给Pnc
*/
public final int v2nToPnc;
/**
* 融合v2i开关
* 融合v2i开关 V2I下行感知数据进pnc
* 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼默认0
*/
public final int v2iToPnc;
@@ -108,6 +108,26 @@ public class AdasParam {
* m/s, 范围[3, 12.5]
*/
public final double overtakeMaxSpeed;
/**
* 故障模拟指令
* 0:无模拟 1:线控失效
*/
public final int faultSimulationCmd;
/**
* 会车开关
* 0:关 1:开
*/
public final int parkVehCross;
/**
* 超车开关
* 0:关 1:开
*/
public final int parkVehOvertake;
/**
* NDE下行感知数据进pnc
* 0:不发给PnC 1:发给Pnc
*/
public final int perceptionToPnc;
public AdasParam(MessagePad.SetParamReq param) {
int detouringCmd = -1;
@@ -128,7 +148,10 @@ public class AdasParam {
int seatState = -1;
SeatState seatStateParse = null;
double overtakeMaxSpeed = -1.0;
int faultSimulationCmd = -1;
int parkVehCross = -1;
int parkVehOvertake = -1;
int perceptionToPnc = -1;
if (param != null) {
int size = param.getReqsCount();
if (size > 0) {
@@ -233,6 +256,22 @@ public class AdasParam {
if (!TextUtils.isEmpty(value)) {
overtakeMaxSpeed = Double.parseDouble(value);
}
} else if (type == AdasConstants.MapSystemParamType.FAULT_SIMULATION_CMD_VALUE) {
if (!TextUtils.isEmpty(value)) {
faultSimulationCmd = Integer.parseInt(value);
}
} else if (type == AdasConstants.MapSystemParamType.PARK_VEH_CROSS_VALUE) {
if (!TextUtils.isEmpty(value)) {
parkVehCross = Integer.parseInt(value);
}
} else if (type == AdasConstants.MapSystemParamType.PARK_VEH_OVERTAKE_VALUE) {
if (!TextUtils.isEmpty(value)) {
parkVehOvertake = Integer.parseInt(value);
}
} else if (type == AdasConstants.MapSystemParamType.PERCEPTION_TO_PNC_VALUE) {
if (!TextUtils.isEmpty(value)) {
perceptionToPnc = Integer.parseInt(value);
}
}
}
}
@@ -255,27 +294,99 @@ public class AdasParam {
this.seatState = seatState;
this.seatStateParse = seatStateParse;
this.overtakeMaxSpeed = overtakeMaxSpeed;
this.faultSimulationCmd = faultSimulationCmd;
this.parkVehCross = parkVehCross;
this.parkVehOvertake = parkVehOvertake;
this.perceptionToPnc = perceptionToPnc;
}
@Override
public String toString() {
return "绕障类功能开关=" + (detouringCmd == -1 ? "未知" : detouringCmd == 0 ? "" : "") +
"\n变道绕障的目标障碍物速度阈值=" + (detouringSpeed == -1 ? "未知" : detouringSpeed + "m/s") +
"\nAEB开关=" + (aebCmd == -1 ? "未知" : aebCmd == 0 ? "" : "") +
"\n限制绕障开关=" + (laneChangeRestrainValid == -1 ? "未知" : laneChangeRestrainValid == 0 ? "正常绕障" : "限制绕障") +
"\n停车让行线前避让等待开关=" + (stopYieldValid == -1 ? "未知" : stopYieldValid == 0 ? "停车让行线前无需避让等待" : "停车让行线前需要避让等待") +
"\n地图限速功能开关=" + (hadmapSpeedLimitValid == -1 ? "未知" : hadmapSpeedLimitValid == 0 ? "不使用地图限速功能" : "使用地图限速功能") +
"\n环岛模式开关=" + (rampThetaValid == -1 ? "未知" : rampThetaValid == 0 ? "普通模式" : "环岛模式") +
"\n弱网减速停车策略开关=" + (weakNetSlowDown == -1 ? "未知" : weakNetSlowDown == 0 ? "关闭弱网减速停车策略" : "使用弱网减速停车策略") +
"\nm1拼接视频自车位置参数=" + (m1StitchedVideoSelfVehicleParam == null ? "未知" : m1StitchedVideoSelfVehicleParam) +
"\n故障减速停车策路开关=" + (breakdownSlowDown == -1 ? "未知" : breakdownSlowDown == 0 ? "闭故障减速停车策略" : "使用故障减速停车策略") +
"\n盲区开关=" + (blindArea == -1 ? "未知" : blindArea == 0 ? "" : "") +
"\n融合V2N开关=" + (v2nToPnc == -1 ? "未知" : v2nToPnc == 0 ? "不发给PnC" : "发给PnC") +
"\n融合V2I开关=" + (v2iToPnc == -1 ? "未知" : v2iToPnc == 0 ? "不发给PnC和鹰眼" : "发给Pnc和鹰眼") +
"\n融合模式=" + (fusionMode == -1 ? "未知" : fusionMode == 5 ? "纯路侧模式" : fusionMode == 4 ? "透传模式" : fusionMode == 3 ? "超视距模式" : fusionMode == 2 ? "盲区模式" : "全融合模式") +
"\n座椅状态座椅压力=" + (seatState == -1 ? "未知" : seatState + (seatStateParse == null ? "[此值无法解析]" : seatStateParse.toString())) +
"\n超车最大速度阈值=" + (overtakeMaxSpeed == -1 ? "未知" : overtakeMaxSpeed + "m/s")
;
String msg = "";
if (detouringCmd != -1) {
msg += "绕障类功能开关=" + (detouringCmd == 0 ? "" : "") + '\n';
}
if (detouringSpeed != -1) {
msg += "变道绕障的目标障碍物速度阈值=" + detouringSpeed + "m/s\n";
}
if (aebCmd != -1) {
msg += "AEB开关=" + (aebCmd == 0 ? "" : "") + '\n';
}
if (laneChangeRestrainValid != -1) {
msg += "限制绕障开关=" + (laneChangeRestrainValid == 0 ? "正常绕障" : "限制绕障") + '\n';
}
if (stopYieldValid != -1) {
msg += "停车让行线前避让等待开关=" + (stopYieldValid == 0 ? "停车让行线前无需避让等待" : "停车让行线前需要避让等待") + '\n';
}
if (hadmapSpeedLimitValid != -1) {
msg += "地图限速功能开关=" + (hadmapSpeedLimitValid == 0 ? "不使用地图限速功能" : "使用地图限速功能") + '\n';
}
if (rampThetaValid != -1) {
msg += "环岛模式开关=" + (rampThetaValid == 0 ? "普通模式" : "环岛模式") + '\n';
}
if (weakNetSlowDown != -1) {
msg += "弱网减速停车策略开关=" + (weakNetSlowDown == 0 ? "关闭弱网减速停车策略" : "使用弱网减速停车策略") + '\n';
}
if (m1StitchedVideoSelfVehicleParam != null) {
msg += "m1拼接视频自车位置参数=" + m1StitchedVideoSelfVehicleParam + '\n';
}
if (breakdownSlowDown != -1) {
msg += "故障减速停车策路开关=" + (breakdownSlowDown == 0 ? "关闭故障减速停车策略" : "使用故障减速停车策略") + '\n';
}
if (blindArea != -1) {
msg += "盲区开关=" + (blindArea == 0 ? "" : "") + '\n';
}
if (v2nToPnc != -1) {
msg += "融合V2N开关NDE下行事件数据进pnc=" + (v2nToPnc == 0 ? "不发给PnC" : "发给PnC") + '\n';
}
if (v2iToPnc != -1) {
msg += "融合V2I开关V2I下行感知数据进PNC=" + (v2iToPnc == 0 ? "不发给PnC和鹰眼" : "发给Pnc和鹰眼") + '\n';
}
if (fusionMode != -1) {
msg += "融合模式=" + (fusionMode == 5 ? "纯路侧模式" : fusionMode == 4 ? "透传模式" : fusionMode == 3 ? "超视距模式" : fusionMode == 2 ? "盲区模式" : "全融合模式") + '\n';
}
if (seatState != -1) {
msg += "座椅状态(座椅压力)=" + (seatState + (seatStateParse == null ? "[此值无法解析]" : seatStateParse.toString())) + '\n';
}
if (overtakeMaxSpeed != -1) {
msg += "超车最大速度阈值=" + overtakeMaxSpeed + "m/s\n";
}
if (faultSimulationCmd != -1) {
msg += "故障模拟指令=" + (faultSimulationCmd == 0 ? "无模拟" : "线控失效") + '\n';
}
if (parkVehCross != -1) {
msg += "会车开关=" + (parkVehCross == 0 ? "" : "") + '\n';
}
if (parkVehOvertake != -1) {
msg += "超车开关=" + (parkVehOvertake == 0 ? "" : "") + '\n';
}
if (perceptionToPnc != -1) {
msg += "NDE下行感知数据进PNC=" + (perceptionToPnc == 0 ? "不发给PnC" : "发给PnC");
}
return msg;
// return "绕障类功能开关=" + (detouringCmd == -1 ? "未知" : detouringCmd == 0 ? "关" : "开") +
// "\n变道绕障的目标障碍物速度阈值=" + (detouringSpeed == -1 ? "未知" : detouringSpeed + "m/s") +
// "\nAEB开关=" + (aebCmd == -1 ? "未知" : aebCmd == 0 ? "关" : "开") +
// "\n限制绕障开关=" + (laneChangeRestrainValid == -1 ? "未知" : laneChangeRestrainValid == 0 ? "正常绕障" : "限制绕障") +
// "\n停车让行线前避让等待开关=" + (stopYieldValid == -1 ? "未知" : stopYieldValid == 0 ? "停车让行线前无需避让等待" : "停车让行线前需要避让等待") +
// "\n地图限速功能开关=" + (hadmapSpeedLimitValid == -1 ? "未知" : hadmapSpeedLimitValid == 0 ? "不使用地图限速功能" : "使用地图限速功能") +
// "\n环岛模式开关=" + (rampThetaValid == -1 ? "未知" : rampThetaValid == 0 ? "普通模式" : "环岛模式") +
// "\n弱网减速停车策略开关=" + (weakNetSlowDown == -1 ? "未知" : weakNetSlowDown == 0 ? "关闭弱网减速停车策略" : "使用弱网减速停车策略") +
// "\nm1拼接视频自车位置参数=" + (m1StitchedVideoSelfVehicleParam == null ? "未知" : m1StitchedVideoSelfVehicleParam) +
// "\n故障减速停车策路开关=" + (breakdownSlowDown == -1 ? "未知" : breakdownSlowDown == 0 ? "关闭故障减速停车策略" : "使用故障减速停车策略") +
// "\n盲区开关=" + (blindArea == -1 ? "未知" : blindArea == 0 ? "关" : "开") +
// "\n融合V2N开关NDE下行事件数据进PNC=" + (v2nToPnc == -1 ? "未知" : v2nToPnc == 0 ? "不发给PnC" : "发给PnC") +
// "\n融合V2I开关V2I下行感知数据进PNC=" + (v2iToPnc == -1 ? "未知" : v2iToPnc == 0 ? "不发给PnC和鹰眼" : "发给Pnc和鹰眼") +
// "\n融合模式=" + (fusionMode == -1 ? "未知" : fusionMode == 5 ? "纯路侧模式" : fusionMode == 4 ? "透传模式" : fusionMode == 3 ? "超视距模式" : fusionMode == 2 ? "盲区模式" : "全融合模式") +
// "\n座椅状态座椅压力=" + (seatState == -1 ? "未知" : seatState + (seatStateParse == null ? "[此值无法解析]" : seatStateParse.toString())) +
// "\n超车最大速度阈值=" + (overtakeMaxSpeed == -1 ? "未知" : overtakeMaxSpeed + "m/s") +
// "\n故障模拟指令=" + (faultSimulationCmd == -1 ? "未知" : faultSimulationCmd == 0 ? "无模拟" : "线控失效") +
// "\n会车开关=" + (parkVehCross == -1 ? "未知" : parkVehCross == 0 ? "关" : "开") +
// "\n超车开关=" + (parkVehOvertake == -1 ? "未知" : parkVehOvertake == 0 ? "关" : "开") +
// "\nNDE下行感知数据进pnc=" + (eventToPnc == -1 ? "未知" : eventToPnc == 0 ? "不发给PnC" : "发给PnC")
// ;
}
public static class M1StitchedVideoSelfVehicleParam {

View File

@@ -107,6 +107,9 @@ enum MessageType
MsgTypeCloudConfig = 0x10135;//云端配置查询和返回(上下行)
MsgTypeImgUploadCloudEnable = 0x10136;//摄像头上传NDE云开关
MsgTypeImgUploadCloudStatusQuery = 0x10137;//查询摄像头上传NDE云状态
MsgTypeForceStopOrStartCloudReq = 0x10138;//关闭或打开云链接
MsgTypeSetObuUploadReq = 0x10139;//关闭或打开域控上报自车数据到OBU
MsgTypeObuUploadStatus = 0x1013A;//obu上报状态查询以结果(上下行)
}
message Header
@@ -856,8 +859,8 @@ message SetOneParam
// 9:m1拼接视频自车位置参数(string), 格式:x,y,width,height
// 10:故障减速停车策略开关(bool) 0:关闭故障减速停车策略 1:使用故障减速停车策略 默认1
// 11: 盲区开关(bool) 0: off 1:on /telematics/sensor/blindarea_flag
// 12: 融合v2n开关(bool) 0:不发给PnC 1:发给Pnc /telematics/fusion/v2n_flag
// 13: 融合v2i开关(bool) 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼默认0 /telematics/fusion/v2i_flag
// 12: 融合v2n开关 NDE下行事件数据进pnc (bool) 0:不发给PnC 1:发给Pnc /telematics/fusion/v2n_flag
// 13: 融合v2i开关 V2I下行感知数据进pnc (bool) 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼默认0 /telematics/fusion/v2i_flag
// 14: 融合模式(int) 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式默认1 /telematics/fusion/fusion_mode
// 15座椅状态(int) 0:表示仅主驾位有人,1:表示仅副驾位有人,2:表示主驾和副驾同时有人,3:表示仅后排有人,4:表示主驾有人+后排有人,5:表示副驾有人+后排有人,6:表示主驾和副驾同时有人+后排有人,7: 所有座位都无人, 255:缺省
// 16: 超车的最大速度阈值(double, m/s) T1/T2: 范围[3, 12.5], 默认值10
@@ -865,6 +868,7 @@ message SetOneParam
// 18: 碰撞上报(null) TODO 废弃使用message CollisionReport
// 19: 会车开关(bool) 0: off 1:on 默认0
// 20: 超车开关(bool) 0: off 1:on 默认0
// 21: NDE下行感知数据进pnc(bool) 0:不发给PnC 1:发给Pnc /telematics/fusion/v2n_perception_flag
string value = 2; // 转成字符串的值
}
@@ -998,6 +1002,15 @@ message EZhouCloud
bytes data = 1;
}
//message definition for MsgTypeForceStopOrStartCloudReq
//云连接地址
message ForceStopOrStartReq
{
uint32 type = 1;//0:蘑菇云 1:NDE云 2:基础平台云
uint32 direction = 2;//0:上行和下行 1:上行 2:下行
bool enable = 3;//连接使能开关, true:开 false:关闭
}
//message definition for MsgTypeCloudConfig
//云连接地址
message CloudLinkAddr
@@ -1007,6 +1020,7 @@ message CloudLinkAddr
string domain = 3;//域名
uint32 port = 4;//端口 0xFFFFFFFF 无效值
bool enable = 5;//连接使能开关, true:开 false:关闭
string ip = 6;//ip
}
//域控连接的云端配置
@@ -1024,4 +1038,10 @@ message ImgUploadCloudCmd {
//查询摄像头上传NDE云状态返回
message ImgUploadCloudStatusResp {
bool enable = 1; //false: 关闭, true: 打开
}
}
//message definition for MsgTypeSetObuUploadReq
message SetEnableReq
{
uint32 enable = 1; //1: enable, 0: disable
}

View File

@@ -16,8 +16,8 @@ enum MapSystemParamType{
M1_STITCHED_VIDEO_SELF_VEHICLE_PARAM = 9;//9:m1拼接视频自车位置参数(string), 格式:x,y,width,height
BREAKDOWN_SLOW_DOWN = 10;//10:故障减速停车策略开关(bool) 0:关闭故障减速停车策略 1:使用故障减速停车策略 默认1
BLIND_AREA = 11;//11: 盲区开关(bool) 0: off 1:on /telematics/sensor/blindarea_flag
V2N_TO_PNC = 12;//12: 融合v2n开关(bool) 0:不发给PnC 1:发给Pnc /telematics/fusion/v2n_flag
V2I_TO_PNC = 13;//13: 融合v2i开关(bool) 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼默认0 /telematics/fusion/v2i_flag
V2N_TO_PNC = 12;//12: 融合v2n开关 NDE下行事件数据进pnc (bool) 0:不发给PnC 1:发给Pnc /telematics/fusion/v2n_flag
V2I_TO_PNC = 13;//13: 融合v2i开关 V2I下行感知数据进pnc (bool) 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼默认0 /telematics/fusion/v2i_flag
FUSION_MODE = 14;//14: 融合模式(int) 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式默认1 /telematics/fusion/fusion_mode
SEAT_STATE = 15;//15: 座椅状态(int) 0:表示仅主驾位有人,1:表示仅副驾位有人,2:表示主驾和副驾同时有人,3:表示仅后排有人,4:表示主驾有人+后排有人,5:表示副驾有人+后排有人,6:表示主驾和副驾同时有人+后排有人,7: 所有座位都无人, 255:缺省
OVERTAKE_MAX_SPEED = 16;//16: 超车的最大速度阈值(double, m/s, 范围[3, 12.5])
@@ -25,6 +25,7 @@ enum MapSystemParamType{
COLLISION_REPORTING = 18;//18: 碰撞上报(null) TODO 废弃使用message CollisionReport
PARK_VEH_CROSS = 19;//19: 会车开关(bool) 0: off 1:on 默认0
PARK_VEH_OVERTAKE = 20;//20: 超车开关(bool) 0: off 1:on 默认0
PERCEPTION_TO_PNC = 21;//21: NDE下行感知数据进pnc(bool) 0:不发给PnC 1:发给Pnc /telematics/fusion/v2n_perception_flag
}
/**