[6.6.0][FSM] feat: 状态栏增加 FSM 状态,增加 FSM 异常时消息弹框;

This commit is contained in:
aibingbing
2024-08-14 16:56:22 +08:00
parent d2937350ac
commit a9d938f093
9 changed files with 255 additions and 6 deletions

View File

@@ -8,6 +8,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerFsm2024ListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo_core_function_devatools.status.entity.FSMStateCode
import com.zhjt.mogo_core_function_devatools.status.entity.FSMStatus
@@ -16,6 +18,7 @@ import fsm.Fsm2024
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.util.concurrent.atomic.AtomicReference
import kotlin.random.Random
internal class FSMImpl(ctx: Context) : IFlow<FSMStatus>(ctx), IMoGoAutopilotStatusListener,
IMoGoFsm2024Listener {
@@ -49,6 +52,24 @@ internal class FSMImpl(ctx: Context) : IFlow<FSMStatus>(ctx), IMoGoAutopilotStat
CallerLogger.d("$M_DEVA$TAG", "-- onCreate --")
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerFsm2024ListenerManager.addListener(TAG, this)
//TODO
test()
test1()
}
fun test() {
send(FSMStatus(FSMStateCode.Error, "检查到异常不能启动自驾time=${DateTimeUtils.getCurrentDateTime()}"))
UiThreadHandler.postDelayed({
test()
},3000L)
}
fun test1() {
send(FSMStatus(FSMStateCode.Normal, "状态正常"))
UiThreadHandler.postDelayed({
test1()
}, Random.nextInt(1,10) * 1000L)
}
override fun onAutopilotIpcConnectStatusChanged(
@@ -56,15 +77,15 @@ internal class FSMImpl(ctx: Context) : IFlow<FSMStatus>(ctx), IMoGoAutopilotStat
reason: String?
) {
super.onAutopilotIpcConnectStatusChanged(status, reason)
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
CallerLogger.d("$M_DEVA$TAG", "工控机断开了....")
fsmStateMsg.set(null)
send(FSMStatus(FSMStateCode.IpcNotConnected, "工控机断开了"))
} else {
CallerLogger.d("$M_DEVA$TAG", "工控机已连接....")
if (CallerAutoPilotStatusListenerManager.isConnect()) {
CallerLogger.d("$M_DEVA$TAG", "工控机已连接")
launch(Dispatchers.Default) {
CallerAutoPilotControlManager.sendStatusQueryReq()
}
} else {
CallerLogger.d("$M_DEVA$TAG", "工控机断开了....")
fsmStateMsg.set(null)
send(FSMStatus(FSMStateCode.IpcNotConnected, "工控机断开了"))
}
}

View File

@@ -137,15 +137,19 @@ internal class StatusAdapter(val ctx: Context, var data: List<Status>): Recycler
when (status.state) {
FSMStateCode.IpcNotConnected -> {
iv.setImageDrawable(null)
CallerHmiManager.dismissFSMStatusDetailWindow()
}
FSMStateCode.NoneExist -> {
iv.background = ContextCompat.getDrawable(itemView.context, drawable.icon_dev_status_fsm_not_exist)
CallerHmiManager.dismissFSMStatusDetailWindow()
}
FSMStateCode.Normal -> {
iv.background = ContextCompat.getDrawable(itemView.context, drawable.icon_dev_status_fsm_normal)
CallerHmiManager.dismissFSMStatusDetailWindow()
}
FSMStateCode.Error -> {
iv.background = ContextCompat.getDrawable(itemView.context, drawable.icon_dev_status_fsm_error)
CallerHmiManager.showFSMStatusDetailWindow("FSM异常", "#FF3B3B", status.desc)
}
}
}