From 6042831e57e54fb105f8789bd0e32cf4b5ed734f Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 10 Feb 2025 17:11:23 +0800 Subject: [PATCH] =?UTF-8?q?[6.10.0]=E5=86=B7=E5=90=AF=E5=8A=A8=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=95=85=E9=9A=9C=E7=A0=81=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coldstart/ColdStartFaultAdapter.kt | 40 +++++++++++ .../src/main/res/layout/item_fault_code.xml | 10 +++ .../function/hmi/ui/widget/ColdStartView.kt | 62 ++++++++++++++++-- .../drawable-xhdpi/icon_cold_start_fault.png | Bin 0 -> 1550 bytes .../drawable-xhdpi/icon_cold_start_soft.png | Bin 0 -> 1364 bytes .../drawable/bg_cold_start_fault_divider.xml | 10 +++ .../src/main/res/layout/view_cold_start.xml | 45 ++++++++++++- .../src/main/res/values/strings.xml | 3 +- 8 files changed, 160 insertions(+), 10 deletions(-) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartFaultAdapter.kt create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_fault_code.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_cold_start_fault.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_cold_start_soft.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_cold_start_fault_divider.xml diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartFaultAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartFaultAdapter.kt new file mode 100644 index 0000000000..727ee685d4 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartFaultAdapter.kt @@ -0,0 +1,40 @@ +package com.zhjt.mogo_core_function_devatools.coldstart + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.zhjt.mogo_core_function_devatools.R + +/** + * 冷启动故障列表适配器 + */ +class ColdStartFaultAdapter: RecyclerView.Adapter() { + + private var faultList: ArrayList ?= null + + fun setData(list: ArrayList){ + faultList = list + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FaultInfoHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_fault_code, parent, false) + return FaultInfoHolder(view) + } + + override fun onBindViewHolder(holder: FaultInfoHolder, position: Int) { + faultList?.let { + holder.tvFaultCode.text = it[position] + } + } + + override fun getItemCount() = faultList?.size ?: 0 + + class FaultInfoHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var tvFaultCode: TextView = itemView.findViewById(R.id.tvFaultCode) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_fault_code.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_fault_code.xml new file mode 100644 index 0000000000..0939a9e9ca --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_fault_code.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt index ba47e9f56c..4aa032b2cb 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt @@ -30,14 +30,18 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.zhjt.mogo.adas.data.AdasConstants import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartAnalyticsManager import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartConfig +import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartFaultAdapter import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartNodeAdapter import com.zhjt.mogo_core_function_devatools.ota.OTAUpgradeConfig import kotlinx.android.synthetic.main.view_cold_start.view.ivColdStartNow import kotlinx.android.synthetic.main.view_cold_start.view.ivColdStartStatus +import kotlinx.android.synthetic.main.view_cold_start.view.ivFaultIcon import kotlinx.android.synthetic.main.view_cold_start.view.ivIpcConnectStatus import kotlinx.android.synthetic.main.view_cold_start.view.ivNodeListMask +import kotlinx.android.synthetic.main.view_cold_start.view.ivSoftIcon import kotlinx.android.synthetic.main.view_cold_start.view.ivSsmConnectStatus import kotlinx.android.synthetic.main.view_cold_start.view.ivWifiConnectStatus +import kotlinx.android.synthetic.main.view_cold_start.view.rvFaultList import kotlinx.android.synthetic.main.view_cold_start.view.rvNodeList import kotlinx.android.synthetic.main.view_cold_start.view.tvColdStartContent import kotlinx.android.synthetic.main.view_cold_start.view.tvColdStartNow @@ -45,6 +49,7 @@ import kotlinx.android.synthetic.main.view_cold_start.view.tvIpcConnectContent import kotlinx.android.synthetic.main.view_cold_start.view.tvSsmConnectContent import kotlinx.android.synthetic.main.view_cold_start.view.tvSystemStartupTitle import kotlinx.android.synthetic.main.view_cold_start.view.tvWifiConnectContent +import kotlinx.android.synthetic.main.view_cold_start.view.viewFaultDivider import system_master.SsmInfo import system_master.SystemStatusInfo import java.util.Locale @@ -87,12 +92,14 @@ class ColdStartView @JvmOverloads constructor( private var connectColdStartTimer: CountDownTimer?= null //连接冷启动等待倒计时 private val nodeList = ArrayList() + private val faultList = ArrayList() private var coldStartResultListener: ColdStartResultListener ?= null private var newColdStart: Boolean = false //SSM是否支持新版冷启动 private var coldStartNodeAdapter: ColdStartNodeAdapter ?= null + private var coldStartFaultAdapter: ColdStartFaultAdapter ?= null private var reason: String = "" //上报原因 @@ -102,11 +109,18 @@ class ColdStartView @JvmOverloads constructor( } private fun initView(){ + //软件节点启动状态列表适配器设置 val linearLayoutManager = LinearLayoutManager(context) linearLayoutManager.orientation = LinearLayoutManager.VERTICAL coldStartNodeAdapter = ColdStartNodeAdapter() rvNodeList.adapter =coldStartNodeAdapter rvNodeList.layoutManager = linearLayoutManager + //故障码列表适配器设置 + val faultLinearLayoutManager = LinearLayoutManager(context) + faultLinearLayoutManager.orientation = LinearLayoutManager.VERTICAL + coldStartFaultAdapter = ColdStartFaultAdapter() + rvFaultList.adapter = coldStartFaultAdapter + rvFaultList.layoutManager = faultLinearLayoutManager //立即用车 tvColdStartNow.setOnClickListener{ hideColdStartView() @@ -302,13 +316,6 @@ class ColdStartView @JvmOverloads constructor( Log.i(TAG,"旧冷启动状态="+it.processStatus) Log.i(TAG,"旧冷启动超时原因="+it.processTimeoutReason) Log.i(TAG,"硬件故障Node数量="+it.hardwareNodeCount) - it.hardwareNodeList.forEach {startFlt-> - Log.i(TAG,"硬件故障 startFlt.fltId="+ startFlt.fltId) - } - Log.i(TAG,"其他故障数量="+it.otherFltsCount) - it.otherFltsList.forEach {startFlt-> - Log.i(TAG,"其他故障 startFlt.fltId="+startFlt.fltId) - } ThreadUtils.runOnUiThread { tvColdStartContent.text = getColdStartEventStatus(it.eventStatus) if(it.eventStatus == SsmInfo.CSState.COLD_START_READY){ @@ -355,12 +362,32 @@ class ColdStartView @JvmOverloads constructor( nodeList.add(nodeInfo) } } + if(nodeList.size > 0){ + ivSoftIcon.visibility = View.VISIBLE + } coldStartNodeAdapter?.setData(nodeList) if(nodeList.size > 12){ ivNodeListMask.visibility = View.VISIBLE }else{ ivNodeListMask.visibility = View.GONE } + //故障码列表 + faultList.clear() + it.hardwareNodeList.forEach {startFlt-> + Log.i(TAG,"硬件故障 startFlt.fltId="+ startFlt.fltId) + faultList.add(startFlt.fltId) + } + Log.i(TAG,"其他故障数量="+it.otherFltsCount) + it.otherFltsList.forEach {startFlt-> + Log.i(TAG,"其他故障 startFlt.fltId="+startFlt.fltId) + faultList.add(startFlt.fltId) + } + if(faultList.size>0){ + viewFaultDivider.visibility = View.VISIBLE + ivFaultIcon.visibility = View.VISIBLE + rvFaultList.visibility = View.VISIBLE + coldStartFaultAdapter?.setData(faultList) + } } } } @@ -482,8 +509,13 @@ class ColdStartView @JvmOverloads constructor( tvColdStartContent.text = resources.getString(R.string.cold_start_wait) tvColdStartContent.setTextColor(ContextCompat.getColor(context, R.color.white)) //隐藏冷启动相关视图 + ivSoftIcon.visibility = View.GONE rvNodeList.visibility = View.GONE ivNodeListMask.visibility = View.GONE + viewFaultDivider.visibility = View.GONE + ivFaultIcon.visibility = View.GONE + rvFaultList.visibility = View.GONE + //域控连接成功埋点统计 reason = "域控连接成功" ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ipcConnectSuccess,reason) @@ -524,8 +556,12 @@ class ColdStartView @JvmOverloads constructor( tvColdStartContent.text = resources.getString(R.string.cold_start_wait) tvColdStartContent.setTextColor(ContextCompat.getColor(context, R.color.white)) //隐藏冷启动相关视图 + ivSoftIcon.visibility = View.GONE rvNodeList.visibility = View.GONE ivNodeListMask.visibility = View.GONE + viewFaultDivider.visibility = View.GONE + ivFaultIcon.visibility = View.GONE + rvFaultList.visibility = View.GONE //域控连接失败埋点统计 this.reason = "域控连接失败:$failReason" ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ipcConnectFail,reason) @@ -574,8 +610,12 @@ class ColdStartView @JvmOverloads constructor( tvColdStartContent.text = resources.getString(R.string.cold_start_wait) tvColdStartContent.setTextColor(ContextCompat.getColor(context, R.color.white)) //隐藏Topic列表 + ivSoftIcon.visibility = View.GONE rvNodeList.visibility = View.GONE ivNodeListMask.visibility = View.GONE + viewFaultDivider.visibility = View.GONE + ivFaultIcon.visibility = View.GONE + rvFaultList.visibility = View.GONE ipcConnectStatus = false ssmConnectStatus = false coldStartStatus = false @@ -619,8 +659,12 @@ class ColdStartView @JvmOverloads constructor( tvColdStartContent.text = resources.getString(R.string.cold_start_wait) tvColdStartContent.setTextColor(ContextCompat.getColor(context, R.color.white)) //隐藏冷启动相关视图 + ivSoftIcon.visibility = View.GONE rvNodeList.visibility = View.GONE ivNodeListMask.visibility = View.GONE + viewFaultDivider.visibility = View.GONE + ivFaultIcon.visibility = View.GONE + rvFaultList.visibility = View.GONE if(ipcConnectStatus){ showIPCConnectSuccessView() } @@ -657,8 +701,12 @@ class ColdStartView @JvmOverloads constructor( tvColdStartContent.text = resources.getString(R.string.cold_start_wait) tvColdStartContent.setTextColor(ContextCompat.getColor(context, R.color.white)) //隐藏冷启动相关视图 + ivSoftIcon.visibility = View.GONE rvNodeList.visibility = View.GONE ivNodeListMask.visibility = View.GONE + viewFaultDivider.visibility = View.GONE + ivFaultIcon.visibility = View.GONE + rvFaultList.visibility = View.GONE } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_cold_start_fault.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_cold_start_fault.png new file mode 100644 index 0000000000000000000000000000000000000000..207e8cb7501715fd541e7bf9ba2070b31a0496d1 GIT binary patch literal 1550 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 Wta@Y7^Zs!F0000 + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml index 3d420a27bc..5a92068a0b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml @@ -142,9 +142,21 @@ android:layout_marginStart="@dimen/dp_15" /> + + + + + + + + 系统启动成功,即将进入主页 系统启动异常 冷启动列表遮罩 - + 冷启动软件节点启动状态图标 + 冷启动软件硬件故障图标 立即用车 跳过流程或启动失败,均可能会导致自动驾驶等功能无法使用