From 8bd17a70b653725756dd0a921397784fb7e1bc85 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Fri, 3 Jan 2025 17:47:52 +0800 Subject: [PATCH] =?UTF-8?q?[690][adas]=E5=90=AF=E5=8A=A8=E8=87=AA=E9=A9=BE?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=87=AA=E9=A9=BE=E5=90=AF=E5=8A=A8=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 14 +++++++------- .../src/main/proto/message_pad.proto | 8 ++++++++ .../com/zhidao/support/adas/high/AdasChannel.java | 14 +++++++++----- .../com/zhidao/support/adas/high/AdasManager.java | 13 +++++++------ .../zhidao/support/adas/high/IAdasNetCommApi.java | 11 ++++++----- 5 files changed, 37 insertions(+), 23 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 f4e3ad23c0..57aa07c5dd 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 @@ -397,12 +397,12 @@ class MoGoAutopilotControlProvider : private fun startAutoPilotWithNoParameter(source: Int) { if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { val invokeResult = AdasManager.getInstance() - .sendAutoPilotModeReq(1, source, null, null) + .sendAutoPilotModeReq(1, source, null, null, null) invokeAutoPilotResult(if (invokeResult > -1) "无参自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空") } else { if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) { val invokeResult = AdasManager.getInstance() - .sendAutoPilotModeReq(1, source, null, null) + .sendAutoPilotModeReq(1, source, null, null, null) invokeAutoPilotResult(if (invokeResult > -1) "无参自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空") } else { invokeAutoPilotResult("车机与工控机链接失败,无法开启自动驾驶 无参") @@ -413,13 +413,13 @@ class MoGoAutopilotControlProvider : private fun startAutoPilot(controlParameters: AutopilotControlParameters, source: Int): Long { if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { val invokeResult = AdasManager.getInstance() - .sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo()) + .sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo(), null) invokeAutoPilotResult(if (invokeResult > -1) "自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空") return invokeResult } else { if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) { val invokeResult = AdasManager.getInstance() - .sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo()) + .sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo(), controlParameters.toAutoPilotCmdInfo(), null) invokeAutoPilotResult(if (invokeResult > -1) "自动驾驶调用成功:${invokeResult}" else "自动驾驶调用失败, socket 或者 rawPack 可能为空") return invokeResult } else { @@ -481,7 +481,7 @@ class MoGoAutopilotControlProvider : override fun cancelAutoPilot() { if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) { - val invokeResult = AdasManager.getInstance().sendAutoPilotModeReq(0, 1, null, null) + val invokeResult = AdasManager.getInstance().sendAutoPilotModeReq(0, 1, null, null, null) invokeAutoPilotResult(if (invokeResult > -1) "取消自动驾驶调用成功:${invokeResult}" else "取消自动驾驶调用失败, socket 或者 rawPack 可能为空") } else { invokeAutoPilotResult("车机与工控机链接失败,无法取消自动驾驶") @@ -1078,11 +1078,11 @@ class MoGoAutopilotControlProvider : */ override fun setControlAutopilotCarAuto(isEnable: Boolean) { if (isEnable) { - AdasManager.getInstance().sendAutoPilotModeReq(1, 0, null, null) + AdasManager.getInstance().sendAutoPilotModeReq(1, 0, null, null, null) } else { // 司机屏才可关闭自动驾驶 if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - AdasManager.getInstance().sendAutoPilotModeReq(0, 0, null, null) + AdasManager.getInstance().sendAutoPilotModeReq(0, 0, null, null, null) } } } 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 d967741e9e..8b55a9600a 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -491,6 +491,13 @@ message CmdInfo { string order_id = 2; // 订单号 } +enum StartPosType +{ + FIRST_STATION = 0; //首站点触发 + MIDDLE = 1; //中间站点触发 + OTHER = 2; // 非(首站点/中间站点)触发 +} + message SetAutopilotModeReq { uint32 mode = 1; //1: enter autopilot mode, 0: quit autopilot mode @@ -498,6 +505,7 @@ message SetAutopilotModeReq RouteInfo routeInfo = 3; //自动驾驶路径信息 uint64 sessionId = 4; //autopilot cmd session ID CmdInfo cmd_info = 5; //自驾命令信息 + StartPosType start_pos_type = 6; // 自驾启动位置 } // message definition for MsgTypeSetDemoModeReq 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 495eb55dde..f6b1ff6198 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 @@ -1181,17 +1181,18 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec * 设置自动驾驶模式 启动自动驾驶 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck * - * @param mode 1: enter autopilot mode, 0: quit autopilot mode - * @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350,其他车型目前未上线) - * @param routeInfo 自动驾驶路径信息 - * @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等) + * @param mode 1: enter autopilot mode, 0: quit autopilot mode + * @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350,其他车型目前未上线) + * @param routeInfo 自动驾驶路径信息 + * @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等) + * @param startPosType 自驾启动位置 * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID和SessionID * * >=0:表示添加到WS发送消息队列 * * =0:表示乘客屏模式添加到WS发送消息队列 * * -1L:添加到WS发送消息队列失败 */ @Override - public long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo) { + public long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo, @Nullable MessagePad.StartPosType startPosType) { MessageId messageId = MessageId.build(MessageType.TYPE_SEND_SET_AUTOPILOT_MODE_REQ); MessagePad.SetAutopilotModeReq.Builder builder = MessagePad.SetAutopilotModeReq.newBuilder(); builder.setMode(mode); @@ -1202,6 +1203,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec if (cmdInfo != null) { builder.setCmdInfo(cmdInfo); } + if (startPosType != null) { + builder.setStartPosType(startPosType); + } MessagePad.SetAutopilotModeReq req = builder.build(); if (autopilotReview != null) autopilotReview.onAutopilotCommandTrigger(req); return sendPBMessage(MessageType.TYPE_SEND_SET_AUTOPILOT_MODE_REQ, req.toByteArray(), messageId); 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 6480a1d3e8..dfa841a03a 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 @@ -396,18 +396,19 @@ public class AdasManager implements IAdasNetCommApi { * 设置自动驾驶模式 启动自动驾驶 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck * - * @param mode 1: enter autopilot mode, 0: quit autopilot mode - * @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350,其他车型目前未上线) - * @param routeInfo 自动驾驶路径信息 - * @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等) + * @param mode 1: enter autopilot mode, 0: quit autopilot mode + * @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350,其他车型目前未上线) + * @param routeInfo 自动驾驶路径信息 + * @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等) + * @param startPosType 自驾启动位置 * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID和SessionID * * >=0:表示添加到WS发送消息队列 * * =0:表示乘客屏模式添加到WS发送消息队列 * * -1L:添加到WS发送消息队列失败 */ @Override - public long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo) { - return mChannel == null ? -1L : mChannel.sendAutoPilotModeReq(mode, source, routeInfo, cmdInfo); + public long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo, @Nullable MessagePad.StartPosType startPosType) { + return mChannel == null ? -1L : mChannel.sendAutoPilotModeReq(mode, source, routeInfo, cmdInfo, startPosType); } /** 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 034f822acd..f090f48455 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 @@ -167,16 +167,17 @@ public interface IAdasNetCommApi { * 设置自动驾驶模式 启动自动驾驶 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck * - * @param mode 1: enter autopilot mode, 0: quit autopilot mode - * @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350,其他车型目前未上线) - * @param routeInfo 自动驾驶路径信息 - * @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等) + * @param mode 1: enter autopilot mode, 0: quit autopilot mode + * @param source 命令来源: 0: pad模拟, 1: pad业务, 2:aicloud, 3:魔方(清扫车MAP Version==332以及MAP Version>=350,其他车型目前未上线) + * @param routeInfo 自动驾驶路径信息 + * @param cmdInfo 自驾命令信息(订单号,是否首次进自驾等) + * @param startPosType 自驾启动位置 * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID和SessionID * * >=0:表示添加到WS发送消息队列 * * =0:表示乘客屏模式添加到WS发送消息队列 * * -1L:添加到WS发送消息队列失败 */ - long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo); + long sendAutoPilotModeReq(int mode, int source, @Nullable MessagePad.RouteInfo routeInfo, @Nullable MessagePad.CmdInfo cmdInfo, @Nullable MessagePad.StartPosType startPosType); /**