From ea39952cde9efe6d8ea4a1e0f4b558bfa7eabf07 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Thu, 31 Aug 2023 16:15:15 +0800 Subject: [PATCH] =?UTF-8?q?[6.0.0][Fix]=E8=A7=A3=E5=86=B3=E5=81=B6?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E5=B4=A9=E6=BA=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 236 +++++++++--------- 1 file changed, 122 insertions(+), 114 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 cc0a7dabf4..c7e3d6b130 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 @@ -7,6 +7,7 @@ import bag_manager.BagManagerOuterClass import chassis.SpecialVehicleTaskCmdOuterClass import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.debug.DebugConfig import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.toAutoPilotLine import com.mogo.eagle.core.data.autopilot.toRouteInfo @@ -96,14 +97,15 @@ class MoGoAutopilotControlProvider : override fun init(context: Context) { CallerLogger.i("$M_D_C$TAG", "初始化工控机连接……") mContext = context - // 初始化ADAS 域控制器 - CupidLogUtils.setEnableLog(false) - msgHandler = TeleMsgHandler() - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {// 司机 - // 注册地图采集功能 - CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this) + runCatching { + // 初始化ADAS 域控制器 + CupidLogUtils.setEnableLog(false) + msgHandler = TeleMsgHandler() + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {// 司机 + // 注册地图采集功能 + CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this) - // 配置默认关闭的连接topic + // 配置默认关闭的连接topic // val messageTypes: MutableSet = HashSet() // messageTypes.add(MessageType.TYPE_RECEIVE_POINT_CLOUD) // val subscribeInterfaceOptions = SubscribeInterfaceOptions.newBuilder() @@ -111,125 +113,131 @@ class MoGoAutopilotControlProvider : // .setType(Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE) // .setMessageTypes(messageTypes).build() - // "192.168.1.102" - val options = AdasOptions.Builder() - .setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION) - .setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext)) - .setClient(false) - .setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear) + // "192.168.1.102" + val options = AdasOptions.Builder() + .setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION) + .setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext)) + .setClient(false) + .setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear) // .setSubscribeInterfaceOptions(subscribeInterfaceOptions)// - .build() + .build() - AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl()) - //////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// - // 监听ADAS-SDK获取到的工控机数据 - AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) - NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object : - NettyServerListener { - override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) { - msgHandler.handleMsgFromClient(msg, channel) - } - - override fun onStartServer() { - ToastUtils.showShort("司机端服务启动成功!") - if (timer == null) { - timer = Timer() + AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl()) + //////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// + // 监听ADAS-SDK获取到的工控机数据 + AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) + NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object : + NettyServerListener { + override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) { + msgHandler.handleMsgFromClient(msg, channel) } - // 10s同步一次数据到乘客屏 - timer!!.schedule(object : TimerTask() { - override fun run() { - // 同步是否开启美化模式 - setDemoMode(FunctionBuildConfig.isDemoMode) - setIgnoreConditionDraw(FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) - msgHandler.synMsgToAllClients() + + override fun onStartServer() { + ToastUtils.showShort("司机端服务启动成功!") + if (timer == null) { + timer = Timer() } - }, 1000, 10000) - invokeNettyConnResult("司机端服务启动成功!") - CallerTelematicStatusListenerManager.invokeServerStatusChanged(true) - } - - override fun onStopServer() { - ToastUtils.showLong("司机端服务停止!") - timer?.cancel() - timer = null - invokeNettyConnResult("司机端服务停止!") - CallerTelematicStatusListenerManager.invokeServerStatusChanged(false) - } - - override fun onChannelConnect(channel: Channel?) { - msgHandler.handleClientConn2Server(channel) - } - - override fun onChannelDisConnect(channel: Channel?) { - CallerLogger.d("$M_D_C$TAG", "onChannelDisConnect") - } - - override fun onReceiveClientSign(channel: Channel?, sn: String?) { - sn?.let { - invokeNettyConnResult("连接成功的乘客屏sn为:$it") + // 10s同步一次数据到乘客屏 + timer!!.schedule(object : TimerTask() { + override fun run() { + // 同步是否开启美化模式 + setDemoMode(FunctionBuildConfig.isDemoMode) + setIgnoreConditionDraw(FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) + msgHandler.synMsgToAllClients() + } + }, 1000, 10000) + invokeNettyConnResult("司机端服务启动成功!") + CallerTelematicStatusListenerManager.invokeServerStatusChanged(true) } - } - }, MoGoAiCloudClientConfig.getInstance().sn) - } else { - NSDNettyManager.getInstance() - .searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, - AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode), - object : NettyClientListener { - override fun onMessageResponseClient( - msg: MogoProtocolMsg?, - sign: String?, - channel: Channel - ) { - // 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端 - msgHandler.handleMsgFromServer(msg, channel) - } - override fun onClientStatusConnectChanged( - statusCode: Int, - sign: String?, - channel: Channel - ) { - msgHandler.handleClientConnStatus(statusCode, sign, channel) - } - }) - } - msgHandler.setListener(object : EventListener { - override fun connectDevice(isSupportMulti: Boolean) { - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - if (!isInit) { - isInit = true - // 转发工控机数据给乘客屏 - listenDeviceData() + override fun onStopServer() { + ToastUtils.showLong("司机端服务停止!") + timer?.cancel() + timer = null + invokeNettyConnResult("司机端服务停止!") + CallerTelematicStatusListenerManager.invokeServerStatusChanged(false) } - } else { - if (!isInit) { - isInit = true - UiThreadHandler.post { - if (isSupportMulti) { - // 直连工控机 - directConnect() - } else { - val options = AdasOptions - .Builder() - .setClient(true) - .setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear) - .build() - AdasManager.getInstance() - .create(options, MoGoAdasMsgConnectStatusListenerImpl()) - // 监听ADAS-SDK获取到的工控机数据 - AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) - // 接收司机屏发过来的感知、定位等数据 - listenDeviceData() + + override fun onChannelConnect(channel: Channel?) { + msgHandler.handleClientConn2Server(channel) + } + + override fun onChannelDisConnect(channel: Channel?) { + CallerLogger.d("$M_D_C$TAG", "onChannelDisConnect") + } + + override fun onReceiveClientSign(channel: Channel?, sn: String?) { + sn?.let { + invokeNettyConnResult("连接成功的乘客屏sn为:$it") + } + } + }, MoGoAiCloudClientConfig.getInstance().sn) + } else { + NSDNettyManager.getInstance() + .searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, + AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode), + object : NettyClientListener { + override fun onMessageResponseClient( + msg: MogoProtocolMsg?, + sign: String?, + channel: Channel + ) { + // 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端 + msgHandler.handleMsgFromServer(msg, channel) + } + + override fun onClientStatusConnectChanged( + statusCode: Int, + sign: String?, + channel: Channel + ) { + msgHandler.handleClientConnStatus(statusCode, sign, channel) + } + }) + } + msgHandler.setListener(object : EventListener { + override fun connectDevice(isSupportMulti: Boolean) { + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + if (!isInit) { + isInit = true + // 转发工控机数据给乘客屏 + listenDeviceData() + } + } else { + if (!isInit) { + isInit = true + UiThreadHandler.post { + if (isSupportMulti) { + // 直连工控机 + directConnect() + } else { + val options = AdasOptions + .Builder() + .setClient(true) + .setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear) + .build() + AdasManager.getInstance() + .create(options, MoGoAdasMsgConnectStatusListenerImpl()) + // 监听ADAS-SDK获取到的工控机数据 + AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) + // 接收司机屏发过来的感知、定位等数据 + listenDeviceData() + } } } } } + }) + CallerAutopilotCarConfigListenerManager.addListener(TAG, this) + CallerLogger.i("$M_D_C$TAG", "initServer……") + // 同步数据给工控机的服务 + AsyncDataToAutopilotServer.INSTANCE.initServer() + }.onFailure { throwable -> + if (DebugConfig.isDebug()) { + ToastUtils.showLong("AutoPilot出现异常,请立即处理!") } - }) - CallerAutopilotCarConfigListenerManager.addListener(TAG, this) - CallerLogger.i("$M_D_C$TAG", "initServer……") - // 同步数据给工控机的服务 - AsyncDataToAutopilotServer.INSTANCE.initServer() + throwable.printStackTrace() + } } private fun directConnect() {