From 02d94c9886eb3996606a818b5dd8e04b2f22098b Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Mon, 15 Sep 2025 15:34:45 +0800 Subject: [PATCH] =?UTF-8?q?[8.2.4][adas][data-center]=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=A9=BE=E9=A9=B6=E6=A8=A1=E5=BC=8F=E5=92=8C=E5=90=A6=E5=90=AF?= =?UTF-8?q?=E7=94=A8AIP=E9=80=89=E9=A1=B9=E5=8A=9F=E8=83=BD=20=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E4=B8=8B=E5=8F=91=E5=92=8C=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/data/config/FunctionBuildConfig.kt | 15 ++++ .../IMoGoAutopilotControlProvider.kt | 14 ++++ .../IMoGoGetParamResponseListener.kt | 11 ++- .../CallerAutoPilotControlManager.kt | 18 +++++ ...llerAutopilotGetParamResponseDispatcher.kt | 29 ++++++-- .../zhjt/mogo/adas/data/bean/AdasParam.java | 73 ++++++++++++++----- .../src/main/proto/message_pad.proto | 3 + .../main/proto/personal/adas_constants.proto | 3 + .../zhidao/support/adas/high/AdasChannel.java | 64 +++++++++++++--- .../zhidao/support/adas/high/AdasManager.java | 34 ++++++++- .../support/adas/high/IAdasNetCommApi.java | 27 ++++++- 11 files changed, 250 insertions(+), 41 deletions(-) diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt index 5822ca5562..6466ccb584 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt @@ -389,6 +389,21 @@ object FunctionBuildConfig { @JvmField var isFaultSlowDown = true + /** + * AIP功能开关 + * 目前只有bus 司机端 + */ + @Volatile + @JvmField + var isActivateAip = false + + /** + * 驾驶模式style 0-正常模式 1-安全模式 2-专业模式 + * 目前只有bus 司机端 + */ + @Volatile + @JvmField + var drivingStyle = 0 /** * 考试功能面板是否打开 */ 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 8fbb433272..19b6c42b6d 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 @@ -798,6 +798,20 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { */ fun sendV2iDownPerceptionToPnc(enable: Int): Boolean + /** + * 驾驶模式 + * + * @param style 0-正常模式 1-安全模式 2-专业模式 + */ + fun sendDrivingStyle(style: Int): Boolean + + /** + * 是否启用AIP选项功能 + * + * @param enable false: off true:on 默认false + */ + fun sendActivateAip(enable: Boolean): Boolean + /** * 云端配置控制 * @param type 0:蘑菇云 1:NDE云 2:基础平台云 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoGetParamResponseListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoGetParamResponseListener.kt index 1baf02ef57..913ef3ecb9 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoGetParamResponseListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoGetParamResponseListener.kt @@ -1,7 +1,7 @@ package com.mogo.eagle.core.function.api.autopilot -import com.zhjt.mogo.adas.data.bean.* -import mogo.telematics.pad.* +import com.zhjt.mogo.adas.data.bean.AdasParam +import mogo.telematics.pad.MessagePad interface IMoGoGetParamResponseListener { @@ -16,5 +16,10 @@ interface IMoGoGetParamResponseListener { * @param getParamResp 配置参数 * @param adasParam 解析后的配置参数 */ - fun onGetParamResp(header: MessagePad.Header, getParamResp: MessagePad.SetParamReq, adasParam: AdasParam) + fun onGetParamResp(getParamResp: MessagePad.SetParamReq, adasParam: AdasParam){} + + /** + * AIP功能开关状态变更 只有变动才回调 + */ + fun onChangeAipState(isActivateAip :Boolean){} } \ No newline at end of file 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 ea6b23100b..b81c0508d4 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 @@ -1179,6 +1179,24 @@ object CallerAutoPilotControlManager { return providerApi?.sendNdeDownEventToPnc(enable)?:false } + /** + * 驾驶模式 + * + * @param style 0-正常模式 1-安全模式 2-专业模式 + */ + fun sendDrivingStyle(style: Int): Boolean{ + return providerApi?.sendDrivingStyle(style)?:false + } + + /** + * 是否启用AIP选项功能 + * + * @param enable false: off true:on 默认false + */ + fun sendActivateAip(enable: Boolean): Boolean{ + return providerApi?.sendActivateAip(enable)?:false + } + /** * V2I下行感知进PNC开关 * @param enable 0: 不发给PnC 1:发给Pnc diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotGetParamResponseDispatcher.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotGetParamResponseDispatcher.kt index 61129beb94..1564f7a919 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotGetParamResponseDispatcher.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotGetParamResponseDispatcher.kt @@ -1,17 +1,34 @@ package com.mogo.eagle.core.function.call.autopilot -import com.mogo.eagle.core.function.api.autopilot.* -import com.mogo.eagle.core.function.call.base.* -import com.zhjt.mogo.adas.data.bean.* -import mogo.telematics.pad.* +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.api.autopilot.IMoGoGetParamResponseListener +import com.mogo.eagle.core.function.call.base.CallerBase +import com.zhjt.mogo.adas.data.bean.AdasParam +import mogo.telematics.pad.MessagePad +import kotlin.properties.Delegates object CallerAutopilotGetParamResponseDispatcher: CallerBase() { + private var _isActivateAip: Boolean by Delegates.observable(FunctionBuildConfig.isActivateAip) { _, oldValue, newValue -> + if (oldValue != newValue) { + M_LISTENERS.forEach { + val listener = it.value + listener.onChangeAipState(newValue) + } + } + } - fun dispatchResponse(header: MessagePad.Header, getParamResp: MessagePad.SetParamReq, adasParam: AdasParam) { + fun dispatchResponse(getParamResp: MessagePad.SetParamReq, adasParam: AdasParam) { + if (adasParam.activateAip != -1) { + FunctionBuildConfig.isActivateAip = adasParam.activateAip > 0 + _isActivateAip = FunctionBuildConfig.isActivateAip + } + if (adasParam.drivingStyle != -1) { + FunctionBuildConfig.drivingStyle = adasParam.drivingStyle + } M_LISTENERS.forEach { val listener = it.value - listener.onGetParamResp(header, getParamResp, adasParam) + listener.onGetParamResp(getParamResp, adasParam) } } } \ No newline at end of file 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 54600e137a..9574149d33 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 @@ -14,120 +14,135 @@ import mogo.telematics.pad.MessagePad; public class AdasParam { /** * 绕障类功能开关 - * -1:未知 0:关闭 1:开启 + * -1:未查询/域控不存在此数据/解析失败 0:关闭 1:开启 */ public final int detouringCmd; /** * 变道绕障的目标障碍物速度阈值 - * -1:未知 + * -1.0:未查询/域控不存在此数据/解析失败 */ public final double detouringSpeed; /** * AEB开关 - * -1:未知 0:关闭自动紧急制动功能 1:启用自动紧急制动功能 + * -1:未查询/域控不存在此数据/解析失败 0:关闭自动紧急制动功能 1:启用自动紧急制动功能 */ public final int aebCmd; /** * 限制绕障开关 - * -1:未知 0(默认):正常绕障 1:限制绕障 + * -1:未查询/域控不存在此数据/解析失败 0(默认):正常绕障 1:限制绕障 */ public final int laneChangeRestrainValid; /** * 停车让行线前避让等待开关 - * -1:未知 0(默认):停车让行线前无需等待 1:停车让行线前需要等待 + * -1:未查询/域控不存在此数据/解析失败 0(默认):停车让行线前无需等待 1:停车让行线前需要等待 */ public final int stopYieldValid; /** * 地图限速功能开关 - * -1:未知 0(默认):不使用地图限速功能 1:使用地图限速功能 + * -1:未查询/域控不存在此数据/解析失败 0(默认):不使用地图限速功能 1:使用地图限速功能 */ public final int hadmapSpeedLimitValid; /** * 环岛模式开关 - * -1:未知 0(默认):普通模式 1:环岛模式 + * -1:未查询/域控不存在此数据/解析失败 0(默认):普通模式 1:环岛模式 */ public final int rampThetaValid; /** * 弱网减速停车策略开关 - * -1:未知 0:关闭弱网减速停车策略 1(默认):使用弱网减速停车策略 + * -1:未查询/域控不存在此数据/解析失败 0:关闭弱网减速停车策略 1(默认):使用弱网减速停车策略 */ public final int weakNetSlowDown; /** * m1拼接视频自车位置参数(string),格式:x,y,width,height * MAP发出的原始数据 + * null:未查询/域控不存在此数据/解析失败 */ public final String m1StitchedVideoSelfVehicleParam; /** * m1拼接视频自车位置参数 * 解析后的数据 - * 为空的原因:未查询此数据、工控机不存在此数据、解析失败 + * null:未查询/域控不存在此数据/解析失败 */ public final M1StitchedVideoSelfVehicleParam m1StitchedVideoSelfVehicleParamParse; /** * 故障减速停车策路开关 - * -1:未知 0:关闭故障减速停车策略 1(默认):使用故障减速停车策略 + * -1:未查询/域控不存在此数据/解析失败 0:关闭故障减速停车策略 1(默认):使用故障减速停车策略 */ public final int breakdownSlowDown; /** * 盲区开关 - * 0: off 1:on + * -1:未查询/域控不存在此数据/解析失败 0: off 1:on */ public final int blindArea; /** * 融合v2n开关 NDE下行事件数据进pnc - * 0:不发给PnC 1:发给Pnc + * -1:未查询/域控不存在此数据/解析失败 0:不发给PnC 1:发给Pnc */ public final int v2nToPnc; /** * 融合v2i开关 V2I下行感知数据进pnc - * 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼,默认0 + * -1:未查询/域控不存在此数据/解析失败 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼,默认0 */ public final int v2iToPnc; /** * 融合模式 - * 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 + * -1:未查询/域控不存在此数据/解析失败 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式,默认1 */ public final int fusionMode; /** * 座椅状态(座椅压力) - * 0:表示仅主驾位有人,1:表示仅副驾位有人,2:表示主驾和副驾同时有人,3:表示仅后排有人,4:表示主驾有人+后排有人,5:表示副驾有人+后排有人,6:表示主驾和副驾同时有人+后排有人,7: 所有座位都无人, 255:缺省 + * -1:未查询/域控不存在此数据/解析失败 0:表示仅主驾位有人,1:表示仅副驾位有人,2:表示主驾和副驾同时有人,3:表示仅后排有人,4:表示主驾有人+后排有人,5:表示副驾有人+后排有人,6:表示主驾和副驾同时有人+后排有人,7: 所有座位都无人, 255:缺省 */ public final int seatState; /** * 座椅状态(座椅压力) * 解析后的数据 - * 为空的原因:未查询此数据、工控机不存在此数据、解析失败 + * null:未查询/域控不存在此数据/解析失败 */ public final SeatState seatStateParse; /** * 超车的最大速度阈值 * m/s, 范围[3, 12.5] + * -1.0:未查询/域控不存在此数据/解析失败 */ public final double overtakeMaxSpeed; /** * 故障模拟指令 - * 0:无模拟 1:线控失效 + * -1:未查询/域控不存在此数据/解析失败 0:无模拟 1:线控失效 + * */ public final int faultSimulationCmd; /** * 会车开关 - * 0:关 1:开 + * -1:未查询/域控不存在此数据/解析失败 0:关 1:开 */ public final int parkVehCross; /** * 超车开关 - * 0:关 1:开 + * -1:未查询/域控不存在此数据/解析失败 0:关 1:开 */ public final int parkVehOvertake; /** * NDE下行感知数据进pnc - * 0:不发给PnC 1:发给Pnc + * -1:未查询/域控不存在此数据/解析失败 0:不发给PnC 1:发给Pnc */ public final int perceptionToPnc; + /** + * 驾驶模式 + * -1:未查询/域控不存在此数据/解析失败 0-正常模式 1-安全模式 2-专业模式 + */ + public final int drivingStyle; + + /** + * 是否启用AIP选项功能 + * -1:未查询/域控不存在此数据/解析失败 0:关 1:开 + */ + public final int activateAip; + public AdasParam(MessagePad.SetParamReq param) { int detouringCmd = -1; @@ -152,6 +167,8 @@ public class AdasParam { int parkVehCross = -1; int parkVehOvertake = -1; int perceptionToPnc = -1; + int drivingStyle = -1; + int activateAip = -1; if (param != null) { int size = param.getReqsCount(); if (size > 0) { @@ -272,6 +289,14 @@ public class AdasParam { if (!TextUtils.isEmpty(value)) { perceptionToPnc = Integer.parseInt(value); } + } else if (type == AdasConstants.MapSystemParamType.DRIVING_STYLE_VALUE) { + if (!TextUtils.isEmpty(value)) { + drivingStyle = Integer.parseInt(value); + } + } else if (type == AdasConstants.MapSystemParamType.ACTIVATE_AIP_VALUE) { + if (!TextUtils.isEmpty(value)) { + activateAip = Integer.parseInt(value); + } } } } @@ -298,6 +323,8 @@ public class AdasParam { this.parkVehCross = parkVehCross; this.parkVehOvertake = parkVehOvertake; this.perceptionToPnc = perceptionToPnc; + this.drivingStyle = drivingStyle; + this.activateAip = activateAip; } @Override @@ -364,6 +391,12 @@ public class AdasParam { if (perceptionToPnc != -1) { msg += "NDE下行感知数据进PNC=" + (perceptionToPnc == 0 ? "不发给PnC" : "发给PnC"); } + if (drivingStyle != -1) { + msg += "驾驶模式=" + (drivingStyle == 0 ? "正常模式" : drivingStyle == 1 ? "安全模式" : drivingStyle == 2 ? "专业模式" : "其他模式,值:" + drivingStyle) + '\n'; + } + if (activateAip != -1) { + msg += "AIP功能=" + (activateAip == 0 ? "关" : "开") + '\n'; + } return msg; // return "绕障类功能开关=" + (detouringCmd == -1 ? "未知" : detouringCmd == 0 ? "关" : "开") + 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 5934a2ee61..99f4ee1bae 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -885,12 +885,15 @@ message SetOneParam // 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 + // 22: /autopilot/driving_style(int) 驾驶模式( 0-正常模式 1-安全模式 2-专业模式) + // 23: /autopilot/is_activate_AIP(bool) 是否启用AIP选项功能 string value = 2; // 转成字符串的值 } message SetParamReq { repeated SetOneParam reqs = 1; + bool need_ack = 2; //是否需要回传rosparam值给pad,仅用于22、23 } //message definition for MsgTypeTripInfoEvent 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 ac090f1ff5..9ab983edb8 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 @@ -26,6 +26,9 @@ enum MapSystemParamType{ 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 + DRIVING_STYLE = 22;//22: /autopilot/driving_style(int) 驾驶模式( 0-正常模式 1-安全模式 2-专业模式) + ACTIVATE_AIP = 23;//23: /autopilot/is_activate_AIP(bool) 是否启用AIP选项功能 + } /** 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 cde887a92d..6c25f0af48 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 @@ -63,7 +63,6 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; import com.zhjt.mogo.adas.utils.ByteUtil; import com.zhjt.service.chain.ChainLog; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -2260,14 +2259,22 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * * =0:表示乘客屏模式添加到WS发送消息队列 * * -1L:添加到WS发送消息队列失败 */ - private long sendSetParamReq(int type, String value) { - MessagePad.SetOneParam oneParam = MessagePad.SetOneParam - .newBuilder().setType(type).setValue(value).build(); - MessagePad.SetParamReq req = MessagePad.SetParamReq + private long sendSetParamReq(int type, @Nullable String value) { + MessagePad.SetOneParam.Builder builder = MessagePad.SetOneParam + .newBuilder().setType(type); + if (!TextUtils.isEmpty(value)) { + builder.setValue(value); + } + MessagePad.SetOneParam oneParam = builder.build(); + + + MessagePad.SetParamReq.Builder reqBuilder = MessagePad.SetParamReq .newBuilder() - .addReqs(oneParam) - .build(); - return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ, req.toByteArray()); + .addReqs(oneParam); + if (AdasConstants.MapSystemParamType.DRIVING_STYLE_VALUE == type || AdasConstants.MapSystemParamType.ACTIVATE_AIP_VALUE == type) { + reqBuilder.setNeedAck(true); + } + return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ, reqBuilder.build().toByteArray()); } /** @@ -2315,7 +2322,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * {@link AdasConstants.MapSystemParamType#FAULT_SIMULATION_CMD Value类型:int或int类型String} * {@link AdasConstants.MapSystemParamType#PARK_VEH_CROSS Value类型:int或int类型String} TODO 域控暂时未实现查询 * {@link AdasConstants.MapSystemParamType#PARK_VEH_OVERTAKE Value类型:int或int类型String} TODO 域控暂时未实现查询 - * {@link AdasConstants.MapSystemParamType#PERCEPTION_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#PERCEPTION_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#DRIVING_STYLE Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#ACTIVATE_AIP Value类型:int或int类型String} * @return 消息是否添加到WS消息发送队列。由于批量设置参数,调用的域控接口存在不同,实际调用域控最多2个接口,调用次数最多4次,所以最多返回4条ID数据 * * 返回值为非0的正整数时表示下发消息的消息ID * * >=0:表示添加到WS发送消息队列 @@ -2345,6 +2354,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec oneParamBuilder.setValue(String.valueOf(value)); } builder.addReqs(oneParamBuilder); + if (AdasConstants.MapSystemParamType.DRIVING_STYLE == key || AdasConstants.MapSystemParamType.ACTIVATE_AIP == key) { + builder.setNeedAck(true); + } } } } @@ -2651,6 +2663,36 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendSetParamReq(AdasConstants.MapSystemParamType.V2I_TO_PNC_VALUE, String.valueOf(enable)); } + /** + * 驾驶模式 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param style 0-正常模式 1-安全模式 2-专业模式 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + @Override + public long sendDrivingStyle(int style) { + return sendSetParamReq(AdasConstants.MapSystemParamType.DRIVING_STYLE_VALUE, String.valueOf(style)); + } + + /** + * 是否启用AIP选项功能 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + @Override + public long sendActivateAip(int enable) { + return sendSetParamReq(AdasConstants.MapSystemParamType.ACTIVATE_AIP_VALUE, String.valueOf(enable)); + } + /** * 盲区数据开关 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck @@ -2745,6 +2787,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.SEAT_STATE_VALUE)) .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.OVERTAKE_MAX_SPEED_VALUE)) .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.PERCEPTION_TO_PNC_VALUE)) + .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.DRIVING_STYLE_VALUE)) + .addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.ACTIVATE_AIP_VALUE)) .build(); } else { MessagePad.SetParamReq.Builder builder = MessagePad.SetParamReq.newBuilder(); @@ -3109,7 +3153,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec public long sendOtaPadMsgQuery(@Nullable String queryStr) { SsmInfo.PureStr.Builder builder = SsmInfo.PureStr.newBuilder(); builder.setData(TextUtils.isEmpty(queryStr) ? "" : queryStr); - return sendSsmFuncMsg(false,system_master.SsmInfo.MessageType.OTA_PAD_MSG,builder.build().toByteString()); + return sendSsmFuncMsg(false, system_master.SsmInfo.MessageType.OTA_PAD_MSG, builder.build().toByteString()); } /** 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 311f539705..9d123d1c6e 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 @@ -1485,6 +1485,36 @@ public class AdasManager implements IAdasNetCommApi { return mChannel == null ? -1L : mChannel.sendV2iDownPerceptionToPnc(enable); } + /** + * 驾驶模式 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param style 0-正常模式 1-安全模式 2-专业模式 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + @Override + public long sendDrivingStyle(int style) { + return mChannel == null ? -1L : mChannel.sendDrivingStyle(style); + } + + /** + * 是否启用AIP选项功能 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + @Override + public long sendActivateAip(int enable) { + return mChannel == null ? -1L : mChannel.sendActivateAip(enable); + } + /** * 盲区数据开关 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck @@ -1552,7 +1582,9 @@ public class AdasManager implements IAdasNetCommApi { * {@link AdasConstants.MapSystemParamType#FAULT_SIMULATION_CMD Value类型:int或int类型String} * {@link AdasConstants.MapSystemParamType#PARK_VEH_CROSS Value类型:int或int类型String} TODO 域控暂时未实现查询 * {@link AdasConstants.MapSystemParamType#PARK_VEH_OVERTAKE Value类型:int或int类型String} TODO 域控暂时未实现查询 - * {@link AdasConstants.MapSystemParamType#PERCEPTION_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#PERCEPTION_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#DRIVING_STYLE Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#ACTIVATE_AIP Value类型:int或int类型String} * @return 消息是否添加到WS消息发送队列。由于批量设置参数,调用的域控接口存在不同,实际调用域控最多2个接口,调用次数最多4次,所以最多返回4条ID数据 * * 返回值为非0的正整数时表示下发消息的消息ID * * >=0:表示添加到WS发送消息队列 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 e94a93a3a5..be3ce0a37b 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 @@ -1038,6 +1038,29 @@ public interface IAdasNetCommApi { */ long sendV2iDownPerceptionToPnc(int enable); + /** + * 驾驶模式 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param style 0-正常模式 1-安全模式 2-专业模式 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + long sendDrivingStyle(int style); + + /** + * 是否启用AIP选项功能 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + long sendActivateAip(int enable); /*******************************设置参数命令 V2************************************/ /** * 盲区数据开关 @@ -1099,7 +1122,9 @@ public interface IAdasNetCommApi { * {@link AdasConstants.MapSystemParamType#FAULT_SIMULATION_CMD Value类型:int或int类型String} * {@link AdasConstants.MapSystemParamType#PARK_VEH_CROSS Value类型:int或int类型String} TODO 域控暂时未实现查询 * {@link AdasConstants.MapSystemParamType#PARK_VEH_OVERTAKE Value类型:int或int类型String} TODO 域控暂时未实现查询 - * {@link AdasConstants.MapSystemParamType#PERCEPTION_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#PERCEPTION_TO_PNC Value类型:boolean或boolean类型String} + * {@link AdasConstants.MapSystemParamType#DRIVING_STYLE Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#ACTIVATE_AIP Value类型:int或int类型String} * @return 消息是否添加到WS消息发送队列。由于批量设置参数,调用的域控接口存在不同,实际调用域控最多2个接口,调用次数最多4次,所以最多返回4条ID数据 * * 返回值为非0的正整数时表示下发消息的消息ID * * >=0:表示添加到WS发送消息队列