diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 1781acfc42..48d520686a 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -88,11 +88,13 @@ import com.zhidao.support.adas.high.bean.VersionCompatibility; import com.zhidao.support.adas.high.common.ByteUtil; import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS; import com.zhidao.support.adas.high.common.CupidLogUtils; +import com.zhidao.support.adas.high.common.MessageType; import com.zhidao.support.adas.high.common.ProtocolStatus; import com.zhidao.support.adas.high.common.ReceiveTimeoutManager; import com.zhidao.support.adas.high.other.permission.BackgrounderPermission; import com.zhidao.support.adas.high.other.permission.OnAdasPermissionListener; import com.zhidao.support.adas.high.other.router.RouterActivity; +import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions; import java.net.Inet4Address; import java.net.InetAddress; @@ -102,8 +104,10 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Enumeration; +import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Set; import java.util.concurrent.ScheduledExecutorService; import chassis.VehicleStateOuterClass; @@ -968,13 +972,19 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } else { /*—————————————作为司机端———————————*/ int mode = Constants.getIpcConnectionMode(this); + Set messageTypes = new HashSet<>(); + messageTypes.add(MessageType.TYPE_RECEIVE_POINT_CLOUD); + SubscribeInterfaceOptions subscribeInterfaceOptions = SubscribeInterfaceOptions.newBuilder() + .setRole(com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.DEBUG) + .setType(com.zhidao.support.adas.high.common.Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE) + .setMessageTypes(messageTypes).build(); switch (mode) { default: case AdasOptions.IPC_CONNECTION_MODE.FIXATION: - options = new AdasOptions.Builder().setClient(false).setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(this)).setIpcConnectionMode(mode).build(); + options = new AdasOptions.Builder().setSubscribeInterfaceOptions(subscribeInterfaceOptions).setClient(false).setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(this)).setIpcConnectionMode(mode).build(); break; case AdasOptions.IPC_CONNECTION_MODE.ASSIGN: - options = new AdasOptions.Builder().setClient(false).setIpcAssignIP(Constants.getIPCIp(this)).setIpcConnectionMode(mode).build(); + options = new AdasOptions.Builder().setSubscribeInterfaceOptions(subscribeInterfaceOptions).setClient(false).setIpcAssignIP(Constants.getIPCIp(this)).setIpcConnectionMode(mode).build(); break; } 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 c7bf63f68d..581942d7c8 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 @@ -37,6 +37,7 @@ import com.zhidao.support.adas.high.queue.WSByteQueueManager; import com.zhidao.support.adas.high.queue.WebSocketQueueManager; import com.zhidao.support.adas.high.socket.FpgaSocket; import com.zhidao.support.adas.high.subscribe.SubscribeInterface; +import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions; import com.zhidao.support.adas.high.thread.DispatchHandler; import com.zhjt.service.chain.ChainLog; import com.zhjt.service.chain.TracingConstants; @@ -406,6 +407,13 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec ipcConnectedPort = port; subscribeInterface = new SubscribeInterface(this); updateConnectStatus(Constants.IPC_CONNECTION_STATUS.CONNECTED, "已连接"); + //根据连接配置 进行接口订阅或取消订阅配置 + if (adasOptions != null) { + SubscribeInterfaceOptions options = adasOptions.getSubscribeInterfaceOptions(); + if (options != null && options.getMessageTypes() != null && !options.getMessageTypes().isEmpty()) { + subscribeInterface.subscribeInterface(options.getRole(), options.getType(), options.getMessageTypes()); + } + } } @Override diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasOptions.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasOptions.java index b64caacb1e..a3b82d5391 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasOptions.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasOptions.java @@ -1,5 +1,7 @@ package com.zhidao.support.adas.high; +import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions; + import java.util.HashSet; /** @@ -43,6 +45,11 @@ public class AdasOptions { */ private HashSet ipcFixationIP; + /** + * 订阅相关配置 + */ + private SubscribeInterfaceOptions subscribeInterfaceOptions; + private AdasOptions() { } @@ -72,6 +79,17 @@ public class AdasOptions { return this; } + /** + * 配置连接方式 + * + * @param ipcConnectionMode + * @return + */ + public Builder setIpcConnectionMode(int ipcConnectionMode) { + options.ipcConnectionMode = ipcConnectionMode; + return this; + } + /** * 设置IPC主机地址 * @@ -96,13 +114,13 @@ public class AdasOptions { } /** - * 配置连接方式 + * 接口注册参数 * - * @param ipcConnectionMode + * @param subscribeInterfaceOptions * @return */ - public Builder setIpcConnectionMode(int ipcConnectionMode) { - options.ipcConnectionMode = ipcConnectionMode; + public Builder setSubscribeInterfaceOptions(SubscribeInterfaceOptions subscribeInterfaceOptions) { + options.subscribeInterfaceOptions = subscribeInterfaceOptions; return this; } @@ -122,6 +140,7 @@ public class AdasOptions { options.isClient = true; options.ipcAssignIP = null; options.ipcFixationIP = null; + options.subscribeInterfaceOptions = null; return options; } @@ -141,6 +160,10 @@ public class AdasOptions { return ipcFixationIP; } + public SubscribeInterfaceOptions getSubscribeInterfaceOptions() { + return subscribeInterfaceOptions; + } + public void setIpcAssignIP(String ipcAssignIP) { this.ipcAssignIP = ipcAssignIP; } @@ -156,4 +179,8 @@ public class AdasOptions { public void setIpcFixationIP(HashSet ipcFixationIP) { this.ipcFixationIP = ipcFixationIP; } + + public void setSubscribeInterfaceOptions(SubscribeInterfaceOptions subscribeInterfaceOptions) { + this.subscribeInterfaceOptions = subscribeInterfaceOptions; + } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterfaceOptions.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterfaceOptions.java new file mode 100644 index 0000000000..7d133a5723 --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/subscribe/SubscribeInterfaceOptions.java @@ -0,0 +1,71 @@ +package com.zhidao.support.adas.high.subscribe; + +import com.zhidao.support.adas.high.common.Constants; +import com.zhidao.support.adas.high.common.Define; +import com.zhidao.support.adas.high.common.MessageType; + +import java.util.Set; + +/** + * 订阅参数 + */ +public class SubscribeInterfaceOptions { + @Define.TerminalRole + private int role = Constants.TERMINAL_ROLE.DRIVER; + @Define.SubscribeType + private int type = Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE; + private Set messageTypes; + + private SubscribeInterfaceOptions() { + } + + public int getRole() { + return role; + } + + public int getType() { + return type; + } + + public Set getMessageTypes() { + return messageTypes; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public static class Builder { + @Define.TerminalRole + private int role; + @Define.SubscribeType + private int type; + private Set messageTypes; + + private Builder() { + } + + public Builder setRole(@Define.TerminalRole int role) { + this.role = role; + return this; + } + + public Builder setType(@Define.SubscribeType int type) { + this.type = type; + return this; + } + + public Builder setMessageTypes(Set messageTypes) { + this.messageTypes = messageTypes; + return this; + } + + public SubscribeInterfaceOptions build() { + SubscribeInterfaceOptions options = new SubscribeInterfaceOptions(); + options.role = role; + options.type = type; + options.messageTypes = messageTypes; + return options; + } + } +}