[6.4.0][启动自驾指引] 添加是否可启自驾的状态监听

This commit is contained in:
renwj
2024-04-19 15:31:15 +08:00
parent addac36782
commit 00cb85ad69
5 changed files with 103 additions and 50 deletions

View File

@@ -39,7 +39,6 @@ import com.tencent.matrix.trace.config.TraceConfig
import com.zhjt.mogo_core_function_devatools.apm.*
import com.mogo.eagle.core.function.api.upgrade.*
import com.mogo.weak.network.SdtManager
import com.zhjt.mogo.adas.data.bean.ReceivedAck.Status
import com.zhjt.mogo_core_function_devatools.adas.PowerOffManager
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
@@ -60,6 +59,7 @@ import com.zhjt.mogo_core_function_devatools.perf.MoGoCpuUsageProviderImpl
import com.zhjt.mogo_core_function_devatools.report.IPCReportManager.Companion.iPCReportManager
import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager
import com.zhjt.mogo_core_function_devatools.status.StatusManager
import com.zhjt.mogo_core_function_devatools.status.entity.IAutopilotPreLaunchStatus
import com.zhjt.mogo_core_function_devatools.status.entity.RouteDownloadStatus
import com.zhjt.mogo_core_function_devatools.status.ui.AutoPilotLaunchBeforeView
import com.zhjt.mogo_core_function_devatools.strict.*
@@ -71,7 +71,6 @@ import com.zhjt.mogo_core_function_devatools.weaknetwork.WeakNetworkStrategy
import com.zhjt.service.chain.ChainLog
import java.lang.ref.WeakReference
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.CopyOnWriteArrayList
@Route(path = MogoServicePaths.PATH_DEVA_TOOLS)
class DevaToolsProvider : IDevaToolsProvider {
@@ -102,14 +101,28 @@ class DevaToolsProvider : IDevaToolsProvider {
private var container: WeakReference<ViewGroup>? = null
private val downloadCallbacks by lazy { ConcurrentHashMap<String, ArrayList<(Int) -> Unit>>() }
private val startAutopilotCallbacks by lazy { ConcurrentHashMap<String, ArrayList<(Boolean) -> Unit>>() }
private val statusListener by lazy {
object : StatusManager.IStatusListener {
override fun onStatusChanged(data: List<com.zhjt.mogo_core_function_devatools.status.entity.Status>, hasException: Boolean) {
data.filterIsInstance(RouteDownloadStatus::class.java).forEach { s ->
downloadCallbacks.values.flatten().forEach { listener ->
listener.invoke(s.state.ordinal)
var hasExceptionForAutopilotBefore = false
data.forEach { s ->
if (s is RouteDownloadStatus) {
runCatching {
downloadCallbacks.values.flatten().forEach { listener ->
listener.invoke(s.state.ordinal)
}
}
}
if (s is IAutopilotPreLaunchStatus && s.isException()) {
hasExceptionForAutopilotBefore = true
runCatching { startAutopilotCallbacks.values.flatten().forEach { it.invoke(false) } }
return@forEach
}
}
if (!hasExceptionForAutopilotBefore) {
runCatching { startAutopilotCallbacks.values.flatten().forEach { it.invoke(true) } }
}
}
}
@@ -518,4 +531,12 @@ class DevaToolsProvider : IDevaToolsProvider {
override fun unRegisterRouteDownloadListener(tag: String) {
downloadCallbacks.remove(tag)
}
override fun registerStartAutopilotStateListener(tag: String, block: (isCanStartAutopilot: Boolean) -> Unit) {
startAutopilotCallbacks.getOrPut(tag) { ArrayList() } += block
}
override fun unRegisterStartAutopilotStateListener(tag: String) {
startAutopilotCallbacks.remove(tag)
}
}

View File

@@ -1,5 +1,7 @@
package com.zhjt.mogo_core_function_devatools.status.entity
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.zhjt.mogo_core_function_devatools.status.entity.RouteState.RouteFailed
import com.zhjt.mogo_core_function_devatools.status.entity.RouteState.RouteNone
import com.zhjt.mogo_core_function_devatools.status.entity.RouteState.RouteStart
@@ -311,7 +313,7 @@ data class SteerStatus(val angle: Float, var isError: Boolean = false): Status()
override fun isException(): Boolean {
return isError
return isError && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
}
override fun equals(other: Any?): Boolean {
@@ -339,7 +341,7 @@ data class SteerStatus(val angle: Float, var isError: Boolean = false): Status()
data class AcceleratorStatus(val angle: Float, var isError: Boolean = false): Status(), IAutopilotPreLaunchStatus {
override fun isException(): Boolean {
return isError
return isError && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
}
override fun equals(other: Any?): Boolean {
@@ -369,7 +371,7 @@ data class AcceleratorStatus(val angle: Float, var isError: Boolean = false): St
data class BrakeStatus(val angle: Float, var isError: Boolean = false): Status(), IAutopilotPreLaunchStatus {
override fun isException(): Boolean {
return isError
return isError && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
}
override fun equals(other: Any?): Boolean {
@@ -398,7 +400,7 @@ data class BrakeStatus(val angle: Float, var isError: Boolean = false): Status()
data class DoubleFlashStatus(val type: Int, var isError: Boolean = false): Status(), IAutopilotPreLaunchStatus {
override fun isException(): Boolean {
return isError
return isError && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
}
override fun equals(other: Any?): Boolean {
@@ -426,7 +428,7 @@ data class DoubleFlashStatus(val type: Int, var isError: Boolean = false): Statu
data class GearStatus(val value: Int, var isError: Boolean = false): Status(), IAutopilotPreLaunchStatus {
override fun isException(): Boolean {
return isError
return isError && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
}
override fun equals(other: Any?): Boolean {
@@ -462,7 +464,7 @@ enum class RouteState {
data class RouteDownloadStatus(val lineId: Long = -1, val state: RouteState = RouteNone): Status(), IAutopilotPreLaunchStatus {
override fun isException(): Boolean {
return state == RouteStart || state == RouteFailed
return (state == RouteStart || state == RouteFailed) && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
}
override fun equals(other: Any?): Boolean {