From 71b23bb983e237bb78dc2cb91b5239fb57e9e0c8 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 16 Aug 2023 16:47:55 +0800 Subject: [PATCH] =?UTF-8?q?[600][adas]=E6=B7=BB=E5=8A=A0=E8=9E=8D=E5=90=88?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E5=BC=80=E5=85=B3=EF=BC=9B=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=9B=B2=E5=8C=BA=E5=BC=80=E5=85=B3=EF=BC=9B=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=9F=A5=E8=AF=A2=E6=88=96=E5=8D=95=E4=B8=AA?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=EF=BC=9B=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E6=89=B9=E9=87=8F=E4=B8=8B=E5=8F=91=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=9BsetParam=20V1=E5=92=8CV2=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=EF=BC=8C=E6=94=AF=E6=8C=81=E6=B7=B7=E5=90=88?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=92=8C=E6=9F=A5=E8=AF=A2=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 27 ++- .../IMoGoAutopilotControlProvider.kt | 39 +++- .../CallerAutoPilotControlManager.kt | 45 ++++- .../zhjt/mogo/adas/data/bean/AdasParam.java | 52 ++++- .../src/main/proto/message_pad.proto | 8 +- .../main/proto/personal/adas_constants.proto | 4 + .../zhidao/support/adas/high/AdasChannel.java | 188 ++++++++++++------ .../zhidao/support/adas/high/AdasManager.java | 115 ++++++----- .../support/adas/high/IAdasNetCommApi.java | 96 +++++---- .../support/adas/high/OnAdasListener.java | 2 +- 10 files changed, 424 insertions(+), 152 deletions(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index e8bc3ae8eb..17a74f02dc 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -615,6 +615,20 @@ class MoGoAutopilotControlProvider : } } + /** + * 融合模式 + * + * @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 + * @return boolean + */ + override fun sendFusionMode(cmd: Int): Boolean { + return AdasManager.getInstance().sendFusionMode(cmd) + } + + override fun sendSetParamReq(param: Map): Boolean { + return AdasManager.getInstance().sendSetParamReq(param) + } + /** * 获取全部参数 * 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq, AdasParam)} @@ -632,8 +646,8 @@ class MoGoAutopilotControlProvider : * @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto * @return boolean */ - override fun sendGetParamReq(paramType: AdasConstants.MapSystemParamType): Boolean { - return AdasManager.getInstance().sendGetParamReq(paramType) + override fun sendGetParamReq(vararg paramType: AdasConstants.MapSystemParamType): Boolean { + return AdasManager.getInstance().sendGetParamReq(*paramType) } /** @@ -769,6 +783,15 @@ class MoGoAutopilotControlProvider : AdasManager.getInstance().sendV2nToPncCmd(switchCmd) } + /** + * 盲区数据开关 + * + * @param switchCmd 数据开关 + * @return boolean + */ + override fun sendBlindAreaCmd(switchCmd: Boolean) { + AdasManager.getInstance().sendBlindAreaCmd(switchCmd) + } /** * 向左变道 */ diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt index 29ef4d612e..e8bbcb09ce 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt @@ -214,6 +214,33 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { */ fun sendBreakdownSlowDown(isEnable: Boolean): Boolean + /** + * 融合模式 + * + * @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 + * @return boolean + */ + fun sendFusionMode(cmd: Int): Boolean + + /** + * 批量设置参数命令 + * + * @param param {@link AdasConstants.MapSystemParamType#DETOURING Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#DETOURING_SPEED Value类型:double或double类型String} + * {@link AdasConstants.MapSystemParamType#AEB Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#LANE_CHANGE_RESTRAIN_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#STOP_YIELD_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#HADMAP_SPEED_LIMIT_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#RAMP_THETA_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#WEAK_NET_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BREAKDOWN_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BLIND_AREA Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2N_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2I_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#FUSION_MODE Value类型:int或int类型String} + * @return boolean + */ + fun sendSetParamReq(param: Map): Boolean /** * 获取全部参数 * 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)} @@ -226,10 +253,10 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { * 参数获取请求 * 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq)} * - * @param paramType 参数类型{@link com.zhidao.support.adas.high.common.Constants.PARAM_TYPE} + * @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto * @return boolean */ - fun sendGetParamReq(paramType: AdasConstants.MapSystemParamType): Boolean + fun sendGetParamReq(vararg paramType: AdasConstants.MapSystemParamType): Boolean /** * 获取数据采集录制模式配置列表 @@ -262,6 +289,14 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { */ fun sendV2nToPncCmd(switchCmd: Boolean) + /** + * 盲区数据开关 + * + * @param switchCmd 数据开关 + * @return boolean + */ + fun sendBlindAreaCmd(switchCmd: Boolean) + /** * 发送工控机所有节点重启命令 */ diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index db83797db7..445a3ad2d3 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -300,6 +300,38 @@ object CallerAutoPilotControlManager { return providerApi?.sendBreakdownSlowDown(isEnable) } + /** + * 融合模式 + * + * @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 + * @return boolean + */ + fun sendFusionMode(cmd: Int): Boolean? { + return providerApi?.sendFusionMode(cmd) + } + + /** + * 批量设置参数命令 + * + * @param param {@link AdasConstants.MapSystemParamType#DETOURING Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#DETOURING_SPEED Value类型:double或double类型String} + * {@link AdasConstants.MapSystemParamType#AEB Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#LANE_CHANGE_RESTRAIN_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#STOP_YIELD_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#HADMAP_SPEED_LIMIT_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#RAMP_THETA_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#WEAK_NET_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BREAKDOWN_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BLIND_AREA Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2N_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2I_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#FUSION_MODE Value类型:int或int类型String} + * @return boolean + */ + fun sendSetParamReq(param: Map): Boolean? { + return providerApi?.sendSetParamReq(param) + } + /** * 获取全部参数 * 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq, AdasParam)} @@ -317,8 +349,8 @@ object CallerAutoPilotControlManager { * @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto * @return boolean */ - fun sendGetParamReq(paramType: AdasConstants.MapSystemParamType): Boolean? { - return providerApi?.sendGetParamReq(paramType) + fun sendGetParamReq(vararg paramType: AdasConstants.MapSystemParamType): Boolean? { + return providerApi?.sendGetParamReq(*paramType) } /** * 获取数据采集录制模式配置列表 @@ -368,6 +400,15 @@ object CallerAutoPilotControlManager { providerApi?.sendV2nToPncCmd(switchCmd) } + /** + * 盲区数据开关 + * + * @param switchCmd 数据开关 + * @return boolean + */ + fun sendBlindAreaCmd(switchCmd: Boolean){ + providerApi?.sendBlindAreaCmd(switchCmd) + } /** * 向左变道 */ diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/AdasParam.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/AdasParam.java index 911741290d..0bda77e27d 100644 --- a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/AdasParam.java +++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/AdasParam.java @@ -70,6 +70,26 @@ public class AdasParam { * -1:未知 0:关闭故障减速停车策略 1(默认):使用故障减速停车策略 */ public final int breakdownSlowDown; + /** + * 盲区开关 + * 0: off 1:on + */ + public final int blindArea; + /** + * 融合v2n开关 + * 0:不发给PnC 1:发给Pnc + */ + public final int v2nToPnc; + /** + * 融合v2i开关 + * 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼,默认0 + */ + public final int v2iToPnc; + /** + * 融合模式 + * 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 + */ + public final int fusionMode; public AdasParam(MessagePad.SetParamReq param) { int detouringCmd = -1; @@ -83,6 +103,11 @@ public class AdasParam { String m1StitchedVideoSelfVehicleParam = null; M1StitchedVideoSelfVehicleParam m1StitchedVideoSelfVehicleParamParse = null; int breakdownSlowDown = -1; + int blindArea = -1; + int v2nToPnc = -1; + int v2iToPnc = -1; + int fusionMode = -1; + if (param != null) { int size = param.getReqsCount(); if (size > 0) { @@ -137,6 +162,22 @@ public class AdasParam { if (!TextUtils.isEmpty(value)) { breakdownSlowDown = Integer.parseInt(value); } + } else if (type == AdasConstants.MapSystemParamType.BLIND_AREA_VALUE) { + if (!TextUtils.isEmpty(value)) { + blindArea = Integer.parseInt(value); + } + } else if (type == AdasConstants.MapSystemParamType.V2N_TO_PNC_VALUE) { + if (!TextUtils.isEmpty(value)) { + v2nToPnc = Integer.parseInt(value); + } + } else if (type == AdasConstants.MapSystemParamType.V2I_TO_PNC_VALUE) { + if (!TextUtils.isEmpty(value)) { + v2iToPnc = Integer.parseInt(value); + } + } else if (type == AdasConstants.MapSystemParamType.FUSION_MODE_VALUE) { + if (!TextUtils.isEmpty(value)) { + fusionMode = Integer.parseInt(value); + } } } } @@ -152,6 +193,10 @@ public class AdasParam { this.m1StitchedVideoSelfVehicleParam = m1StitchedVideoSelfVehicleParam; this.m1StitchedVideoSelfVehicleParamParse = m1StitchedVideoSelfVehicleParamParse; this.breakdownSlowDown = breakdownSlowDown; + this.blindArea = blindArea; + this.v2nToPnc = v2nToPnc; + this.v2iToPnc = v2iToPnc; + this.fusionMode = fusionMode; } @Override @@ -165,7 +210,12 @@ public class AdasParam { "\n环岛模式开关=" + (rampThetaValid == -1 ? "未知" : rampThetaValid == 0 ? "普通模式" : "环岛模式") + "\n弱网减速停车策略开关=" + (weakNetSlowDown == -1 ? "未知" : weakNetSlowDown == 0 ? "关闭弱网减速停车策略" : "使用弱网减速停车策略") + "\nm1拼接视频自车位置参数=" + (m1StitchedVideoSelfVehicleParam == null ? "未知" : m1StitchedVideoSelfVehicleParam) + - "\n故障减速停车策路开关=" + (breakdownSlowDown == -1 ? "未知" : breakdownSlowDown == 0 ? "关闭故障减速停车策略" : "使用故障减速停车策略"); + "\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 ? "盲区模式" : "全融合模式") + ; } public static class M1StitchedVideoSelfVehicleParam { 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 c6308b47fd..886e78458a 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -30,7 +30,7 @@ enum MessageType MsgTypeOBU = 0x1000a; //OBU MsgTypeChassisStates = 0x1000b; //重构后的底盘状态, 透传 MsgTypeFunctionStates = 0x1000c; //重构后的功能状态, 透传 - MsgTypeBackCameraVideo = 0x1000d; //清扫车后部摄像头视频 10hz + MsgTypeBackCameraVideo = 0x1000d; //后部摄像头视频 10hz MsgTypeM1StitchedVideo = 0x1000e; //m1拼接视频 10hz MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求 @@ -609,7 +609,11 @@ message SetOneParam // 7:环岛模式开关(bool) 0:普通模式 1:环岛模式 默认0 // 8:弱网减速停车策略开关(bool) 0:关闭弱网减速停车策略 1:使用弱网减速停车策略 默认1 // 9:m1拼接视频自车位置参数(string), 格式:x,y,width,height - // 10:故障减速停车策路开关(bool) 0:关闭故障减速停车策略 1:使用故障减速停车策略 默认1 + // 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 + // 14: 融合模式(int) 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 /telematics/fusion/fusion_mode string value = 2; // 转成字符串的值 } diff --git a/libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto b/libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto index 4600eb9f22..84d6766797 100644 --- a/libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto +++ b/libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto @@ -15,5 +15,9 @@ enum MapSystemParamType{ WEAK_NET_SLOW_DOWN = 8;//弱网减速停车策略开关 M1_STITCHED_VIDEO_SELF_VEHICLE_PARAM = 9;//m1拼接视频自车位置参数(string), 格式:x,y,width,height BREAKDOWN_SLOW_DOWN = 10;//故障减速停车策路开关 + BLIND_AREA = 11;//盲区开关(bool) 0: off 1:on /telematics/sensor/blindarea_flag + V2N_TO_PNC = 12;//融合v2n开关(bool) 0:不发给PnC 1:发给Pnc /telematics/fusion/v2n_flag + V2I_TO_PNC = 13;//融合v2i开关(bool) 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼,默认0 /telematics/fusion/v2i_flag + FUSION_MODE = 14;//融合模式(int) 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 /telematics/fusion/fusion_mode } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index b9ffab7773..fa921f88f6 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -1535,14 +1535,11 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec /** * 设置参数命令 * - * @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) - * 3:AEB开关(bool) 4:限制绕障开关(bool) - * 5:停车让行线前避让等待开关(bool) 6:地图限速功能开关(bool) + * @param type 类型{@link AdasConstants.MapSystemParamType} * @param value 转成字符串的值 * @return boolean */ - @Override - public boolean sendSetParamReq(int type, String value) { + private boolean sendSetParamReq(int type, String value) { MessagePad.SetOneParam oneParam = MessagePad.SetOneParam .newBuilder().setType(type).setValue(value).build(); MessagePad.SetParamReq req = MessagePad.SetParamReq @@ -1552,6 +1549,71 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ.typeCode, req.toByteArray()); } + /** + * 设置参数命令V2 + */ + + private boolean sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType paramSetType, T value) { + ParamSetCmdOuterClass.ParamSetCmd.Builder builder = ParamSetCmdOuterClass.ParamSetCmd.newBuilder() + .setSrc(1) + .setType(paramSetType); + if (paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea + || paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N + || paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I) { + builder.setBoolValue((Boolean) value); + } + ParamSetCmdOuterClass.ParamSetCmd req = builder.build(); + return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ_V2.typeCode, req.toByteArray()); + } + + /** + * 批量设置参数命令 + * + * @param param {@link AdasConstants.MapSystemParamType#DETOURING Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#DETOURING_SPEED Value类型:double或double类型String} + * {@link AdasConstants.MapSystemParamType#AEB Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#LANE_CHANGE_RESTRAIN_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#STOP_YIELD_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#HADMAP_SPEED_LIMIT_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#RAMP_THETA_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#WEAK_NET_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BREAKDOWN_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BLIND_AREA Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2N_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2I_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#FUSION_MODE Value类型:int或int类型String} + * @return boolean + */ + @Override + public boolean sendSetParamReq(@NonNull Map param) { + boolean isV1 = true; + boolean isV2BlindArea = true; + boolean isV2V2N = true; + boolean isV2V2NI = true; + MessagePad.SetParamReq.Builder builder = MessagePad.SetParamReq.newBuilder(); + for (Map.Entry entry : param.entrySet()) { + AdasConstants.MapSystemParamType key = entry.getKey(); + if (key != AdasConstants.MapSystemParamType.DEFAULT_TYPE && key != AdasConstants.MapSystemParamType.M1_STITCHED_VIDEO_SELF_VEHICLE_PARAM) { + Object value = entry.getValue(); + if (key == AdasConstants.MapSystemParamType.BLIND_AREA) { + isV2BlindArea = sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea, (Boolean) value); + } else if (key == AdasConstants.MapSystemParamType.V2N_TO_PNC) { + isV2V2N = sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N, (Boolean) value); + } else if (key == AdasConstants.MapSystemParamType.V2I_TO_PNC) { + isV2V2NI = sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I, (Boolean) value); + } else { + builder.addReqs(MessagePad.SetOneParam.newBuilder().setType(key.getNumber()).setValue(String.valueOf(value))); + } + } + + } + if (builder.getReqsCount() > 0) { + MessagePad.SetParamReq req = builder.build(); + isV1 = sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ.typeCode, req.toByteArray()); + } + return isV1 && isV2BlindArea && isV2V2N && isV2V2NI; + } + /** * 绕障类功能开关 * @@ -1657,6 +1719,51 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendSetParamReq(AdasConstants.MapSystemParamType.BREAKDOWN_SLOW_DOWN_VALUE, String.valueOf(enable)); } + /** + * 融合模式 + * + * @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 + * @return boolean + */ + @Override + public boolean sendFusionMode(int cmd) { + return sendSetParamReq(AdasConstants.MapSystemParamType.FUSION_MODE_VALUE, String.valueOf(cmd)); + } + + + /** + * 盲区数据开关 + * + * @param switchCmd 数据开关 + * @return boolean + */ + @Override + public boolean sendBlindAreaCmd(boolean switchCmd) { + return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea, switchCmd); + } + + /** + * 控制V2N进PnC + * + * @param switchCmd true:发给PnC,false:不发给PnC + * @return boolean + */ + @Override + public boolean sendV2nToPncCmd(boolean switchCmd) { + return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N, switchCmd); + } + + /** + * 控制V2I进PnC + * + * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 + * @return boolean + */ + @Override + public boolean sendV2iToPncCmd(boolean switchCmd) { + return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I, switchCmd); + } + /** * 获取全部参数 * 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq, AdasParam)} @@ -1665,7 +1772,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec */ @Override public boolean sendGetAllParamReq() { - return sendGetParamReq(null); + return sendGetParamReq((AdasConstants.MapSystemParamType[]) null); } /** @@ -1676,9 +1783,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * @return boolean */ @Override - public boolean sendGetParamReq(AdasConstants.MapSystemParamType paramType) { + public boolean sendGetParamReq(AdasConstants.MapSystemParamType... paramType) { MessagePad.SetParamReq req; - if (paramType == null || paramType == AdasConstants.MapSystemParamType.DEFAULT_TYPE) { + if (paramType == null || paramType[0] == null || (paramType.length == 1 && paramType[0] == AdasConstants.MapSystemParamType.DEFAULT_TYPE)) { req = MessagePad.SetParamReq .newBuilder() .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.DETOURING_VALUE)) @@ -1691,12 +1798,19 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.WEAK_NET_SLOW_DOWN_VALUE)) .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.M1_STITCHED_VIDEO_SELF_VEHICLE_PARAM_VALUE)) .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.BREAKDOWN_SLOW_DOWN_VALUE)) + .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.BLIND_AREA_VALUE)) + .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.V2N_TO_PNC_VALUE)) + .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.V2I_TO_PNC_VALUE)) + .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.FUSION_MODE_VALUE)) .build(); } else { - req = MessagePad.SetParamReq - .newBuilder() - .addReqs(MessagePad.SetOneParam.newBuilder().setType(paramType.getNumber())) - .build(); + MessagePad.SetParamReq.Builder builder = MessagePad.SetParamReq.newBuilder(); + for (AdasConstants.MapSystemParamType type : paramType) { + if (type != AdasConstants.MapSystemParamType.DEFAULT_TYPE) { + builder.addReqs(MessagePad.SetOneParam.newBuilder().setType(type.getNumber())); + } + } + req = builder.build(); } return sendPBMessage(MessageType.TYPE_SEND_GET_PARAM_REQ.typeCode, req.toByteArray()); } @@ -1761,56 +1875,6 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendPBMessage(MessageType.TYPE_SEND_FSM_STATUS_REASON_QUERY_REQ.typeCode, query.toByteArray()); } - /** - * 控制V2I进PnC - * - * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 - * @return boolean - */ - @Override - public boolean sendV2iToPncCmd(boolean switchCmd) { - return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I, switchCmd); - } - - /** - * 控制V2N进PnC - * - * @param switchCmd true:发给PnC,false:不发给PnC - * @return boolean - */ - @Override - public boolean sendV2nToPncCmd(boolean switchCmd) { - return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N, switchCmd); - } - - /** - * 盲区数据开关 - * - * @param switchCmd 数据开关 - * @return boolean - */ - @Override - public boolean sendBlindAreaCmd(boolean switchCmd) { - return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea, switchCmd); - } - - /** - * 设置参数命令V2 - */ - - private boolean sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType paramSetType, T value) { - ParamSetCmdOuterClass.ParamSetCmd.Builder builder = ParamSetCmdOuterClass.ParamSetCmd.newBuilder() - .setSrc(1) - .setType(paramSetType); - if (paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea - || paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N - || paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I) { - builder.setBoolValue((Boolean) value); - } - ParamSetCmdOuterClass.ParamSetCmd req = builder.build(); - return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ_V2.typeCode, req.toByteArray()); - } - /** * 发送清扫车指令到云控 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 034f3ff268..c156d93f18 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -23,6 +23,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -862,18 +863,6 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.sendOperatorCmdStopHonking(); } - /** - * 设置参数命令 - * - * @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) - * @param value 转成字符串的值 - * @return boolean - */ - @Override - public boolean sendSetParamReq(int type, String value) { - return mChannel != null && mChannel.sendSetParamReq(type, value); - } - /** * 绕障类功能开关 * @@ -978,6 +967,73 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.sendBreakdownSlowDown(enable); } + /** + * 融合模式 + * + * @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 + * @return boolean + */ + @Override + public boolean sendFusionMode(int cmd) { + return mChannel != null && mChannel.sendFusionMode(cmd); + } + + /** + * 盲区数据开关 + * + * @param switchCmd 数据开关 + * @return boolean + */ + @Override + public boolean sendBlindAreaCmd(boolean switchCmd) { + return mChannel != null && mChannel.sendBlindAreaCmd(switchCmd); + } + + /** + * 控制V2N进PnC + * + * @param switchCmd true:发给PnC,false:不发给PnC + * @return boolean + */ + @Override + public boolean sendV2nToPncCmd(boolean switchCmd) { + return mChannel != null && mChannel.sendV2nToPncCmd(switchCmd); + } + + /** + * 控制V2I进PnC + * + * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 + * @return boolean + */ + @Override + public boolean sendV2iToPncCmd(boolean switchCmd) { + return mChannel != null && mChannel.sendV2iToPncCmd(switchCmd); + } + + /** + * 批量设置参数命令 + * + * @param param {@link AdasConstants.MapSystemParamType#DETOURING Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#DETOURING_SPEED Value类型:double或double类型String} + * {@link AdasConstants.MapSystemParamType#AEB Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#LANE_CHANGE_RESTRAIN_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#STOP_YIELD_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#HADMAP_SPEED_LIMIT_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#RAMP_THETA_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#WEAK_NET_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BREAKDOWN_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BLIND_AREA Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2N_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2I_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#FUSION_MODE Value类型:int或int类型String} + * @return boolean + */ + @Override + public boolean sendSetParamReq(@NonNull Map param) { + return mChannel != null && mChannel.sendSetParamReq(param); + } + /** * 获取全部参数 * 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq, AdasParam)} @@ -997,7 +1053,7 @@ public class AdasManager implements IAdasNetCommApi { * @return boolean */ @Override - public boolean sendGetParamReq(AdasConstants.MapSystemParamType paramType) { + public boolean sendGetParamReq(AdasConstants.MapSystemParamType... paramType) { return mChannel != null && mChannel.sendGetParamReq(paramType); } @@ -1043,39 +1099,6 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.sendFSMStatusReasonQuery(type); } - /** - * 控制V2I进PnC - * - * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 - * @return boolean - */ - @Override - public boolean sendV2iToPncCmd(boolean switchCmd) { - return mChannel != null && mChannel.sendV2iToPncCmd(switchCmd); - } - - /** - * 控制V2N进PnC - * - * @param switchCmd true:发给PnC,false:不发给PnC - * @return boolean - */ - @Override - public boolean sendV2nToPncCmd(boolean switchCmd) { - return mChannel != null && mChannel.sendV2nToPncCmd(switchCmd); - } - - /** - * 盲区数据开关 - * - * @param switchCmd 数据开关 - * @return boolean - */ - @Override - public boolean sendBlindAreaCmd(boolean switchCmd) { - return mChannel != null && mChannel.sendBlindAreaCmd(switchCmd); - } - /** * 开始大任务响应 * 1、云端下发大任务信息(type: 100001)-> sweeper_task.proto/StartTaskResp 响应信息 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index ecd019dcd4..625d02081a 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -14,6 +14,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm; import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; import java.util.List; +import java.util.Map; import java.util.Set; import bag_manager.BagManagerOuterClass; @@ -486,14 +487,7 @@ public interface IAdasNetCommApi { */ boolean sendOperatorCmdStopHonking(); - /** - * 设置参数命令 - * - * @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) - * @param value 转成字符串的值 - * @return boolean - */ - boolean sendSetParamReq(int type, String value); + /*******************************设置参数命令 包括V1************************************/ /** * 绕障类功能开关 @@ -574,6 +568,64 @@ public interface IAdasNetCommApi { */ boolean sendBreakdownSlowDown(int enable); + /** + * 融合模式 + * + * @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 + * @return boolean + */ + boolean sendFusionMode(int cmd); + + /*******************************设置参数命令 V2************************************/ + /** + * 盲区数据开关 + * + * @param switchCmd 数据开关 + * @return boolean + */ + boolean sendBlindAreaCmd(boolean switchCmd); + + + /** + * 控制V2N进PnC + * + * @param switchCmd true:发给PnC,false:不发给PnC + * @return boolean + */ + boolean sendV2nToPncCmd(boolean switchCmd); + + /** + * 控制V2I进PnC + * + * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 默认false + * @return boolean + */ + boolean sendV2iToPncCmd(boolean switchCmd); + + /*******************************设置参数命令 批量设置************************************/ + + /** + * 批量设置参数命令 + * + * @param param {@link AdasConstants.MapSystemParamType#DETOURING Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#DETOURING_SPEED Value类型:double或double类型String} + * {@link AdasConstants.MapSystemParamType#AEB Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#LANE_CHANGE_RESTRAIN_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#STOP_YIELD_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#HADMAP_SPEED_LIMIT_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#RAMP_THETA_VALID Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#WEAK_NET_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BREAKDOWN_SLOW_DOWN Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#BLIND_AREA Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2N_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#V2I_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#FUSION_MODE Value类型:int或int类型String} + * @return boolean + */ + boolean sendSetParamReq(@NonNull Map param); + + /*******************************设置参数命令 获取参数************************************/ + /** * 获取全部参数 * @@ -587,9 +639,9 @@ public interface IAdasNetCommApi { * @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto * @return boolean */ - boolean sendGetParamReq(AdasConstants.MapSystemParamType paramType); - + boolean sendGetParamReq(AdasConstants.MapSystemParamType... paramType); + /*******************************设置参数命令************************************/ /** * 发生行程相关 * type=1或2的时 需要参数 lineName @@ -623,30 +675,6 @@ public interface IAdasNetCommApi { */ boolean sendFSMStatusReasonQuery(int type); - /** - * 控制V2I进PnC - * - * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 默认false - * @return boolean - */ - boolean sendV2iToPncCmd(boolean switchCmd); - - /** - * 控制V2N进PnC - * - * @param switchCmd true:发给PnC,false:不发给PnC - * @return boolean - */ - boolean sendV2nToPncCmd(boolean switchCmd); - - /** - * 盲区数据开关 - * - * @param switchCmd 数据开关 - * @return boolean - */ - boolean sendBlindAreaCmd(boolean switchCmd); - /** * 开始大任务响应 * 1、云端下发大任务信息(type: 100001)-> sweeper_task.proto/StartTaskResp 响应信息 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 944f9c8772..bbdcaeb515 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 @@ -398,7 +398,7 @@ public interface OnAdasListener { /** * 参数获取应答 *

- * 调用{@link AdasManager#sendGetAllParamReq()}或{@link AdasManager#sendGetParamReq(AdasConstants.MapSystemParamType)} + * 调用{@link AdasManager#sendGetAllParamReq()}或{@link AdasManager#sendGetParamReq(AdasConstants.MapSystemParamType...)} * 如果对应的value是空串,说明没有这个param或者get失败了。重启后值还是在redis里 * * @param header 头