diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index c6262754d8..a728266da4 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -155,10 +155,12 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener { AIAssist.getInstance(it).speakTTSVoice("识别故障即将停车,请注意观察,小心接管") } CallerHmiManager.toggleSafetyStopCarWarning(true) + } } if (state == Fsm2024.State.SAFETY_STOPPED) { if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + CallerHmiManager.toggleSafetyStopCarWarning(false) AppStateManager.currentActivity()?.also { AIAssist.getInstance(it).speakTTSVoice("请接管恢复停车状态") } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/IFlow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/IFlow.kt index 7f81c1f4b2..6544a13f50 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/IFlow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/IFlow.kt @@ -39,4 +39,6 @@ internal abstract class IFlow< T : Status>(val ctx: Context) : CoroutineScope { open fun onDestroy() { chl.safeCancel() } + + fun peek(): T? = chl.tryReceive().getOrNull() } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/fsm/SafetyStopCarImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/fsm/SafetyStopCarImpl.kt index 9c14dcf911..19b1187e0f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/fsm/SafetyStopCarImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/fsm/SafetyStopCarImpl.kt @@ -1,21 +1,30 @@ package com.zhjt.mogo_core_function_devatools.status.flow.fsm import android.content.Context +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoFsm2024Listener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerFsm2024ListenerManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.zhjt.mogo_core_function_devatools.status.entity.SafetyStopCarStatus import com.zhjt.mogo_core_function_devatools.status.flow.IFlow import fsm.Fsm2024 import fsm.Fsm2024.FSMStateMsg -internal class SafetyStopCarImpl(ctx: Context): IFlow(ctx), IMoGoFsm2024Listener { +internal class SafetyStopCarImpl(ctx: Context): IFlow(ctx), IMoGoFsm2024Listener, IMoGoAutopilotStatusListener { companion object { private const val TAG = "SafetyStopCarImpl" } + @Volatile + private var lastState: Int = -1 + override fun onCreate() { CallerFsm2024ListenerManager.addListener(TAG, this) + CallerAutoPilotStatusListenerManager.addListener(TAG, this) } @@ -28,5 +37,22 @@ internal class SafetyStopCarImpl(ctx: Context): IFlow(ctx), override fun onDestroy() { super.onDestroy() CallerFsm2024ListenerManager.removeListener(TAG) + CallerAutoPilotStatusListenerManager.removeListener(TAG) + } + + override fun onAutopilotStatusResponse(state: Int) { + super.onAutopilotStatusResponse(state) + Logger.d(TAG, "--- onAutopilotStatusResponse --- 1 ---: $state") + if (lastState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING && lastState != state) { + //从自驾转成非自驾 + Logger.d(TAG, "--- onAutopilotStatusResponse --- 2 ---: $state") + if (peek()?.data?.functionState == Fsm2024.State.SAFETY_STOP) { + Logger.d(TAG, "--- onAutopilotStatusResponse --- 3 ---: $state") + CallerHmiManager.toggleSafetyStopCarWarning(false) + } + } + if (lastState != state) { + lastState = state + } } } \ No newline at end of file