[6.7.0]冷启动

This commit is contained in:
xuxinchao
2024-10-16 18:16:39 +08:00
parent b10110c560
commit 83bbcc1a9c
3 changed files with 29 additions and 132 deletions

View File

@@ -3,7 +3,9 @@ package com.mogo.eagle.core.function.hmi.ui.widget
import android.animation.ObjectAnimator
import android.animation.ValueAnimator
import android.content.Context
import android.os.Build
import android.os.CountDownTimer
import android.text.Html
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
@@ -70,128 +72,7 @@ class ColdStartView @JvmOverloads constructor(
}
private fun initView(){
var num = 1
tvSystemStartupTitle.setOnClickListener {
if(num == 1){
val state = SsmInfo.ModeState.MODE_RUN_READY
val info = SsmInfo.SsmStatusInf
.newBuilder()
.setModeState(state)
.setAutoPilotReady(false)
.setRemotePilotReady(false)
.build()
CallerAutoPilotStatusListenerManager.invokeSystemStatus(info)
num = 2
}
else if(num == 2){
val nodeOne = SsmInfo.ColdStartNode
.newBuilder()
.setNodeName("毫米波融合")
.setDesc("")
.setStatus(SsmInfo.NodeStatus.NODE_FINISH)
.setEventCode("")
.build()
val nodeTwo = SsmInfo.ColdStartNode
.newBuilder()
.setNodeName("后融合")
.setDesc("")
.setStatus(SsmInfo.NodeStatus.NODE_STARTING)
.setEventCode("")
.build()
val nodeThree = SsmInfo.ColdStartNode
.newBuilder()
.setNodeName("控制节点")
.setDesc("")
.setStatus(SsmInfo.NodeStatus.NODE_STARTING)
.setEventCode("")
.build()
val nodeFour = SsmInfo.ColdStartNode
.newBuilder()
.setNodeName("地图引擎")
.setDesc("")
.setStatus(SsmInfo.NodeStatus.NODE_STARTING)
.setEventCode("")
.build()
val list = ArrayList<SsmInfo.ColdStartNode>()
list.add(nodeOne)
list.add(nodeTwo)
list.add(nodeThree)
list.add(nodeFour)
val coldStartState = SsmInfo.ColdStartState
.newBuilder()
.setEventStatus(SsmInfo.CSState.COLD_START_STARTING)
.setProcessStatus(SsmInfo.CSState.COLD_START_STARTING)
.addAllNode(list)
.build()
CallerColdStartStateListenerManager.invokeColdStartState(
123,
System.currentTimeMillis(),
false,
coldStartState
)
num = 3
}else if(num == 3){
val nodeOne = SsmInfo.ColdStartNode
.newBuilder()
.setNodeName("毫米波融合")
.setDesc("")
.setStatus(SsmInfo.NodeStatus.NODE_FINISH)
.setEventCode("")
.build()
val nodeTwo = SsmInfo.ColdStartNode
.newBuilder()
.setNodeName("后融合")
.setDesc("")
.setStatus(SsmInfo.NodeStatus.NODE_FINISH)
.setEventCode("")
.build()
val nodeThree = SsmInfo.ColdStartNode
.newBuilder()
.setNodeName("控制节点")
.setDesc("")
.setStatus(SsmInfo.NodeStatus.NODE_FINISH)
.setEventCode("")
.build()
val nodeFour = SsmInfo.ColdStartNode
.newBuilder()
.setNodeName("地图引擎")
.setDesc("")
.setStatus(SsmInfo.NodeStatus.NODE_FINISH)
.setEventCode("")
.build()
val list = ArrayList<SsmInfo.ColdStartNode>()
list.add(nodeOne)
list.add(nodeTwo)
list.add(nodeThree)
list.add(nodeFour)
val coldStartState = SsmInfo.ColdStartState
.newBuilder()
.setEventStatus(SsmInfo.CSState.COLD_START_READY)
.setProcessStatus(SsmInfo.CSState.COLD_START_READY)
.addAllNode(list)
.build()
CallerColdStartStateListenerManager.invokeColdStartState(
123,
System.currentTimeMillis(),
false,
coldStartState
)
}
}
}
override fun onAttachedToWindow() {
@@ -213,7 +94,9 @@ class ColdStartView @JvmOverloads constructor(
ThreadUtils.runOnUiThread {
ipcConnectStatus = if(status == AdasConstants.IpcConnectionStatus.CONNECTED){
//域控连接成功
showIPCConnectSuccessView()
if(!ipcConnectStatus){
showIPCConnectSuccessView()
}
true
}else{
//域控连接失败
@@ -272,13 +155,19 @@ class ColdStartView @JvmOverloads constructor(
tvColdStartContent.text = getColdStartEventStatus(it.eventStatus)
nodeStatusSb.clear()
it.nodeList.forEach {node->
nodeStatusSb.append("")
nodeStatusSb.append(node.nodeName)
nodeStatusSb.append(" ")
nodeStatusSb.append(getColdStartNodeStatus(node.status))
nodeStatusSb.append("\n")
val nodeDetail = node.nodeName+ " " + getColdStartNodeStatus(node.status)
if(node.status == SsmInfo.NodeStatus.NODE_FAILED || node.status ==SsmInfo.NodeStatus.NODE_TIMEOUT){
nodeStatusSb.append("<font color=\"#FFCD3D\">${nodeDetail}</font>")
}else{
nodeStatusSb.append("<font color=\"#B2FFFFFF\">${nodeDetail}</font>")
}
nodeStatusSb.append("<br>")
}
tvColdStartNodeState.text = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml(nodeStatusSb.toString(), Html.FROM_HTML_MODE_LEGACY)
} else {
Html.fromHtml(nodeStatusSb.toString())
}
tvColdStartNodeState.text = nodeStatusSb.toString()
}
}
}
@@ -318,7 +207,7 @@ class ColdStartView @JvmOverloads constructor(
return when(nodeStatus){
// 启动中
SsmInfo.NodeStatus.NODE_STARTING->{
"启动中"
"启动中"
}
// 启动成功
SsmInfo.NodeStatus.NODE_FINISH->{
@@ -341,6 +230,7 @@ class ColdStartView @JvmOverloads constructor(
* 展示域控连接成功视图
*/
private fun showIPCConnectSuccessView(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_in_progress_title)
ivIpcConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_success))
tvIpcConnectContent.text = resources.getString(R.string.ipc_connect_success)
//开启连接SSM倒计时
@@ -358,6 +248,9 @@ class ColdStartView @JvmOverloads constructor(
//设置SSM连接文案为连接中
tvSsmConnectContent.text = resources.getString(R.string.ssm_connect_loading)
tvSsmConnectContent.setTextColor(ContextCompat.getColor(context, android.R.color.white))
viewSsmConnectDivider.visibility = View.VISIBLE
ivSsmConnectStatus.visibility = View.VISIBLE
tvSsmConnectContent.visibility = View.VISIBLE
//隐藏冷启动相关视图
viewColdStartDivider.visibility = View.GONE
ivColdStartStatus.visibility = View.GONE
@@ -402,6 +295,7 @@ class ColdStartView @JvmOverloads constructor(
* 展示SSM连接成功视图
*/
private fun showSSMConnectSuccessView(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_in_progress_title)
//取消旋转动画
ssmRotationAnim?.cancel()
//取消连接SSM超时等待倒计时
@@ -430,6 +324,7 @@ class ColdStartView @JvmOverloads constructor(
* 展示SSM连接失败视图
*/
private fun showSSMConnectFailView(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_fail_title)
//取消旋转动画
ssmRotationAnim?.cancel()
ivSsmConnectStatus.rotation = 0f
@@ -486,6 +381,7 @@ class ColdStartView @JvmOverloads constructor(
* 冷启动失败视图
*/
private fun showColdStartFailView(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_fail_title)
coldStartRotationAnim?.cancel()
ivColdStartStatus.rotation = 0f
ivColdStartStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_fail))

View File

@@ -115,9 +115,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tvColdStartContent"
app:layout_constraintLeft_toRightOf="@id/ivColdStartStatus"
android:textSize="@dimen/sp_36"
android:textColor="@color/white"
app:layout_constraintLeft_toLeftOf="@id/tvColdStartContent"
android:textSize="@dimen/sp_32"
android:textColor="#B2FFFFFF"
/>

View File

@@ -219,6 +219,7 @@
<string name="ipc_connect_success">已连接域控</string>
<string name="cold_start_in_progress_title">系统启动中…</string>
<string name="cold_start_success_title">系统启动成功</string>
<string name="cold_start_fail_title">系统启动失败</string>
<string name="ssm_connect_loading">正在连接SSM…</string>
<string name="ssm_connect_success">已连接SSM</string>
<string name="ssm_connect_fail">SSM连接异常建议重启车辆并上报问题</string>