From ddd98971524e2e0595cf8751ca0f4fefe39139f2 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Fri, 15 Sep 2023 11:35:00 +0800 Subject: [PATCH] =?UTF-8?q?[610][adas]=E6=B7=BB=E5=8A=A0=E8=83=BD=E5=90=A6?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=B9=B3=E8=A1=8C=E9=A9=BE=E9=A9=B6=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=B1=BB=E5=9E=8B=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OCHAdasAbilityManager.java | 6 +- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 14 +- .../MoGoAdasMsgConnectStatusListenerImpl.kt | 3 + .../hmi/ui/widget/ParallelDriveView.kt | 8 +- .../IMoGoAutopilotActionsListener.kt | 4 +- .../IMoGoParallelDrivingActionsListener.kt | 13 ++ .../CallerAutopilotActionsListenerManager.kt | 23 +- ...erParallelDrivingActionsListenerManager.kt | 99 ++++++++ ...lotReason.java => UnableLaunchReason.java} | 8 +- .../zhidao/support/adas/high/AdasChannel.java | 4 + .../zhidao/support/adas/high/AdasOptions.java | 2 + .../support/adas/high/OnAdasListener.java | 15 +- .../high/common/ParallelDrivingManager.java | 211 ++++++++++++++++++ .../ability/AutopilotAbility230.java | 10 +- .../ability/AutopilotAbility250.java | 24 +- .../ability/AutopilotAbility330.java | 22 +- .../ability/AutopilotAbility350And360.java | 24 +- .../ability/AutopilotAbility360.java | 22 +- .../ability/AutopilotAbilityManager.java | 15 +- .../adas/high/msg/CarConfigRespMessage.java | 2 + .../adas/high/msg/ChassisStatesMessage.java | 2 + .../adas/high/msg/VehicleStateMessage.java | 3 + 22 files changed, 450 insertions(+), 84 deletions(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoParallelDrivingActionsListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingActionsListenerManager.kt rename libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/{UnableAutopilotReason.java => UnableLaunchReason.java} (80%) create mode 100644 libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ParallelDrivingManager.java diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java index bb7491b45d..799c399ca5 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java @@ -11,7 +11,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotStatisticsList import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; import com.zhjt.mogo.adas.data.bean.AutopilotStatistics; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; @@ -25,7 +25,7 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo private static final String TAG = OCHAdasAbilityManager.class.getSimpleName(); private boolean isAutopilotAbility; - private ArrayList unableAutopilotReasons; + private ArrayList unableAutopilotReasons; private String startFailedCode = ""; private String startFailedMessage = ""; @@ -93,7 +93,7 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo } @Override - public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons) { + public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons) { this.isAutopilotAbility = isAutopilotAbility; this.unableAutopilotReasons = unableAutopilotReasons; Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + (unableAutopilotReasons == null ? null : unableAutopilotReasons.toString())); diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index ceb72f140a..62d5defef4 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -58,7 +58,7 @@ import com.zhjt.mogo.adas.data.bean.AdasParam import com.zhidao.support.adas.high.common.ProtocolStatus import com.zhjt.mogo.adas.data.AiCloudTask import com.zhjt.mogo.adas.data.bean.AutopilotStatistics -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume @@ -885,7 +885,7 @@ class MoGoAdasListenerImpl : OnAdasListener { */ override fun onAutopilotAbility( isAutopilotAbility: Boolean, - unableAutopilotReasons: ArrayList? + unableAutopilotReasons: ArrayList? ) { if (unableAutopilotReasons != null && unableAutopilotReasons.size > 0) { autopilotAbilityCheck(isAutopilotAbility, unableAutopilotReasons.toString()) @@ -893,6 +893,16 @@ class MoGoAdasListenerImpl : OnAdasListener { invokeAutopilotAbility(isAutopilotAbility, unableAutopilotReasons) } + override fun onParallelDrivingAbility( + isParallelDrivingAbility: Boolean, + unableParallelDrivingReasons: java.util.ArrayList? + ) { + CallerParallelDrivingActionsListenerManager.invokeParallelDrivingAbility( + isParallelDrivingAbility, + unableParallelDrivingReasons + ) + } + @ChainLog( linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, linkCode = CHAIN_SOURCE_ADAS, diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt index d788e040e9..9302a00183 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt @@ -9,6 +9,7 @@ import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingActionsListenerManager import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -39,10 +40,12 @@ class MoGoAdasMsgConnectStatusListenerImpl : init { CallerCloudListenerManager.addListener(TAG, this) CallerAutopilotActionsListenerManager.setConnected(AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) + CallerParallelDrivingActionsListenerManager.setConnected(AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) } override fun onConnectionIPCStatus(ipcConnectionStatus: Int, reason: String?) { CallerAutopilotActionsListenerManager.setConnected(ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) + CallerParallelDrivingActionsListenerManager.setConnected(ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) AppConfigInfo.connectStatusDescribe = reason when (ipcConnectionStatus) { Constants.IPC_CONNECTION_STATUS.CONNECTED -> { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt index ac38c8e368..afbefbeab0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt @@ -21,8 +21,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingListener import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason.SourceType +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.SourceType import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest.ParallelRequest import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass @@ -121,7 +121,7 @@ class ParallelDriveView @JvmOverloads constructor( override fun onAutopilotAbility( isAutopilotAbility: Boolean, - unableAutopilotReasons: ArrayList? + unableAutopilotReasons: ArrayList? ) { // 是否可平行驾驶 val isAvailable = isAvailable(unableAutopilotReasons) @@ -173,7 +173,7 @@ class ParallelDriveView @JvmOverloads constructor( } } - private fun isAvailable(unableAutopilotReasons: ArrayList?): Boolean { + private fun isAvailable(unableAutopilotReasons: ArrayList?): Boolean { var unavailable = false unableAutopilotReasons?.forEach { if (it.source.ordinal == SourceType.CHASSIS.ordinal) { diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt index 70d43e0e30..5ad8621442 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt @@ -1,6 +1,6 @@ package com.mogo.eagle.core.function.api.autopilot -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason /** @@ -11,5 +11,5 @@ interface IMoGoAutopilotActionsListener { /** * pnc actions 决策 驾驶的意图 */ - fun onAutopilotAbility(isAutopilotAbility: Boolean, unableAutopilotReasons: ArrayList?) + fun onAutopilotAbility(isAutopilotAbility: Boolean, unableAutopilotReasons: ArrayList?) } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoParallelDrivingActionsListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoParallelDrivingActionsListener.kt new file mode 100644 index 0000000000..ac48a786ea --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoParallelDrivingActionsListener.kt @@ -0,0 +1,13 @@ +package com.mogo.eagle.core.function.api.autopilot + +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason + + +/** + * 平行驾驶能力 能否启动平行驾驶 + */ +interface IMoGoParallelDrivingActionsListener { + + + fun onParallelDrivingAbility(isParallelDrivingAbility: Boolean, unableParallelDrivingReasons: ArrayList?) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt index d2cd6305fe..d1f1be8f6c 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt @@ -2,7 +2,7 @@ package com.mogo.eagle.core.function.call.autopilot import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener import com.mogo.eagle.core.function.call.base.CallerBase -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason /** @@ -12,7 +12,7 @@ object CallerAutopilotActionsListenerManager : CallerBase? = null + private var unableAutopilotReasons: ArrayList? = null init { isAutopilotAbility = false @@ -20,9 +20,14 @@ object CallerAutopilotActionsListenerManager : CallerBase { - val list = ArrayList() - list.add(UnableAutopilotReason(UnableAutopilotReason.SourceType.LIB, "未连接自动驾驶系统")) + private fun disconnectedReason(): ArrayList { + val list = ArrayList() + list.add( + UnableLaunchReason( + UnableLaunchReason.SourceType.LIB, + "未连接自动驾驶系统" + ) + ) return list } @@ -37,7 +42,7 @@ object CallerAutopilotActionsListenerManager : CallerBase? { + fun getUnableAutopilotReasons(): ArrayList? { return unableAutopilotReasons } @@ -53,15 +58,15 @@ object CallerAutopilotActionsListenerManager : CallerBase? + isAutopilotAbility: Boolean, unableAutopilotReasons: ArrayList? ) { if (isConnected) { var isEquals: Boolean = true if (unableAutopilotReasons != null && this.unableAutopilotReasons != null) { unableAutopilotReasons.let { onw -> - onw.sortWith(compareBy(UnableAutopilotReason::hashCode)); + onw.sortWith(compareBy(UnableLaunchReason::hashCode)); this.unableAutopilotReasons?.let { old -> - old.sortWith(compareBy(UnableAutopilotReason::hashCode)); + old.sortWith(compareBy(UnableLaunchReason::hashCode)); isEquals = onw.toTypedArray() contentEquals old.toTypedArray() // Log.i( // "ddd", diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingActionsListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingActionsListenerManager.kt new file mode 100644 index 0000000000..c2f70ba5bf --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerParallelDrivingActionsListenerManager.kt @@ -0,0 +1,99 @@ +package com.mogo.eagle.core.function.call.autopilot + +import android.util.Log +import com.mogo.eagle.core.function.api.autopilot.IMoGoParallelDrivingActionsListener +import com.mogo.eagle.core.function.call.base.CallerBase +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason + + +/** + * 是否可以启动平行驾驶管理 + */ +object CallerParallelDrivingActionsListenerManager : + CallerBase() { + @Volatile + private var isConnected = false + private var isParallelDrivingAbility: Boolean = false + private var unableParallelDrivingReasons: ArrayList? = null + + init { + isParallelDrivingAbility = false + unableParallelDrivingReasons = disconnectedReason() + } + + private fun disconnectedReason(): ArrayList { + val list = ArrayList() + list.add( + UnableLaunchReason( + UnableLaunchReason.SourceType.LIB, + "未连接自动驾驶系统" + ) + ) + return list + } + + /** + * 能否启动平行驾驶 + */ + fun isParallelDrivingAbility(): Boolean { + return isParallelDrivingAbility + } + + /** + * 获取不能启动平行驾驶的原因 + * null:表示没有任何原因证,证明isParallelDrivingAbility为true + */ + fun getUnableParallelDrivingReasons(): ArrayList? { + return unableParallelDrivingReasons + } + + fun setConnected(isConnected: Boolean) { + if (this.isConnected != isConnected) { + this.isConnected = isConnected + this.isParallelDrivingAbility = isConnected + unableParallelDrivingReasons = if (isConnected) null else disconnectedReason() + notification() + } + } + + @Synchronized + fun invokeParallelDrivingAbility( + isAutopilotAbility: Boolean, unableAutopilotReasons: ArrayList? + ) { + if (isConnected) { + var isEquals: Boolean = true + if (unableAutopilotReasons != null && this.unableParallelDrivingReasons != null) { + unableAutopilotReasons.let { onw -> + onw.sortWith(compareBy(UnableLaunchReason::hashCode)); + this.unableParallelDrivingReasons?.let { old -> + old.sortWith(compareBy(UnableLaunchReason::hashCode)); + isEquals = onw.toTypedArray() contentEquals old.toTypedArray() + + } + } + } else isEquals = + !(unableAutopilotReasons != null || this.unableParallelDrivingReasons != null) + + if (this.isParallelDrivingAbility != isAutopilotAbility || !isEquals) { + this.isParallelDrivingAbility = isAutopilotAbility + this.unableParallelDrivingReasons = unableAutopilotReasons + notification() + } + } + } + + private fun notification() { + Log.i( + "xfk", + "是否可以启动平行驾驶=" + isParallelDrivingAbility + if (unableParallelDrivingReasons == null) "" else unableParallelDrivingReasons.toString() + ) + M_LISTENERS.forEach { + val listener = it.value + listener.onParallelDrivingAbility( + isParallelDrivingAbility, + unableParallelDrivingReasons + ) + } + } + +} \ No newline at end of file diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableAutopilotReason.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableLaunchReason.java similarity index 80% rename from libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableAutopilotReason.java rename to libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableLaunchReason.java index a168ccb7b6..7715cada6f 100644 --- a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableAutopilotReason.java +++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableLaunchReason.java @@ -5,9 +5,9 @@ import android.text.TextUtils; import java.util.Objects; /** - * 自动驾驶能力 能否启动自动驾驶 + * 不能启动自动驾驶或不能启动平行驾驶的原因 */ -public class UnableAutopilotReason { +public class UnableLaunchReason { public enum SourceType { LIB,//ADAS庫 @@ -26,7 +26,7 @@ public class UnableAutopilotReason { public final String unableAutopilotReason; - public UnableAutopilotReason(SourceType source, String unableAutopilotReason) { + public UnableLaunchReason(SourceType source, String unableAutopilotReason) { this.source = source; this.unableAutopilotReason = unableAutopilotReason; } @@ -35,7 +35,7 @@ public class UnableAutopilotReason { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - UnableAutopilotReason that = (UnableAutopilotReason) o; + UnableLaunchReason that = (UnableLaunchReason) o; return source == that.source && TextUtils.equals(unableAutopilotReason, that.unableAutopilotReason); } 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 dbd6949814..9972574974 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 @@ -29,6 +29,7 @@ import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.Define; import com.zhidao.support.adas.high.common.IPCFixationIPHelper; import com.zhidao.support.adas.high.common.MessageType; +import com.zhidao.support.adas.high.common.ParallelDrivingManager; import com.zhidao.support.adas.high.common.ProtocolStatus; import com.zhidao.support.adas.high.common.ReceiveTimeoutManager; import com.zhidao.support.adas.high.common.RegexUtils; @@ -667,9 +668,11 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec ipcConnectionStatus.set(status); if (status == Constants.IPC_CONNECTION_STATUS.CONNECTED) { AutopilotAbilityManager.getInstance().start(); + ParallelDrivingManager.getInstance().start(); startCheckCompatibility(); } else { AutopilotAbilityManager.getInstance().stop(); + ParallelDrivingManager.getInstance().stop(); stopCheckCompatibility(); stopCarConfigReq(); } @@ -771,6 +774,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec void setOnAdasListener(OnAdasListener adasListener) { mAdasListener = adasListener; AutopilotAbilityManager.getInstance().setOnAdasListener(adasListener); + ParallelDrivingManager.getInstance().setOnAdasListener(adasListener); } @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 dcdc047c72..0f22deb4fd 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,6 @@ package com.zhidao.support.adas.high; +import com.zhidao.support.adas.high.common.ParallelDrivingManager; import com.zhidao.support.adas.high.common.autopilot.ability.AutopilotAbilityManager; import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions; @@ -202,5 +203,6 @@ public class AdasOptions { public void setUnableLaunchAutopilotGear(Set unableLaunchAutopilotGear) { AutopilotAbilityManager.getInstance().setUnableLaunchAutopilotGear(unableLaunchAutopilotGear); + ParallelDrivingManager.getInstance().setUnableLaunchParallelDrivingGear(unableLaunchAutopilotGear); } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index 6b8953f5bc..4d17ef439c 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -10,7 +10,7 @@ import com.zhjt.mogo.adas.data.AdasConstants; import com.zhjt.mogo.adas.data.AiCloudTask; import com.zhjt.mogo.adas.data.bean.AdasParam; import com.zhjt.mogo.adas.data.bean.AutopilotStatistics; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable; import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask; import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus; @@ -200,7 +200,8 @@ public interface OnAdasListener { * @param header 头 * @param statusInfo 数据 */ - @Deprecated//HQ、M1 MAP350开始弃用,其他车型MAP360开始弃用 + @Deprecated +//HQ、M1 MAP350开始弃用,其他车型MAP360开始弃用 void onStatusQueryResp(MessagePad.Header header, SystemStatusInfo.StatusInfo statusInfo); /** @@ -470,9 +471,17 @@ public interface OnAdasListener { * @param isAutopilotAbility 是否能启动自动驾驶 * @param unableAutopilotReasons 不能启动自动驾驶原因 */ - void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); + void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); + /** + * 是否有能力启动平行驾驶 + * + * @param isParallelDrivingAbility 是否能启动平行驾驶 + * @param unableParallelDrivingReasons 不能启动平行驾驶原因 + */ + void onParallelDrivingAbility(boolean isParallelDrivingAbility, @Nullable ArrayList unableParallelDrivingReasons); + /** * 启动自动驾驶失败回调 * 根据MAP 系统监控状态返回过滤 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ParallelDrivingManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ParallelDrivingManager.java new file mode 100644 index 0000000000..47c4d4f21d --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ParallelDrivingManager.java @@ -0,0 +1,211 @@ +package com.zhidao.support.adas.high.common; + + +import com.zhidao.support.adas.high.AdasManager; +import com.zhidao.support.adas.high.OnAdasListener; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; +import java.util.Timer; +import java.util.TimerTask; + +import chassis.Chassis; +import chassis.ChassisStatesOuterClass; +import chassis.VehicleStateOuterClass; +import mogo.telematics.pad.MessagePad; + +/** + * 是否可以启动平行驾驶能力检测 + */ +public class ParallelDrivingManager { + private static final String TAG = ParallelDrivingManager.class.getSimpleName(); + private static volatile ParallelDrivingManager INSTANCE; + + private volatile Timer callbackTimer; + private volatile Timer bootTimer; + private OnAdasListener listener; + private ChassisStatesOuterClass.ChassisStates chassisStates; + private VehicleStateOuterClass.VehicleState vehicleState; + /** + * 不能启动平行驾驶的档位 + */ + private Set unableLaunchParallelDrivingGear; + private int mapVersion = -1;//工控机版本 + private boolean isHQ = false;//是否是HQ + private boolean isDF = false;//是否是DF + + private ParallelDrivingManager() { + } + + public static ParallelDrivingManager getInstance() { + if (INSTANCE == null) { + synchronized (ParallelDrivingManager.class) { + if (INSTANCE == null) { + INSTANCE = new ParallelDrivingManager(); + } + } + } + return INSTANCE; + } + + + public void setCarConfig(MessagePad.CarConfigResp carConfig) { + mapVersion = carConfig.getMapVersion(); + isHQ = carConfig.getIsHQ(); + isDF = carConfig.getIsDF(); + if (mapVersion != -1) { + stopBootTimer(); + startCallback(); + } + } + + public void setOnAdasListener(OnAdasListener listener) { + this.listener = listener; + } + + public void setChassisStates(ChassisStatesOuterClass.ChassisStates chassisStates) { + this.chassisStates = chassisStates; + } + + public void setVehicleState(VehicleStateOuterClass.VehicleState vehicleState) { + this.vehicleState = vehicleState; + } + + public void setUnableLaunchParallelDrivingGear(Set unableLaunchParallelDrivingGear) { + if (unableLaunchParallelDrivingGear != null) { + this.unableLaunchParallelDrivingGear = new HashSet<>(unableLaunchParallelDrivingGear); + } + } + + /** + * 获取当前档位是否能启动自动驾驶 如果不传递默认可以启动 + * 不能启动自驾档位规则:app/README.md/不能启动自动驾驶的档位 + * + * @param currentGear 当前档位 + * @return 是否能启动自驾 + */ + private boolean isLaunchAutopilot(Chassis.GearPosition currentGear) { + if (unableLaunchParallelDrivingGear != null && !unableLaunchParallelDrivingGear.isEmpty()) { + return !unableLaunchParallelDrivingGear.contains(currentGear); + } + return true; + } + + /** + * 添加不能启动平行驾驶的原因 + * + * @param unableParallelDrivingReasons 原因列表 + * @param source 来源 + * @param unableParallelDrivingReason 云隐 + * @return 原因列表 + */ + public static ArrayList addUnableParallelDrivingReason(ArrayList unableParallelDrivingReasons, UnableLaunchReason.SourceType source, String unableParallelDrivingReason) { + if (unableParallelDrivingReasons == null) { + unableParallelDrivingReasons = new ArrayList<>(); + } + unableParallelDrivingReasons.add(new UnableLaunchReason(source, unableParallelDrivingReason)); + return unableParallelDrivingReasons; + } + + private void onCallback() { + boolean isParallelDrivingAbility = true;//是否能启动平行驾驶 + ArrayList unableParallelDrivingReasons = null;//不能启动平行驾驶原因 + //检测底盘相关 + if (chassisStates != null) { + if (chassisStates.hasBrakeSystemStates()) { + float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition(); + if (brake > 0) { + isParallelDrivingAbility = false; + unableParallelDrivingReasons = addUnableParallelDrivingReason(unableParallelDrivingReasons, UnableLaunchReason.SourceType.CHASSIS, "制动踏板被踩下"); + } + } + if (chassisStates.hasGearSystemStates()) { + Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition(); + if (!isLaunchAutopilot(gear)) { + isParallelDrivingAbility = false; + unableParallelDrivingReasons = addUnableParallelDrivingReason(unableParallelDrivingReasons, UnableLaunchReason.SourceType.CHASSIS, "档位异常"); + } + } + } + if (vehicleState != null) { + //TODO 关于手刹:目前只有老底盘中存在这个字段,df360开始,其他车型未知 + //电子驻车制动系统 + if (vehicleState.hasParkingBrake()) { + boolean isBrake = vehicleState.getParkingBrake(); + if (isBrake) { + isParallelDrivingAbility = false; + unableParallelDrivingReasons = addUnableParallelDrivingReason(unableParallelDrivingReasons, UnableLaunchReason.SourceType.CHASSIS, "施加驻车"); + } + } + } + callListener(isParallelDrivingAbility, unableParallelDrivingReasons); + } + + private void callListener(boolean isParallelDrivingAbility, ArrayList unableParallelDrivingReasons) { + + if (listener != null) { + listener.onParallelDrivingAbility(isParallelDrivingAbility, unableParallelDrivingReasons); + } + } + + /** + * 底盘数据回调20Hz,检测太频繁没有意义 + * Taxi 无人化时才会使用 MAP360开始上线此功能 + */ + protected synchronized void startCallback() { + if (mapVersion >= 30600 && (isDF || isHQ)) { + if (callbackTimer == null) { + callbackTimer = new Timer(); + callbackTimer.schedule(new TimerTask() { + @Override + public void run() { + onCallback(); + } + }, 2000L, 1000L);//延迟执行,避免刚连接成功后底盘信息无法及时同步 + } + } else { + callListener(false, addUnableParallelDrivingReason(null, UnableLaunchReason.SourceType.LIB, "当前域控版本无法通过鹰眼启动平行驾驶")); + } + } + + + /** + * 连接工控机成功调用此函数,如果dockerVersion还未获取到将启动最低版本的启动自动驾驶能力检测 + * 此函数为保险措施 以防无法获取工控机版本时 也能 正常执行逻辑 + */ + public synchronized void start() { + if (bootTimer == null) { + bootTimer = new Timer(); + bootTimer.schedule(new TimerTask() { + @Override + public void run() { + if (mapVersion == -1 && AdasManager.getInstance().getIpcConnectionStatus() == Constants.IPC_CONNECTION_STATUS.CONNECTED) { + mapVersion = 30600;//获取 CarConfig获取失败就认为是Taxi版本大于等于360 + isDF = true; + startCallback(); + } + } + }, 8000L);//8秒原因:需要后去CarConfig 对象,两个地方调用initAutopilotAbility(); 初始化 一个在这,另一个在setCarConfig(),如果setCarConfig() 证明获取版本还未成功,获取版本会重试3次每次间隔两秒 + } + + } + + private void stopBootTimer() { + if (bootTimer != null) { + bootTimer.cancel(); + bootTimer = null; + } + } + + public synchronized void stop() { + stopBootTimer(); + if (callbackTimer != null) { + callbackTimer.cancel(); + callbackTimer = null; + } + this.chassisStates = null; + this.vehicleState = null; + } +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility230.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility230.java index 36202fca78..11be04394a 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility230.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility230.java @@ -2,7 +2,7 @@ package com.zhidao.support.adas.high.common.autopilot.ability; import androidx.annotation.Nullable; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; import java.util.Timer; @@ -25,7 +25,7 @@ public class AutopilotAbility230 { private OnAutopilotAbilityListener listener; protected interface OnAutopilotAbilityListener { - void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); + void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); } protected AutopilotAbility230() { @@ -39,21 +39,21 @@ public class AutopilotAbility230 { private void onCallback() { boolean isAutopilotAbility = true;//是否能启动自动驾驶 - ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 + ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 //检测底盘相关 if (chassisStates != null) { if (chassisStates.hasBrakeSystemStates()) { float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition(); if (brake > 0) { isAutopilotAbility = false; - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "制动踏板被踩下"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, "制动踏板被踩下"); } } if (chassisStates.hasGearSystemStates()) { Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition(); if (!AutopilotAbilityManager.getInstance().isLaunchAutopilot(gear)) { isAutopilotAbility = false; - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "档位异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, "档位异常"); } } //TODO 关于手刹:不同车型的实现不同所以目前没法使用此字段 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility250.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility250.java index 38a391d2f4..dd8ff334d0 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility250.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility250.java @@ -4,7 +4,7 @@ import androidx.annotation.Nullable; import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.common.CupidLogUtils; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; import java.util.List; @@ -35,7 +35,7 @@ public class AutopilotAbility250 { private OnAutopilotAbilityListener listener; protected interface OnAutopilotAbilityListener { - void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); + void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); void onStatusQuery(); @@ -69,7 +69,7 @@ public class AutopilotAbility250 { private void onCallback(SystemStatusInfo.StatusInfo statusInfo) { boolean isAutopilotAbility = true;//是否能启动自动驾驶 - ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 + ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 //检测节点状态相关 if (statusInfo != null) { if (masterVersion == -1 && statusInfo.hasMasterVersion()) { @@ -81,7 +81,7 @@ public class AutopilotAbility250 { if (mapVersion >= 30400 && masterVersion > 2 && statusInfo.hasAutoPilotReady() && statusInfo.hasAutoPilotUnreadyReason()) { isAutopilotAbility = statusInfo.getAutoPilotReady(); if (!isAutopilotAbility) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, statusInfo.getAutoPilotUnreadyReason()); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, statusInfo.getAutoPilotUnreadyReason()); } } else if (mapVersion >= 21000 && masterVersion > 1 && statusInfo.hasAutoPilotReady()) {//如果 maser version 大于1,还需要判断AutoPilotReady字段是否存在,以确保MAP版本和SSM Maser版本不陪配情况逻辑能正常执行 isAutopilotAbility = statusInfo.getAutoPilotReady(); @@ -93,13 +93,13 @@ public class AutopilotAbility250 { String nodeName = info.getNodeName(); int state = info.getState(); if (state < AutopilotAbilityManager.NODE_INFO_STATE.length) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, nodeName + AutopilotAbilityManager.NODE_INFO_STATE[state]); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, nodeName + AutopilotAbilityManager.NODE_INFO_STATE[state]); } else { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, nodeName + "未知异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, nodeName + "未知异常"); } } } else { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, "未知异常节点"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, "未知异常节点"); } } } else { @@ -130,13 +130,13 @@ public class AutopilotAbility250 { unableAutopilotReason = "未知系统状态"; } if (!isAutopilotAbility) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, unableAutopilotReason); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, unableAutopilotReason); } } } } else { isAutopilotAbility = false;//是否能启动自动驾驶 - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.LIB, "SSM状态查询超时无响应"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, "SSM状态查询超时无响应"); } //检测底盘相关 if (chassisStates != null) { @@ -144,14 +144,14 @@ public class AutopilotAbility250 { float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition(); if (brake > 0) { isAutopilotAbility = false; - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "制动踏板被踩下"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, "制动踏板被踩下"); } } if (chassisStates.hasGearSystemStates()) { Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition(); if (!AutopilotAbilityManager.getInstance().isLaunchAutopilot(gear)) { isAutopilotAbility = false; - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "档位异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, "档位异常"); } } } @@ -163,7 +163,7 @@ public class AutopilotAbility250 { boolean isBrake = vehicleState.getParkingBrake(); if (isBrake) { isAutopilotAbility = false; - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "施加驻车"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, "施加驻车"); } } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility330.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility330.java index a11254d0da..22a2edca35 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility330.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility330.java @@ -6,7 +6,7 @@ import androidx.annotation.Nullable; import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.common.CupidLogUtils; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; import java.util.List; @@ -34,7 +34,7 @@ public class AutopilotAbility330 { private OnAutopilotAbilityListener listener; protected interface OnAutopilotAbilityListener { - void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); + void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); void onStatusQuery(); @@ -62,7 +62,7 @@ public class AutopilotAbility330 { private void onCallback(SystemStatusInfo.StatusInfo statusInfo) { boolean isAutopilotAbility = true;//是否能启动自动驾驶 - ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 + ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 //检测节点状态相关 if (statusInfo != null) { if (masterVersion == -1 && statusInfo.hasMasterVersion()) { @@ -74,7 +74,7 @@ public class AutopilotAbility330 { if (mapVersion >= 30400 && masterVersion > 2 && statusInfo.hasAutoPilotReady() && statusInfo.hasAutoPilotUnreadyReason()) { isAutopilotAbility = statusInfo.getAutoPilotReady(); if (!isAutopilotAbility) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, statusInfo.getAutoPilotUnreadyReason()); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, statusInfo.getAutoPilotUnreadyReason()); } } else if (mapVersion >= 21000 && masterVersion > 1 && statusInfo.hasAutoPilotReady()) {//如果 maser version 大于1,还需要判断AutoPilotReady字段是否存在,以确保MAP版本和SSM Maser版本不陪配情况逻辑能正常执行 isAutopilotAbility = statusInfo.getAutoPilotReady(); @@ -86,13 +86,13 @@ public class AutopilotAbility330 { String nodeName = info.getNodeName(); int state = info.getState(); if (state < AutopilotAbilityManager.NODE_INFO_STATE.length) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, nodeName + AutopilotAbilityManager.NODE_INFO_STATE[state]); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, nodeName + AutopilotAbilityManager.NODE_INFO_STATE[state]); } else { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, nodeName + "未知异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, nodeName + "未知异常"); } } } else { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, "未知异常节点"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, "未知异常节点"); } } } else { @@ -123,13 +123,13 @@ public class AutopilotAbility330 { unableAutopilotReason = "未知系统状态"; } if (!isAutopilotAbility) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, unableAutopilotReason); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, unableAutopilotReason); } } } } else { isAutopilotAbility = false;//是否能启动自动驾驶 - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.LIB, "SSM状态查询超时无响应"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, "SSM状态查询超时无响应"); } if (fsmStatusReasonRespond != null) { int count = fsmStatusReasonRespond.getFsmStatusReasonRespondCount(); @@ -138,11 +138,11 @@ public class AutopilotAbility330 { for (int i = 0; i < count; i++) { String respond = fsmStatusReasonRespond.getFsmStatusReasonRespond(i); if (!TextUtils.isEmpty(respond)) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.FSM, respond); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.FSM, respond); } } if (unableAutopilotReasons == null || unableAutopilotReasons.isEmpty()) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.LIB, "FSM数据异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, "FSM数据异常"); } } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility350And360.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility350And360.java index 582f69af80..dbd3eed306 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility350And360.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility350And360.java @@ -4,7 +4,7 @@ import androidx.annotation.Nullable; import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.common.CupidLogUtils; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; @@ -30,7 +30,7 @@ public class AutopilotAbility350And360 { private OnAutopilotAbilityListener listener; protected interface OnAutopilotAbilityListener { - void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); + void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); } @@ -57,7 +57,7 @@ public class AutopilotAbility350And360 { private void onCallback(SsmInfo.SsmStatusInf statusInfo) { boolean isAutopilotAbility = true;//是否能启动自动驾驶 - ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 + ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 //检测节点状态相关 if (statusInfo != null) { if (masterVersion == -1 && statusInfo.hasMasterVersion()) { @@ -69,7 +69,7 @@ public class AutopilotAbility350And360 { if (masterVersion > 2 && statusInfo.hasAutoPilotReady() && statusInfo.hasAutoPilotUnreadyReason()) { isAutopilotAbility = statusInfo.getAutoPilotReady(); if (!isAutopilotAbility) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, statusInfo.getAutoPilotUnreadyReason()); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, statusInfo.getAutoPilotUnreadyReason()); } } else if (masterVersion > 1 && statusInfo.hasAutoPilotReady()) {//如果 maser version 大于1,还需要判断AutoPilotReady字段是否存在,以确保MAP版本和SSM Maser版本不陪配情况逻辑能正常执行 isAutopilotAbility = statusInfo.getAutoPilotReady(); @@ -81,13 +81,13 @@ public class AutopilotAbility350And360 { String nodeName = info.getNodeName(); int state = info.getState().getNumber(); if (state < AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY.length) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, nodeName + AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY[state]); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, nodeName + AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY[state]); } else { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, nodeName + "未知异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, nodeName + "未知异常"); } } } else { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, "未知异常节点"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, "未知异常节点"); } } } else { @@ -106,12 +106,12 @@ public class AutopilotAbility350And360 { } else { unableAutopilotReason = "未知系统模式"; } - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, unableAutopilotReason); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, unableAutopilotReason); } } } else { isAutopilotAbility = false;//是否能启动自动驾驶 - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.LIB, "SSM数据异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, "SSM数据异常"); } //检测底盘相关 if (chassisStates != null) { @@ -119,14 +119,14 @@ public class AutopilotAbility350And360 { float brake = chassisStates.getBrakeSystemStates().getBrakePedalResponsePosition(); if (brake > 0) { isAutopilotAbility = false; - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "制动踏板被踩下"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, "制动踏板被踩下"); } } if (chassisStates.hasGearSystemStates()) { Chassis.GearPosition gear = chassisStates.getGearSystemStates().getGearPosition(); if (!AutopilotAbilityManager.getInstance().isLaunchAutopilot(gear)) { isAutopilotAbility = false; - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "档位异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, "档位异常"); } } } @@ -138,7 +138,7 @@ public class AutopilotAbility350And360 { boolean isBrake = vehicleState.getParkingBrake(); if (isBrake) { isAutopilotAbility = false; - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.CHASSIS, "施加驻车"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.CHASSIS, "施加驻车"); } } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility360.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility360.java index 37ea146528..0de52b2894 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility360.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbility360.java @@ -6,7 +6,7 @@ import androidx.annotation.Nullable; import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.common.CupidLogUtils; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; @@ -27,7 +27,7 @@ public class AutopilotAbility360 { private OnAutopilotAbilityListener listener; protected interface OnAutopilotAbilityListener { - void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); + void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons); } @@ -47,7 +47,7 @@ public class AutopilotAbility360 { private void onCallback(SsmInfo.SsmStatusInf statusInfo) { boolean isAutopilotAbility = true;//是否能启动自动驾驶 - ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 + ArrayList unableAutopilotReasons = null;//不能启动自动驾驶原因 //检测节点状态相关 if (statusInfo != null) { if (masterVersion == -1 && statusInfo.hasMasterVersion()) { @@ -59,7 +59,7 @@ public class AutopilotAbility360 { if (masterVersion > 2 && statusInfo.hasAutoPilotReady() && statusInfo.hasAutoPilotUnreadyReason()) { isAutopilotAbility = statusInfo.getAutoPilotReady(); if (!isAutopilotAbility) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, statusInfo.getAutoPilotUnreadyReason()); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, statusInfo.getAutoPilotUnreadyReason()); } } else if (masterVersion > 1 && statusInfo.hasAutoPilotReady()) {//如果 maser version 大于1,还需要判断AutoPilotReady字段是否存在,以确保MAP版本和SSM Maser版本不陪配情况逻辑能正常执行 isAutopilotAbility = statusInfo.getAutoPilotReady(); @@ -71,13 +71,13 @@ public class AutopilotAbility360 { String nodeName = info.getNodeName(); int state = info.getState().getNumber(); if (state < AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY.length) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, nodeName + AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY[state]); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, nodeName + AutopilotAbilityManager.NODE_INFO_STATE_FIXED_FREQUENCY[state]); } else { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, nodeName + "未知异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, nodeName + "未知异常"); } } } else { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, "未知异常节点"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, "未知异常节点"); } } } else { @@ -96,12 +96,12 @@ public class AutopilotAbility360 { } else { unableAutopilotReason = "未知系统模式"; } - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.SSM, unableAutopilotReason); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.SSM, unableAutopilotReason); } } } else { isAutopilotAbility = false;//是否能启动自动驾驶 - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.LIB, "SSM数据异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, "SSM数据异常"); } if (fsmStatusReasonRespond != null) { int count = fsmStatusReasonRespond.getFsmStatusReasonRespondCount(); @@ -110,11 +110,11 @@ public class AutopilotAbility360 { for (int i = 0; i < count; i++) { String respond = fsmStatusReasonRespond.getFsmStatusReasonRespond(i); if (!TextUtils.isEmpty(respond)) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.FSM, respond); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.FSM, respond); } } if (unableAutopilotReasons == null || unableAutopilotReasons.isEmpty()) { - unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableAutopilotReason.SourceType.LIB, "FSM数据异常"); + unableAutopilotReasons = AutopilotAbilityManager.getInstance().addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, "FSM数据异常"); } } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityManager.java index 7456ff819c..3ddc60d109 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityManager.java @@ -10,9 +10,10 @@ import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.common.Constants; import com.zhidao.support.adas.high.common.CupidLogUtils; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; +import java.util.HashSet; import java.util.Set; import java.util.Timer; import java.util.TimerTask; @@ -79,8 +80,10 @@ public class AutopilotAbilityManager implements AutopilotAbility230.OnAutopilotA } public void setUnableLaunchAutopilotGear(Set unableLaunchAutopilotGear) { - this.unableLaunchAutopilotGear = unableLaunchAutopilotGear; - taxiUnmanned(); + if (unableLaunchAutopilotGear != null) { + this.unableLaunchAutopilotGear = new HashSet<>(unableLaunchAutopilotGear); + taxiUnmanned(); + } } /** @@ -105,11 +108,11 @@ public class AutopilotAbilityManager implements AutopilotAbility230.OnAutopilotA * @param unableAutopilotReason 云隐 * @return 原因列表 */ - protected ArrayList addUnableAutopilotReason(ArrayList unableAutopilotReasons, UnableAutopilotReason.SourceType source, String unableAutopilotReason) { + protected ArrayList addUnableAutopilotReason(ArrayList unableAutopilotReasons, UnableLaunchReason.SourceType source, String unableAutopilotReason) { if (unableAutopilotReasons == null) { unableAutopilotReasons = new ArrayList<>(); } - unableAutopilotReasons.add(new UnableAutopilotReason(source, unableAutopilotReason)); + unableAutopilotReasons.add(new UnableLaunchReason(source, unableAutopilotReason)); return unableAutopilotReasons; } @@ -143,7 +146,7 @@ public class AutopilotAbilityManager implements AutopilotAbility230.OnAutopilotA } @Override - public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons) { + public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons) { if (listener != null) { listener.onAutopilotAbility(isAutopilotAbility, unableAutopilotReasons); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java index 01b40555df..98220d91be 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/CarConfigRespMessage.java @@ -8,6 +8,7 @@ import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.common.CupidLogUtils; +import com.zhidao.support.adas.high.common.ParallelDrivingManager; import com.zhidao.support.adas.high.common.autopilot.ability.AutopilotAbilityManager; import com.zhidao.support.adas.high.protocol.RawData; @@ -24,6 +25,7 @@ public class CarConfigRespMessage extends MyAbstractMessageHandler { carConfigResp = addPersonalParameter(carConfigResp); AdasChannel.calculateTimeConsumingOnDispatchRaw("车机基础信息应答", raw.receiveTime); AutopilotAbilityManager.getInstance().setCarConfig(carConfigResp); + ParallelDrivingManager.getInstance().setCarConfig(carConfigResp); AdasManager.getInstance().setCarConfig(carConfigResp); long nowTime = 0; if (CupidLogUtils.isEnableLog()) diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ChassisStatesMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ChassisStatesMessage.java index edb7d6f1a0..d96347a46b 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ChassisStatesMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ChassisStatesMessage.java @@ -2,6 +2,7 @@ package com.zhidao.support.adas.high.msg; import com.google.protobuf.InvalidProtocolBufferException; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.ParallelDrivingManager; import com.zhidao.support.adas.high.common.autopilot.ability.AutopilotAbilityManager; import com.zhidao.support.adas.high.protocol.RawData; @@ -16,6 +17,7 @@ public class ChassisStatesMessage extends MyAbstractMessageHandler { public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { ChassisStatesOuterClass.ChassisStates chassisStates = ChassisStatesOuterClass.ChassisStates.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); AutopilotAbilityManager.getInstance().setChassisStates(chassisStates); + ParallelDrivingManager.getInstance().setChassisStates(chassisStates); if (adasListener != null) { adasListener.onChassisStates(raw.getHeader(), chassisStates); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java index bc437ddc6f..198b6129de 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java @@ -5,6 +5,7 @@ import android.os.SystemClock; import com.google.protobuf.InvalidProtocolBufferException; import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.ParallelDrivingManager; import com.zhidao.support.adas.high.common.autopilot.ability.AutopilotAbilityManager; import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; @@ -27,6 +28,7 @@ public class VehicleStateMessage extends MyAbstractMessageHandler { if (CupidLogUtils.isEnableLog()) nowTime = SystemClock.elapsedRealtime(); AutopilotAbilityManager.getInstance().setVehicleState(vehicleState); + ParallelDrivingManager.getInstance().setVehicleState(vehicleState); ChassisStatesOuterClass.ChassisStates chassisStates = compatibility(adasListener, raw, vehicleState); if (adasListener != null) { //TODO 暂时关闭老底盘转发 后期 会删除 onVehicleState @@ -113,6 +115,7 @@ public class VehicleStateMessage extends MyAbstractMessageHandler { } ChassisStatesOuterClass.ChassisStates chassisStates = builder.build(); AutopilotAbilityManager.getInstance().setChassisStates(chassisStates); + ParallelDrivingManager.getInstance().setChassisStates(chassisStates); return chassisStates; }