From db084b39ef5b1993d301fba4e6bc896804bad3ef Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 28 Feb 2024 08:54:19 +0800 Subject: [PATCH] =?UTF-8?q?[630][adas]=20=E6=9B=B4=E6=96=B0=E9=87=8D?= =?UTF-8?q?=E5=90=AF=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=85=B3?= =?UTF-8?q?=E6=9C=BA=E5=91=BD=E4=BB=A4=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=A0=87=E5=AE=9A=E8=8A=82=E7=82=B9=E5=90=AF=E5=81=9C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=89=8D=E5=90=91camera=2030=E8=8A=82=E7=82=B9=E5=90=AF?= =?UTF-8?q?=E5=81=9C=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=8E=A7?= =?UTF-8?q?=E5=88=B6lidar=E8=8A=82=E7=82=B9=E5=90=AF=E5=81=9C=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=8E=A7=E5=88=B6=E5=B7=A6?= =?UTF-8?q?=E5=89=8Dradar=E8=8A=82=E7=82=B9=E5=90=AF=E5=81=9C=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 13 ++- .../IMoGoAutopilotControlProvider.kt | 9 ++- .../CallerAutoPilotControlManager.kt | 13 ++- .../zhidao/support/adas/high/AdasChannel.java | 81 +++++++++++++++++-- .../zhidao/support/adas/high/AdasManager.java | 80 ++++++++++++++++-- .../support/adas/high/IAdasNetCommApi.java | 58 +++++++++++-- 6 files changed, 232 insertions(+), 22 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 b9f7aaaa4a..5bce9e7599 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 @@ -875,11 +875,20 @@ class MoGoAutopilotControlProvider : } /** - * 发送工控机所有节点重启命令 + * 系统命令请求 重启所有节点 + * 命令下发存在回执 */ override fun sendIpcReboot() { //重启所有节点 - AdasManager.getInstance().sendSystemCmdReq(MessagePad.SystemCmdType.SYSTEMCMD_REBOOT) + AdasManager.getInstance().sendIpcReboot() + } + + /** + * 系统命令请求 关机 + * 命令下发存在回执 + */ + override fun sendIpcPowerOff() { + AdasManager.getInstance().sendIpcPowerOff() } /** 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 1c8bdd257f..45ef04adae 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 @@ -309,10 +309,17 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { fun sendBlindAreaCmd(switchCmd: Boolean) /** - * 发送工控机所有节点重启命令 + * 系统命令请求 重启所有节点 + * 命令下发存在回执 */ fun sendIpcReboot() + /** + * 系统命令请求 关机 + * 命令下发存在回执 + */ + fun sendIpcPowerOff() + /** * 办公室调试使用,强制开启自动驾驶,将 status,pilotmode,control_pilotmode,强追设置为 1 * isEnable = true 开启 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 506a25e0f7..1a44d62768 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 @@ -489,7 +489,8 @@ object CallerAutoPilotControlManager { } /** - * 发送工控机所有节点重启命令 + * 系统命令请求 重启所有节点 + * 命令下发存在回执 */ fun sendIpcReboot() { if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { @@ -497,6 +498,16 @@ object CallerAutoPilotControlManager { } } + /** + * 系统命令请求 关机 + * 命令下发存在回执 + */ + fun sendIpcPowerOff(){ + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {//TODO 是否需要判断是不是司机屏? + providerApi?.sendIpcPowerOff() + } + } + /** * 办公室调试使用,强制开启自动驾驶,将 status,pilotmode,control_pilotmode,强追设置为 1 * isEnable = true 开启 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 2fc6690469..adee60ac5e 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 @@ -1183,12 +1183,14 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec } /** - * 系统命令请求, 比如系统重启,启用新镜像 + * 系统命令请求 * - * @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点 - * SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像) - * SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机 - * @return boolean + * @param type SystemCmdType.SYSTEMCMD_REBOOT 重启所有节点(不需要node) + * SystemCmdType.SYSTEMCMD_START_NODE 开始节点(node表示不同的节点) + * SystemCmdType.SYSTEMCMD_STOP_NODE 停止节点(node表示不同的节点) + * SystemCmdType.SYSTEMCMD_POWER_OFF 关机(不需要node) + * @param node 0: default, 1: 前向camera 30 2: lidar 3: 左前radar 4: calib_check node + * @return 加入WS发送消息队列是否成功 */ @ChainLog( linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, @@ -1197,13 +1199,80 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec paramIndexes = {0} ) @Override - public boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type) { + public boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type, int node) { MessagePad.SystemCmdReq.Builder builder = MessagePad.SystemCmdReq.newBuilder(); builder.setCmdType(type); + if (node > 0) { + builder.setNode(node); + } MessagePad.SystemCmdReq req = builder.build(); return sendPBMessage(MessageType.TYPE_SEND_SYSTEM_CMD_REQ, req.toByteArray()); } + /** + * 系统命令请求 重启所有节点 + * + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendIpcReboot() { + return sendSystemCmdReq(MessagePad.SystemCmdType.SYSTEMCMD_REBOOT, 0); + } + + /** + * 系统命令请求 关机 + * + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendIpcPowerOff() { + return sendSystemCmdReq(MessagePad.SystemCmdType.SYSTEMCMD_POWER_OFF, 0); + } + + /** + * 系统命令请求 控制前向camera 30节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendFrontCamera30Cmd(boolean isStart) { + return sendSystemCmdReq(isStart ? MessagePad.SystemCmdType.SYSTEMCMD_START_NODE : MessagePad.SystemCmdType.SYSTEMCMD_STOP_NODE, 1); + } + + /** + * 系统命令请求 控制lidar节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendLidarCmd(boolean isStart) { + return sendSystemCmdReq(isStart ? MessagePad.SystemCmdType.SYSTEMCMD_START_NODE : MessagePad.SystemCmdType.SYSTEMCMD_STOP_NODE, 2); + } + + /** + * 系统命令请求 控制左前radar节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendLeftFrontRadarCmd(boolean isStart) { + return sendSystemCmdReq(isStart ? MessagePad.SystemCmdType.SYSTEMCMD_START_NODE : MessagePad.SystemCmdType.SYSTEMCMD_STOP_NODE, 3); + } + + /** + * 系统命令请求 控制标定节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendCalibCheckCmd(boolean isStart) { + return sendSystemCmdReq(isStart ? MessagePad.SystemCmdType.SYSTEMCMD_START_NODE : MessagePad.SystemCmdType.SYSTEMCMD_STOP_NODE, 4); + } + /** * 发送 轨迹下载请求 * 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 9dcd1600e5..20eac1a63d 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 @@ -580,16 +580,82 @@ public class AdasManager implements IAdasNetCommApi { } /** - * 系统命令请求, 比如系统重启,启用新镜像 + * 系统命令请求 * - * @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点 - * SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像) - * SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机 - * @return boolean + * @param type SystemCmdType.SYSTEMCMD_REBOOT 重启所有节点(不需要node) + * SystemCmdType.SYSTEMCMD_START_NODE 开始节点(node表示不同的节点) + * SystemCmdType.SYSTEMCMD_STOP_NODE 停止节点(node表示不同的节点) + * SystemCmdType.SYSTEMCMD_POWER_OFF 关机(不需要node) + * @param node 0: default, 1: 前向camera 30 2: lidar 3: 左前radar 4: calib_check node + * @return 加入WS发送消息队列是否成功 */ @Override - public boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type) { - return mChannel != null && mChannel.sendSystemCmdReq(type); + public boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type, int node) { + return mChannel != null && mChannel.sendSystemCmdReq(type, node); + } + + /** + * 系统命令请求 重启所有节点 + * + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendIpcReboot() { + return mChannel != null && mChannel.sendIpcReboot(); + } + + /** + * 系统命令请求 关机 + * + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendIpcPowerOff() { + return mChannel != null && mChannel.sendIpcPowerOff(); + } + + /** + * 系统命令请求 控制前向camera 30节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendFrontCamera30Cmd(boolean isStart) { + return mChannel != null && mChannel.sendFrontCamera30Cmd(isStart); + } + + /** + * 系统命令请求 控制lidar节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendLidarCmd(boolean isStart) { + return mChannel != null && mChannel.sendLidarCmd(isStart); + } + + /** + * 系统命令请求 控制左前radar节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendLeftFrontRadarCmd(boolean isStart) { + return mChannel != null && mChannel.sendLeftFrontRadarCmd(isStart); + } + + /** + * 系统命令请求 控制标定节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + @Override + public boolean sendCalibCheckCmd(boolean isStart) { + return mChannel != null && mChannel.sendCalibCheckCmd(isStart); } /** 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 9e0495efe8..5f75d8a515 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 @@ -260,14 +260,62 @@ public interface IAdasNetCommApi { boolean sendGlobalPathReq(); /** - * 系统命令请求, 比如系统重启,启用新镜像 + * 系统命令请求 * - * @param type SystemCmdType。SYSTEMCMD_REBOOT 重启所有节点 - * SystemCmdType。SYSTEMCMD_EMPLOY_NEW_IMAGE 使用新镜像(推镜像) - * SystemCmdType。SYSTEMCMD_SHUT_DOWN 关机 + * @param type SystemCmdType.SYSTEMCMD_REBOOT 重启所有节点(不需要node) + * SystemCmdType.SYSTEMCMD_START_NODE 开始节点(node表示不同的节点) + * SystemCmdType.SYSTEMCMD_STOP_NODE 停止节点(node表示不同的节点) + * SystemCmdType.SYSTEMCMD_POWER_OFF 关机(不需要node) + * @param node 0: default, 1: 前向camera 30 2: lidar 3: 左前radar 4: calib_check node * @return 加入WS发送消息队列是否成功 */ - boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type); + boolean sendSystemCmdReq(@NonNull MessagePad.SystemCmdType type, int node); + + /** + * 系统命令请求 重启所有节点 + * + * @return 加入WS发送消息队列是否成功 + */ + boolean sendIpcReboot(); + + /** + * 系统命令请求 关机 + * + * @return 加入WS发送消息队列是否成功 + */ + boolean sendIpcPowerOff(); + + /** + * 系统命令请求 控制前向camera 30节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + boolean sendFrontCamera30Cmd(boolean isStart); + + /** + * 系统命令请求 控制lidar节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + boolean sendLidarCmd(boolean isStart); + + /** + * 系统命令请求 控制左前radar节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + boolean sendLeftFrontRadarCmd(boolean isStart); + + /** + * 系统命令请求 控制标定节点 运行还是停止 + * + * @param isStart true:运行 false:停止 + * @return 加入WS发送消息队列是否成功 + */ + boolean sendCalibCheckCmd(boolean isStart); /** * 发送 轨迹下载请求