From 7711a19995105632db254370daf05d7437edb133 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 16 Oct 2024 19:03:04 +0800 Subject: [PATCH] =?UTF-8?q?[6.7.0]=E5=86=B7=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/ui/widget/ColdStartView.kt | 87 ++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) 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 f51cc77fa6..faab437b2d 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 @@ -56,6 +56,8 @@ class ColdStartView @JvmOverloads constructor( private var ssmConnectStatus = false //SSM连接状态,默认是未连接 private var coldStartStatus = false //冷启动状态,默认是未冷启动成功 + private var ipcRotationAnim: ObjectAnimator?= null //域控连接状态动画 + private var ssmRotationAnim: ObjectAnimator?= null //SSM连接状态动画 private var connectSSMTimer: CountDownTimer?= null //连接SSM等待倒计时 @@ -100,12 +102,69 @@ class ColdStartView @JvmOverloads constructor( true }else{ //域控连接失败 - showIPCConnectFailView(reason) + when(status){ + //主动断开连接 + AdasConstants.IpcConnectionStatus.DISCONNECTED ->{ + showIPCConnectFailView("域控未连接或主动断开连接,建议重启车辆并上报问题") + } + //连接中 + AdasConstants.IpcConnectionStatus.CONNECTING ->{ + showIPCConnecting() + } + //重连中(定时器) + AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER ->{ + showIPCConnecting() + } + //重连中(网络监听) + AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK ->{ + showIPCConnecting() + } + //连接异常(鹰眼与域控连接失败、无法连接、非正常断开等) + AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION ->{ + showIPCConnectFailView("域控连接异常,建议检查WiFi连接情况及域控是否开机") + } + //非法地址(连接模式为指定地址时:表示当前鹰眼调用连接时传入的域控地址错误或不符合规则【不修改默认配置不会出现此问题】; + // 连接模式为PING模式时:表示传入的PING地址列表存在问题) + AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS ->{ + showIPCConnectFailView("非法域控地址,建议重启车辆并上报问题") + } + //正在搜索域控地址 + AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS ->{ + showIPCConnecting() + } + //找不到可用地址(域控地址列表中的全部地址均无法连通 + // 【不修改默认配置的情况下需要排查PAD是否连接车载路由器、工控机是否连接车载路由器、 + // 工控机是否开机等】) + AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS ->{ + showIPCConnectFailView("找不到域控可用地址,建议检查车载路由器及域控是否开机") + } + //域控证书认证异常 + AdasConstants.IpcConnectionStatus.CERTIFICATION_FAILED ->{ + showIPCConnectFailView("域控证书认证异常") + } + //心跳超时(连接域控成功后在一段时间内未收到域控任何数据),超时时间: + AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT ->{ + showIPCConnectFailView("心跳超时(连接域控成功后在一段时间内未收到域控任何数据)") + } + //協議不匹配(被连接的域控端非WebSocket协议【可能性非常低】) + AdasConstants.IpcConnectionStatus.PROTOCOL_MISMATCH ->{ + showIPCConnectFailView("协议不匹配") + } + //域控主动断开连接(域控主动发起断开WebSocket连接 + AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED ->{ + showIPCConnectFailView("域控主动断开连接,建议重启车辆并上报问题") + } + } false } } } + + + + + /** * 状态查询应答 * @param status 数据 @@ -230,6 +289,8 @@ class ColdStartView @JvmOverloads constructor( * 展示域控连接成功视图 */ private fun showIPCConnectSuccessView(){ + ipcRotationAnim?.cancel() + ivIpcConnectStatus.rotation = 0f 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) @@ -261,6 +322,11 @@ class ColdStartView @JvmOverloads constructor( * 展示域控连接失败视图 */ private fun showIPCConnectFailView(reason: String?){ + if(tvIpcConnectContent.text.isNotEmpty() && tvIpcConnectContent.text.equals(reason)){ + return + } + ipcRotationAnim?.cancel() + ivIpcConnectStatus.rotation = 0f ivIpcConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_fail)) reason?.let { tvIpcConnectContent.text = it @@ -276,6 +342,25 @@ class ColdStartView @JvmOverloads constructor( } + private fun showIPCConnecting(){ + ivIpcConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_process)) + tvIpcConnectContent.text = "正在连接域控..." + ipcRotationAnim = ObjectAnimator.ofFloat(ivIpcConnectStatus, "rotation", 0f, 360f) + ipcRotationAnim?.repeatCount = ValueAnimator.INFINITE + ipcRotationAnim?.repeatMode = ValueAnimator.RESTART + ipcRotationAnim?.duration = 1500 + ipcRotationAnim?.interpolator = LinearInterpolator() + ipcRotationAnim?.start() + //隐藏SSM相关视图 + viewSsmConnectDivider.visibility = View.GONE + ivSsmConnectStatus.visibility = View.GONE + tvSsmConnectContent.visibility = View.GONE + //隐藏冷启动相关视图 + viewColdStartDivider.visibility = View.GONE + ivColdStartStatus.visibility = View.GONE + tvColdStartContent.visibility = View.GONE + } + /** * SSM连接成功 */