From 9cee7a84e79c4459738a6d22008e2886d8d0e33b Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 29 Mar 2022 14:13:03 +0800 Subject: [PATCH] fix bug of push log func and add trace of car status log --- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 70 +- .../logcatch/MogoLogCatchManager.kt | 42 +- .../trace/TraceManager.kt | 33 +- .../hmi/ui/setting/DebugSettingView.kt | 540 +++++++------ .../main/res/layout/view_debug_setting.xml | 761 ++++++++---------- .../core/data/deva/chain/ChainConstant.kt | 11 +- .../zhidao/support/adas/high/AdasChannel.java | 8 +- .../support/adas/high/socket/FpgaSocket.java | 12 +- 8 files changed, 749 insertions(+), 728 deletions(-) diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt index 1c76e0431c..92fcd2e26d 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -10,11 +10,15 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_C import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ROUTE import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_STATUS import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_ADAS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_DATA +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY +import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeArriveAtStation @@ -35,7 +39,6 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.module.common.MogoApisHandler import com.mogo.module.common.datacenter.SnapshotLocationDataCenter -import com.mogo.module.service.MarkerServiceHandler import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo @@ -64,6 +67,7 @@ class MoGoAdasListenerImpl : OnAdasListener { //车前引导线 @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY, linkCode = CHAIN_LINK_ADAS, endpoint = PAD, nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY, @@ -94,8 +98,8 @@ class MoGoAdasListenerImpl : OnAdasListener { //感知物体 @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED, linkCode = CHAIN_LINK_ADAS, - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA, endpoint = PAD, nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA, paramIndexes = [0, 1], @@ -112,8 +116,8 @@ class MoGoAdasListenerImpl : OnAdasListener { //自车定位信息 @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, linkCode = CHAIN_LINK_ADAS, - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA, endpoint = PAD, nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_STATE, paramIndexes = [0, 1], @@ -140,6 +144,14 @@ class MoGoAdasListenerImpl : OnAdasListener { } //自车状态(底盘),车灯等。 + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE, + linkCode = CHAIN_LINK_ADAS, + endpoint = PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE, + paramIndexes = [0, 1], + clientPkFileName = "sn" + ) override fun onVehicleState( header: MessagePad.Header, vehicleState: VehicleStateOuterClass.VehicleState? @@ -154,8 +166,8 @@ class MoGoAdasListenerImpl : OnAdasListener { //自动驾驶状态 @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, linkCode = CHAIN_LINK_ADAS, - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA, endpoint = PAD, nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_STATUS, paramIndexes = [0, 1], @@ -192,8 +204,8 @@ class MoGoAdasListenerImpl : OnAdasListener { //监控 @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, linkCode = CHAIN_LINK_ADAS, - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA, endpoint = PAD, nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_GUARDIAN, paramIndexes = [0, 1], @@ -225,28 +237,10 @@ class MoGoAdasListenerImpl : OnAdasListener { } } - //数据采集,badCase - @ChainLog( - linkCode = CHAIN_LINK_ADAS, - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD, - paramIndexes = [0, 1], - clientPkFileName = "sn" - ) - override fun onRecordResult( - header: MessagePad.Header, - recordPanel: RecordPanelOuterClass.RecordPanel? - ) { - if (recordPanel != null) { - invokeAutopilotRecordResult(recordPanel) - } - } - //全局路径规划 @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, linkCode = CHAIN_LINK_ADAS, - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA, endpoint = PAD, nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ROUTE, paramIndexes = [0, 1], @@ -261,23 +255,41 @@ class MoGoAdasListenerImpl : OnAdasListener { } } - //预警信息 + //数据采集,badCase @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, linkCode = CHAIN_LINK_ADAS, - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA, endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN, + nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD, paramIndexes = [0, 1], clientPkFileName = "sn" ) + override fun onRecordResult( + header: MessagePad.Header, + recordPanel: RecordPanelOuterClass.RecordPanel? + ) { + if (recordPanel != null) { + invokeAutopilotRecordResult(recordPanel) + } + } + + //预警信息 +// @ChainLog( +// linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, +// linkCode = CHAIN_LINK_ADAS, +// endpoint = PAD, +// nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN, +// paramIndexes = [0, 1], +// clientPkFileName = "sn" +// ) override fun onWarn(header: MessagePad.Header, warn: MessagePad.Warn?) { invokeAutopilotWarnMessage(warn) } //到站回调 @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT, linkCode = CHAIN_LINK_ADAS, - linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA, endpoint = PAD, nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_ARRIVE, paramIndexes = [0, 1], diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt index f0c5c94477..941d21a0ee 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt @@ -36,7 +36,6 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl ILogListener { private const val TAG = "MogoLogCatchManager" - private const val MANUAL_CATCH_PKG_NAME = "manual-catch-log" private const val MSG_TRY_CLOSE_LOG = 1001 private var mContext: Context? = null @@ -81,14 +80,27 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl override fun onMsgReceived(obj: RemoteLogPushContent?) { obj?.let { CallerLogger.d("$M_DEVA$TAG", "收到push消息: $obj") - when (obj.type) { - START_CATCH_LOG -> if (!catchingList.contains(obj.pkgName)) { - startCatchLog(obj) - } - STOP_CATCH_LOG -> stopCatchLog(obj) - LOCAL_CONFIG_OPEN_LOG -> openLoggerLevel() - LOCAL_CONFIG_CLOSE_LOG -> closeLoggerLevel() - else -> { + ThreadUtils.runOnUiThread { + obj.pkgName = mContext?.packageName + when (obj.type) { + START_CATCH_LOG -> if (!catchingList.contains(obj.pkgName)) { + TipToast.longTip("云端下发抓取日志,时间:${obj.duration}分钟") + startCatchLog(obj.duration) + } + STOP_CATCH_LOG -> { + TipToast.longTip("云端下发停止抓取日志") + stopCatchLog(obj) + } + LOCAL_CONFIG_OPEN_LOG -> { + TipToast.longTip("云端下发打开日志开关") + openLoggerLevel() + } + LOCAL_CONFIG_CLOSE_LOG -> { + TipToast.longTip("云端下发关闭日志开关") + closeLoggerLevel() + } + else -> { + } } } } @@ -104,12 +116,13 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl } fun startCatchLog(duration: Int = 10, logPrefixName: String? = null) { - if (catchingList.contains(MANUAL_CATCH_PKG_NAME)) { + if (catchingList.contains(manualContent.pkgName + logPrefixName)) { TipToast.shortTip("已经在抓取日志了,请稍后再试") } else { CallerLogger.d("$M_DEVA$TAG", "开始抓取日志==== duration : $duration") manualContent.type = START_CATCH_LOG manualContent.duration = duration + CallerLogger.d("$M_DEVA$TAG", "manualContent : $manualContent") startCatchLog(manualContent, logPrefixName) } } @@ -121,7 +134,7 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl } private fun startCatchLog(content: RemoteLogPushContent, logPrefixName: String? = null) { - catchingList.add(content.pkgName) + catchingList.add(content.pkgName + logPrefixName) var delay = (content.duration).toLong() handler.removeMessages(MSG_TRY_CLOSE_LOG) if (delay <= 0) { @@ -131,7 +144,10 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl handler.sendEmptyMessageDelayed(MSG_TRY_CLOSE_LOG, delay * 1000L * 60) openLoggerLevel() - + CallerLogger.d( + "$M_DEVA$TAG", + "createPushLogInfoManager pkgName : ${content.pkgName} , duration : ${content.duration}" + ) logInfoManager = LogInfoManagerFactory.createPushLogInfoManager( mContext, MoGoAiCloudClientConfig.getInstance().sn, @@ -140,7 +156,7 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl content, this ) - + CallerLogger.d("$M_DEVA$TAG", "start : ${logInfoManager.toString()}") logInfoManager?.start() logInfoManager?.registerLogOutListener { lineLog -> CallerDevaToolsListenerManager.invokeDevaToolsLogCatchLines(lineLog) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt index c2b0e1262e..75c67d6cfa 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt @@ -4,8 +4,8 @@ import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.deva.chain.ChainLogParam -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA 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.DeviceUtils import com.mogo.eagle.core.utilcode.util.Utils import com.zhidao.loglib.fw.FileWriteManager @@ -34,13 +34,26 @@ class TraceManager { // Trace过程中进行日志抓取,对日志进行配置 fwBuildMap[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] = FwBuild(true, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_INIT) - fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA] = - FwBuild(false, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_MSG) + fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] = + FwBuild(true, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_AUTO) + fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] = + FwBuild(false, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_DATA_TRACK) + fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] = + FwBuild(false, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_TRAJECTORY) + fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] = + FwBuild(false, pkgName + ChainConstant.CHAIN_LINK_LOG_ADAS_VEHICLE) traceInfoCache[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] = ChainLogParam(true, "ADAS连接状态") - traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA] = - ChainLogParam(false, "ADAS长链数据") + traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] = + ChainLogParam(true, "ADAS自动驾驶链路(包含: 定位,自动驾驶状态,全局路径,到站提醒,节点状态,异常上报)") + traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] = + ChainLogParam(false, "ADAS感知物体") + traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] = + ChainLogParam(false, "ADAS车前引导线") + traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] = + ChainLogParam(false, "ADAS车辆底盘数据") + FileWriteManager.getInstance() .init(context, MoGoAiCloudClientConfig.getInstance().sn, pkgName, fwBuildMap) } @@ -51,10 +64,12 @@ class TraceManager { fun refreshTraceInfo(map: HashMap) { map.forEach { (type, param) -> - val fwBuild = this.fwBuildMap[type] - fwBuild?.let { - CallerLogger.d("$M_DEVA$TAG", "param : ${param.des} , record : ${param.record}") - it.isRecord = param.record + if(type != ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS){ + val fwBuild = this.fwBuildMap[type] + fwBuild?.let { + CallerLogger.d("$M_DEVA$TAG", "param : ${param.des} , record : ${param.record}") + it.isRecord = param.record + } } } FileWriteManager.getInstance().operateChainMap(fwBuildMap) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 0bf25f12fd..5d89eb3ab2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -96,23 +96,25 @@ class DebugSettingView @JvmOverloads constructor( //当前PAD支持的CPU架构 private var cpuList = "CPU架构:" + //日志过滤标签集合 - private val sceneMap = mutableMapOf< String, SceneModule>() + private val sceneMap = mutableMapOf() private var dockerRebootDialog: DockerRebootDialog? = null //docker重启对话框 - private var adUpgradeDialog : AdUpgradeDialog? = null //工控机升级对话框 - private var upgradeMode: Int=-1 //升级模式 - private var downloadStatus: Int=-1 //下载状态 - private var currentProgress: Int=-1 //当前已下载包体大小 - private var previousProgress: Int=-1 //前一秒的下载进度,用于计算下载剩余时间 - private var totalProgress: Int=-1 //包体总大小 - private var downloadVersion: String?=null //工控机docker版本 - private var upgradeStatus: Int=-1 //升级状态 + private var adUpgradeDialog: AdUpgradeDialog? = null //工控机升级对话框 + private var upgradeMode: Int = -1 //升级模式 + private var downloadStatus: Int = -1 //下载状态 + private var currentProgress: Int = -1 //当前已下载包体大小 + private var previousProgress: Int = -1 //前一秒的下载进度,用于计算下载剩余时间 + private var totalProgress: Int = -1 //包体总大小 + private var downloadVersion: String? = null //工控机docker版本 + private var upgradeStatus: Int = -1 //升级状态 //ADAS连接状态 - private var adasConnectStatus: Boolean=false + private var adasConnectStatus: Boolean = false + //OBU连接状态 - private var obuConnectStatus: Boolean=false + private var obuConnectStatus: Boolean = false private val mapUiController by lazy { CallerMapUIServiceManager.getMapUIController() @@ -185,23 +187,23 @@ class DebugSettingView @JvmOverloads constructor( } private fun initView() { - val iconDown = ContextCompat.getDrawable(context,R.drawable.icon_down) - iconDown?.setBounds(0,0,iconDown.minimumWidth,iconDown.minimumHeight) - val iconRight = ContextCompat.getDrawable(context,R.drawable.icon_right) - iconRight?.setBounds(0,0,iconRight.minimumWidth,iconRight.minimumHeight) + val iconDown = ContextCompat.getDrawable(context, R.drawable.icon_down) + iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight) + val iconRight = ContextCompat.getDrawable(context, R.drawable.icon_right) + iconRight?.setBounds(0, 0, iconRight.minimumWidth, iconRight.minimumHeight) /** * 设备绑定关系 */ tbDeviceBind.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示隐藏设备绑定关系视图 - deviceBindLayout.visibility =View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + deviceBindLayout.visibility = View.VISIBLE + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //默认隐藏设备绑定关系视图 - deviceBindLayout.visibility =View.GONE + deviceBindLayout.visibility = View.GONE } } @@ -209,12 +211,12 @@ class DebugSettingView @JvmOverloads constructor( * 版本信息 */ tbAppVersionInfo.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示版本信息 appVersionInfoLayout.visibility = View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //隐藏版本信息 appVersionInfoLayout.visibility = View.GONE } @@ -223,33 +225,33 @@ class DebugSettingView @JvmOverloads constructor( * 状态中心 */ tbStatusCenter.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示状态中心 statusCenterLayout.visibility = View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //隐藏状态中心 statusCenterLayout.visibility = View.GONE } } - for(element in DeviceUtils.getABIs()){ + for (element in DeviceUtils.getABIs()) { cpuList = "$cpuList$element " } - tvCPUFrameworkInfo.text =cpuList + tvCPUFrameworkInfo.text = cpuList /** * 控制中心 */ tbControlCenter.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示控制中心 controlCenterLayout.visibility = View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //隐藏控制中心 controlCenterLayout.visibility = View.GONE } @@ -259,12 +261,12 @@ class DebugSettingView @JvmOverloads constructor( * 域控制器 */ tbDomainController.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示域控制器 domainControllerLayout.visibility = View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //隐藏域控制器 domainControllerLayout.visibility = View.GONE } @@ -274,13 +276,13 @@ class DebugSettingView @JvmOverloads constructor( * OBU控制中心 */ tbObuController.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示OBU控制中心 obuControllerLayout.visibility = View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //隐藏OBU控制中心 obuControllerLayout.visibility = View.GONE } @@ -290,12 +292,12 @@ class DebugSettingView @JvmOverloads constructor( * HMI控制中心 */ tbHmiController.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示HMI控制中心 hmiControllerLayout.visibility = View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //隐藏HMI控制中心 hmiControllerLayout.visibility = View.GONE } @@ -305,12 +307,12 @@ class DebugSettingView @JvmOverloads constructor( * 高精地图控制中心 */ tbHdMapController.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示高精地图控制中心 hdMapControllerLayout.visibility = View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //隐藏高精地图控制中心 hdMapControllerLayout.visibility = View.GONE } @@ -320,12 +322,12 @@ class DebugSettingView @JvmOverloads constructor( * 日志中心 */ tbLogcatCenter.setOnCheckedChangeListener { buttonView, isChecked -> - if(isChecked){ - buttonView.setCompoundDrawables(null,null,iconDown,null) + if (isChecked) { + buttonView.setCompoundDrawables(null, null, iconDown, null) //展示日志中心 logcatCenterLayout.visibility = View.VISIBLE - }else{ - buttonView.setCompoundDrawables(null,null,iconRight,null) + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) //隐藏日志中心 logcatCenterLayout.visibility = View.GONE } @@ -373,9 +375,6 @@ class DebugSettingView @JvmOverloads constructor( } - - - /** * 修改自车按钮(出租车、小巴车) */ @@ -475,7 +474,6 @@ class DebugSettingView @JvmOverloads constructor( } - // 初始化 ADAS感知数据是否绘制 选择情况 tbIsDrawIdentifyData.isChecked = FunctionBuildConfig.isDrawIdentifyData tbIsDrawIdentifyData.setOnCheckedChangeListener { buttonView, isChecked -> @@ -505,7 +503,7 @@ class DebugSettingView @JvmOverloads constructor( /** * 设置域控制器点击监听 */ - private fun setDomainControllerCheckedChangeListener(){ + private fun setDomainControllerCheckedChangeListener() { // 初始化工控机 IP信息 val autoPilotIpAddress = @@ -534,15 +532,15 @@ class DebugSettingView @JvmOverloads constructor( /** * 设置最大速度 */ - btnSetAutopilotSpeed.onClick{ - if(AppConfigInfo.isConnectAutopilot){ + btnSetAutopilotSpeed.onClick { + if (AppConfigInfo.isConnectAutopilot) { val speedStr = etInputSpeed.text?.toString() try { - if(speedStr.isNullOrEmpty()){ + if (speedStr.isNullOrEmpty()) { ToastUtils.showShort("请输入最大车速") } val speed = speedStr?.toInt() - if(speed!=null && speed>0 && speed<60){ + if (speed != null && speed > 0 && speed < 60) { // 设置自动驾驶速度 val isSuccess = CallerAutoPilotManager.setAutoPilotSpeed(speed) when { @@ -553,13 +551,13 @@ class DebugSettingView @JvmOverloads constructor( ToastUtils.showShort("设置车速失败,请启动域控制器") } } - }else{ + } else { ToastUtils.showShort("最大车速应大于0且小于60") } - }catch (e: Exception){ + } catch (e: Exception) { ToastUtils.showShort("车速设置失败,请正确设置车速") } - }else{ + } else { ToastUtils.showShort("设置车速失败,请启动域控制器") } } @@ -567,19 +565,19 @@ class DebugSettingView @JvmOverloads constructor( /** * 录制Bag包 */ - btnRecordPackage.onClick{ + btnRecordPackage.onClick { val recordTimeStr = etInputRecordTime.text?.toString() - try{ - if(recordTimeStr.isNullOrEmpty()){ + try { + if (recordTimeStr.isNullOrEmpty()) { CallerAutoPilotManager.recordPackage() } val recordTime = recordTimeStr?.toInt() - if(recordTime!=null && recordTime>0){ + if (recordTime != null && recordTime > 0) { CallerAutoPilotManager.recordPackage(recordTime) - }else{ + } else { CallerAutoPilotManager.recordPackage() } - }catch (e: Exception){ + } catch (e: Exception) { CallerAutoPilotManager.recordPackage() } } @@ -587,30 +585,43 @@ class DebugSettingView @JvmOverloads constructor( /** * 工控机升级 */ - btnSystemUpgrade.onClick{ - if(AppConfigInfo.isConnectAutopilot){ - Logger.i(TAG,"upgradeMode="+upgradeMode+" downloadStatus="+downloadStatus+" upgradeStatus="+upgradeStatus) - if(AdUpgradeStateHelper.isDownloading(downloadStatus)){ + btnSystemUpgrade.onClick { + if (AppConfigInfo.isConnectAutopilot) { + Logger.i( + TAG, + "upgradeMode=" + upgradeMode + " downloadStatus=" + downloadStatus + " upgradeStatus=" + upgradeStatus + ) + if (AdUpgradeStateHelper.isDownloading(downloadStatus)) { //点击Toast提示:下载剩余时间 - ToastUtils.showShort("预计"+AdUpgradeStateHelper.getRemainingTime(totalProgress,previousProgress,currentProgress)+"下载完成") - }else if(AdUpgradeStateHelper.getUpgradeStatus()){ + ToastUtils.showShort( + "预计" + AdUpgradeStateHelper.getRemainingTime( + totalProgress, + previousProgress, + currentProgress + ) + "下载完成" + ) + } else if (AdUpgradeStateHelper.getUpgradeStatus()) { //工控机状态为“升级中” ToastUtils.showShort("新版本升级中,预计5分钟升级完成") - }else if(AdUpgradeStateHelper.isUpgradeFailed(upgradeStatus)){ + } else if (AdUpgradeStateHelper.isUpgradeFailed(upgradeStatus)) { //如果升级失败,则Toast提示:升级失败,请联系运维人员 ToastUtils.showShort("升级失败,请联系运维人员") - }else if(AdUpgradeStateHelper.isHintUpgradeMode(upgradeMode) && AdUpgradeStateHelper.isDownloadFinish(downloadStatus,upgradeStatus)){ + } else if (AdUpgradeStateHelper.isHintUpgradeMode(upgradeMode) && AdUpgradeStateHelper.isDownloadFinish( + downloadStatus, + upgradeStatus + ) + ) { //如果升级模式为“提示升级”,并且下载状态为已经下载完成,点击弹出升级确认弹窗 - if(adUpgradeDialog == null){ + if (adUpgradeDialog == null) { adUpgradeDialog = AdUpgradeDialog(context) - adUpgradeDialog?.setClickListener(object : AdUpgradeDialog.ClickListener{ + adUpgradeDialog?.setClickListener(object : AdUpgradeDialog.ClickListener { override fun confirm() { - if(mAutoPilotStatusInfo?.state==2){ + if (mAutoPilotStatusInfo?.state == 2) { //当前处于自动驾驶状态,不可进行升级,Toast提示 ToastUtils.showShort("升级前请先退出自动驾驶模式") - }else{ + } else { //确认升级 - Logger.i(TAG,"upgrade confirm") + Logger.i(TAG, "upgrade confirm") //设置当前状态为“升级中” AdUpgradeStateHelper.setUpgradeStatus(true) CallerAutoPilotManager.setIPCUpgradeAffirm() @@ -619,7 +630,7 @@ class DebugSettingView @JvmOverloads constructor( override fun cancel() { //取消升级 - Logger.i(TAG,"upgrade cancel") + Logger.i(TAG, "upgrade cancel") //取消升级命令不下发 // CallerAutoPilotManager.setIPCUpgradeCancel() } @@ -627,10 +638,10 @@ class DebugSettingView @JvmOverloads constructor( }) } adUpgradeDialog?.showUpgradeDialog() - }else{ + } else { ToastUtils.showShort("当前工控机处于最新版本状态,不可升级") } - }else{ + } else { ToastUtils.showShort("域控制器未连接") } @@ -640,34 +651,38 @@ class DebugSettingView @JvmOverloads constructor( /** * 重启系统 */ - btnSystemRestart.onClick{ - if(AppConfigInfo.isConnectAutopilot){ - if(dockerRebootDialog == null){ + btnSystemRestart.onClick { + if (AppConfigInfo.isConnectAutopilot) { + if (dockerRebootDialog == null) { dockerRebootDialog = DockerRebootDialog(context) - dockerRebootDialog?.setClickListener(object : DockerRebootDialog.ClickListener{ + dockerRebootDialog?.setClickListener(object : DockerRebootDialog.ClickListener { override fun confirm() { - if(mAutoPilotStatusInfo?.state==2){ + if (mAutoPilotStatusInfo?.state == 2) { //当前处于自动驾驶状态,不可进行重启,Toast提示 ToastUtils.showShort("请先退出自动驾驶状态") - }else if(AdUpgradeStateHelper.showCannotReboot(downloadStatus, upgradeStatus)){ + } else if (AdUpgradeStateHelper.showCannotReboot( + downloadStatus, + upgradeStatus + ) + ) { //当工控机处于下载或者升级状态,需要先进行升级 ToastUtils.showShort("请先完成新自动驾驶系统的下载/升级") - } else{ + } else { //确认重启 - Logger.i(TAG,"reboot confirm") + Logger.i(TAG, "reboot confirm") CallerAutoPilotManager.setIPCReboot() } } override fun cancel() { //取消重启 - Logger.i(TAG,"reboot cancel") + Logger.i(TAG, "reboot cancel") } }) } dockerRebootDialog?.showUpgradeDialog() - }else{ + } else { ToastUtils.showShort("域控制器未连接") } @@ -701,21 +716,23 @@ class DebugSettingView @JvmOverloads constructor( * @param downloadVersion 下载版本 * @param upgradeStatus 升级状态 */ - fun setAdUpgradeInfo(upgradeMode: Int,downloadStatus: Int,currentProgress: Int,totalProgress: Int, - downloadVersion: String,upgradeStatus: Int){ - this.upgradeMode=upgradeMode - this.downloadStatus=downloadStatus - this.previousProgress=this.currentProgress - this.currentProgress=currentProgress - this.totalProgress=totalProgress - this.downloadVersion=downloadVersion - this.upgradeStatus=upgradeStatus + fun setAdUpgradeInfo( + upgradeMode: Int, downloadStatus: Int, currentProgress: Int, totalProgress: Int, + downloadVersion: String, upgradeStatus: Int + ) { + this.upgradeMode = upgradeMode + this.downloadStatus = downloadStatus + this.previousProgress = this.currentProgress + this.currentProgress = currentProgress + this.totalProgress = totalProgress + this.downloadVersion = downloadVersion + this.upgradeStatus = upgradeStatus } /** * 设置Hmi点击监听 */ - private fun setHmiCheckedChangeListener(){ + private fun setHmiCheckedChangeListener() { /** * 显示、隐藏迈速表 */ @@ -798,36 +815,36 @@ class DebugSettingView @JvmOverloads constructor( /** * 设置日志点击监听 */ - private fun setLogCheckedChangeListener(){ + private fun setLogCheckedChangeListener() { //初始化标签选中状态 - val tagMap=CallerDevaToolsManager.getModuleTAG() + val tagMap = CallerDevaToolsManager.getModuleTAG() tagMap?.let { - it.iterator().forEach {map -> + it.iterator().forEach { map -> val name = map.value.name val log = map.value.log - when(name){ + when (name) { ////ADAS日志标签 - SceneConstant.M_ADAS_IMPL-> cbAdasLog.isChecked = log + SceneConstant.M_ADAS_IMPL -> cbAdasLog.isChecked = log //OBU日志标签 - SceneConstant.M_OBU-> cbObuLog.isChecked = log + SceneConstant.M_OBU -> cbObuLog.isChecked = log //HMI日志标签 - SceneConstant.M_HMI-> cbHmiLog.isChecked = log + SceneConstant.M_HMI -> cbHmiLog.isChecked = log //V2X日志标签 - SceneConstant.M_V2X-> cbV2xLog.isChecked = log + SceneConstant.M_V2X -> cbV2xLog.isChecked = log //地图日志标签 - SceneConstant.M_MAP-> cbMapLog.isChecked = log + SceneConstant.M_MAP -> cbMapLog.isChecked = log //DEVA日志标签 - SceneConstant.M_DEVA-> cbDevaLog.isChecked = log + SceneConstant.M_DEVA -> cbDevaLog.isChecked = log //网络模块日志标签 - SceneConstant.M_NETWORK-> cbNetworkLog.isChecked = log + SceneConstant.M_NETWORK -> cbNetworkLog.isChecked = log //ROUTE日志标签 - SceneConstant.M_OLD_ROUTE-> cbOldRouteLog.isChecked = log + SceneConstant.M_OLD_ROUTE -> cbOldRouteLog.isChecked = log //BUS日志标签 - SceneConstant.M_BUS-> cbBusLog.isChecked = log + SceneConstant.M_BUS -> cbBusLog.isChecked = log //TAXI日志标签 - SceneConstant.M_TAXI-> cbTaxiLog.isChecked = log + SceneConstant.M_TAXI -> cbTaxiLog.isChecked = log //TAXI_P日志标签 - SceneConstant.M_TAXI_P-> cbTaxiPLog.isChecked = log + SceneConstant.M_TAXI_P -> cbTaxiPLog.isChecked = log } } } @@ -859,70 +876,69 @@ class DebugSettingView @JvmOverloads constructor( } - //ADAS日志标签 cbAdasLog.setOnCheckedChangeListener { _, isChecked -> - val adasModule = SceneModule(isChecked,SceneConstant.M_ADAS_IMPL) + val adasModule = SceneModule(isChecked, SceneConstant.M_ADAS_IMPL) sceneMap[SceneConstant.M_ADAS_IMPL] = adasModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //OBU日志标签 cbObuLog.setOnCheckedChangeListener { _, isChecked -> - val obuModule = SceneModule(isChecked,SceneConstant.M_OBU) + val obuModule = SceneModule(isChecked, SceneConstant.M_OBU) sceneMap[SceneConstant.M_OBU] = obuModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //HMI日志标签 cbHmiLog.setOnCheckedChangeListener { _, isChecked -> - val hmiModule = SceneModule(isChecked,SceneConstant.M_HMI) + val hmiModule = SceneModule(isChecked, SceneConstant.M_HMI) sceneMap[SceneConstant.M_HMI] = hmiModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //V2X日志标签 cbV2xLog.setOnCheckedChangeListener { _, isChecked -> - val v2xModule = SceneModule(isChecked,SceneConstant.M_V2X) + val v2xModule = SceneModule(isChecked, SceneConstant.M_V2X) sceneMap[SceneConstant.M_V2X] = v2xModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //地图日志标签 cbMapLog.setOnCheckedChangeListener { _, isChecked -> - val mapModule = SceneModule(isChecked,SceneConstant.M_MAP) + val mapModule = SceneModule(isChecked, SceneConstant.M_MAP) sceneMap[SceneConstant.M_MAP] = mapModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //DEVA日志标签 cbDevaLog.setOnCheckedChangeListener { _, isChecked -> - val devaModule = SceneModule(isChecked,SceneConstant.M_DEVA) + val devaModule = SceneModule(isChecked, SceneConstant.M_DEVA) sceneMap[SceneConstant.M_DEVA] = devaModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //网络模块日志标签 cbNetworkLog.setOnCheckedChangeListener { _, isChecked -> - val networkModule = SceneModule(isChecked,SceneConstant.M_NETWORK) + val networkModule = SceneModule(isChecked, SceneConstant.M_NETWORK) sceneMap[SceneConstant.M_NETWORK] = networkModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //ROUTE日志标签 cbOldRouteLog.setOnCheckedChangeListener { _, isChecked -> - val oldRouteModule = SceneModule(isChecked,SceneConstant.M_OLD_ROUTE) + val oldRouteModule = SceneModule(isChecked, SceneConstant.M_OLD_ROUTE) sceneMap[SceneConstant.M_OLD_ROUTE] = oldRouteModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //BUS日志标签 cbBusLog.setOnCheckedChangeListener { _, isChecked -> - val busModule = SceneModule(isChecked,SceneConstant.M_BUS) + val busModule = SceneModule(isChecked, SceneConstant.M_BUS) sceneMap[SceneConstant.M_BUS] = busModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //TAXI日志标签 cbTaxiLog.setOnCheckedChangeListener { _, isChecked -> - val taxiModule = SceneModule(isChecked,SceneConstant.M_TAXI) + val taxiModule = SceneModule(isChecked, SceneConstant.M_TAXI) sceneMap[SceneConstant.M_TAXI] = taxiModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } //TAXI_P日志标签 cbTaxiPLog.setOnCheckedChangeListener { _, isChecked -> - val taxiPModule = SceneModule(isChecked,SceneConstant.M_TAXI_P) + val taxiPModule = SceneModule(isChecked, SceneConstant.M_TAXI_P) sceneMap[SceneConstant.M_TAXI_P] = taxiPModule CallerDevaToolsManager.updateModuleTAG(sceneMap) } @@ -933,7 +949,7 @@ class DebugSettingView @JvmOverloads constructor( tbLogCatch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { var logTimeStr = etLogCatch.text?.toString() - if(logTimeStr.isNullOrEmpty()){ + if (logTimeStr.isNullOrEmpty()) { logTimeStr = "10" } val logCatchTime = logTimeStr.toInt() @@ -994,16 +1010,73 @@ class DebugSettingView @JvmOverloads constructor( } } + val traceInfoMap = CallerDevaToolsManager.getTraceInfo() + val autopilot = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] + autopilot?.let{ + cbAdasAutoPilot.isChecked = it.record + } + val dataTrack = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] + dataTrack?.let { + cbAdasDataTrack.isChecked = it.record + } + val trajectory = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] + trajectory?.let { + cbAdasTrajectory.isChecked = it.record + } + val vehicle = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] + vehicle?.let { + cbAdasVehicle.isChecked = it.record + } + /** - * ADAS长链数据 + * ADAS自动驾驶链路 */ - cbAdasChainLog.setOnCheckedChangeListener { _, isChecked -> - val traceInfoMap = CallerDevaToolsManager.getTraceInfo() - val chainLogParam = traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA] - chainLogParam?.let { + cbAdasAutoPilot.setOnCheckedChangeListener { _, isChecked -> + val map = CallerDevaToolsManager.getTraceInfo() + val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] + param?.let { it.record = isChecked - traceInfoMap[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA] = chainLogParam - CallerDevaToolsManager.refreshTraceInfo(traceInfoMap) + map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT] = param + CallerDevaToolsManager.refreshTraceInfo(map) + } + } + + /** + * ADAS感知物体 + */ + cbAdasDataTrack.setOnCheckedChangeListener { _, isChecked -> + val map = CallerDevaToolsManager.getTraceInfo() + val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] + param?.let { + it.record = isChecked + map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED] = param + CallerDevaToolsManager.refreshTraceInfo(map) + } + } + + /** + * ADAS前车引导线 + */ + cbAdasTrajectory.setOnCheckedChangeListener { _, isChecked -> + val map = CallerDevaToolsManager.getTraceInfo() + val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] + param?.let { + it.record = isChecked + map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY] = param + CallerDevaToolsManager.refreshTraceInfo(map) + } + } + + /** + * ADAS车辆地盘数据 + */ + cbAdasVehicle.setOnCheckedChangeListener { _, isChecked -> + val map = CallerDevaToolsManager.getTraceInfo() + val param = map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] + param?.let { + it.record = isChecked + map[ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE] = param + CallerDevaToolsManager.refreshTraceInfo(map) } } } @@ -1036,7 +1109,8 @@ class DebugSettingView @JvmOverloads constructor( AppConfigInfo.uniqueDeviceId = DeviceIdUtils.getDeviceId(AbsMogoApplication.getApp()) } if (AppConfigInfo.widevineIDMd5.isNullOrEmpty()) { - AppConfigInfo.widevineIDMd5 = DeviceIdUtils.getWidevineIDWithMd5(AbsMogoApplication.getApp()) + AppConfigInfo.widevineIDMd5 = + DeviceIdUtils.getWidevineIDWithMd5(AbsMogoApplication.getApp()) } AppConfigInfo.mogoSN = MoGoAiCloudClient.getInstance().aiCloudClientConfig.sn AppConfigInfo.mogoToken = MoGoAiCloudClient.getInstance().aiCloudClientConfig.token @@ -1074,7 +1148,8 @@ class DebugSettingView @JvmOverloads constructor( tvObuAppInfo.text = "OBU程序版本:${CallerObuListenerManager.getObuStatusInfo().appInfo}" tvObuHliInfo.text = "OBU协议版本:${CallerObuListenerManager.getObuStatusInfo().hliInfo}" tvObuSdkVersion.text = "OBU-SDK版本:${AppConfigInfo.obuSdkVersion}" - tvAutopilotProtocolVersionInfo.text = "Autopilot协议版本:${CallerAutoPilotManager.getProtocolVersion()}" + tvAutopilotProtocolVersionInfo.text = + "Autopilot协议版本:${CallerAutoPilotManager.getProtocolVersion()}" tvIpcProtocolVersionInfo.text = "工控机协议版本:${AppConfigInfo.protocolVersionNumber}" tvMoGoMapVersion.text = "HD-Map版本:${MogoMap.getInstance().mogoMap.mapVersion}" tvGitBranchInfo.text = "Git分支:${AppConfigInfo.workingBranchName}" @@ -1101,76 +1176,88 @@ class DebugSettingView @JvmOverloads constructor( } }" - tvInternetEnvironment.text =Html.fromHtml("当前网络环境:${ - if(NetworkUtils.isConnected(context)){ - if(NetworkUtils.isConnectedMobile(context)){ - //已连接移动数据 - "移动数据" - }else{ - //WiFi - CommonUtils.getWifiName(context) + tvInternetEnvironment.text = Html.fromHtml( + "当前网络环境:${ + if (NetworkUtils.isConnected(context)) { + if (NetworkUtils.isConnectedMobile(context)) { + //已连接移动数据 + "移动数据" + } else { + //WiFi + CommonUtils.getWifiName(context) + } + + } else { + //未连接任何网络 + "异常" } - - }else{ - //未连接任何网络 - "异常" - } - }") + }" + ) - tvServerSocketStatus.text = Html.fromHtml("服务器Socket状态:${ - if(DebugConfig.isDownloadSnapshot()){ - "正常" - }else{ - "异常" - } - }") - - tvAutopilotConnectStatus.text =Html.fromHtml("Autopilot系统连接状态:${ - if(AppConfigInfo.isConnectAutopilot){ - "正常" - }else{ - "异常" - } - }") - - tvObuConnectStatus.text =Html.fromHtml("OBU连接状态:${ - if(AppConfigInfo.isConnectObu){ - "正常" - }else{ - "异常" - } - }") - - tvDriverServerStartupStatus.text = Html.fromHtml("${ - when { - AppConfigInfo.isDriver -> { - "司机端Server启动" + tvServerSocketStatus.text = Html.fromHtml( + "服务器Socket状态:${ + if (DebugConfig.isDownloadSnapshot()) { + "正常" + } else { + "异常" } - else -> { - "乘客端${ - when { - AppConfigInfo.serverIp.isNotEmpty() -> "(目标ip为:${AppConfigInfo.serverIp})" - else -> "" - } - }连接" - } - } - }是否正常:${ - if (AppConfigInfo.isConnectedNetty) { - "正常" - } else { - "异常" - } - }") + }" + ) - tvLocationEnabled.text =Html.fromHtml("定位服务开启状态:${ - if(DeviceUtils.isLocationEnabled()){ - "正常" - }else{ - "异常" - } - }") + tvAutopilotConnectStatus.text = Html.fromHtml( + "Autopilot系统连接状态:${ + if (AppConfigInfo.isConnectAutopilot) { + "正常" + } else { + "异常" + } + }" + ) + + tvObuConnectStatus.text = Html.fromHtml( + "OBU连接状态:${ + if (AppConfigInfo.isConnectObu) { + "正常" + } else { + "异常" + } + }" + ) + + tvDriverServerStartupStatus.text = Html.fromHtml( + "${ + when { + AppConfigInfo.isDriver -> { + "司机端Server启动" + } + else -> { + "乘客端${ + when { + AppConfigInfo.serverIp.isNotEmpty() -> "(目标ip为:${AppConfigInfo.serverIp})" + else -> "" + } + }连接" + } + } + }是否正常:${ + if (AppConfigInfo.isConnectedNetty) { + "正常" + } else { + "异常" + } + }" + ) + + tvLocationEnabled.text = Html.fromHtml( + "定位服务开启状态:${ + if (DeviceUtils.isLocationEnabled()) { + "正常" + } else { + "异常" + } + }" + ) tvAutopilotInfo.text = GsonUtils.toJson(mAutoPilotStatusInfo) @@ -1188,7 +1275,6 @@ class DebugSettingView @JvmOverloads constructor( "全局路径规划点个数:${mRouteInfoSize}" - // 用完之后重制为0,防止节点回掉突然没数据,导致页面显示还是之前的数据情况 mIdentifyDataSize = 0 mUnknownIdentifyDataSize = 0 @@ -1205,11 +1291,11 @@ class DebugSettingView @JvmOverloads constructor( AppConfigInfo.obuSdkVersion = obuStatusInfo.obuSdkVersion AppConfigInfo.isConnectObu = obuStatusInfo.obuStatus - if(obuStatusInfo.obuStatus){ + if (obuStatusInfo.obuStatus) { obuConnectStatus = true } //OBU断开连接,提示异常 - if(obuConnectStatus && !obuStatusInfo.obuStatus){ + if (obuConnectStatus && !obuStatusInfo.obuStatus) { obuConnectStatus = false toastMsg("OBU连接状态异常") } @@ -1222,17 +1308,17 @@ class DebugSettingView @JvmOverloads constructor( mAutoPilotStatusInfo = autoPilotStatusInfo AppConfigInfo.isConnectAutopilot = autoPilotStatusInfo.connectStatus - if(AppConfigInfo.isConnectAutopilot && (AppConfigInfo.plateNumber.isNullOrEmpty() || AppConfigInfo.iPCMacAddress.isNullOrEmpty())){ + if (AppConfigInfo.isConnectAutopilot && (AppConfigInfo.plateNumber.isNullOrEmpty() || AppConfigInfo.iPCMacAddress.isNullOrEmpty())) { //查询工控机基础配置信息 CallerAutoPilotManager.getCarConfig() } - if(autoPilotStatusInfo.connectStatus){ + if (autoPilotStatusInfo.connectStatus) { adasConnectStatus = true } //ADAS断开连接,提示异常 - if(adasConnectStatus && !autoPilotStatusInfo.connectStatus){ - adasConnectStatus=false + if (adasConnectStatus && !autoPilotStatusInfo.connectStatus) { + adasConnectStatus = false toastMsg("Autopilot系统连接状态异常") } } @@ -1280,21 +1366,21 @@ class DebugSettingView @JvmOverloads constructor( * 工控机异常回调 */ override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { - ThreadUtils.runOnUiThread{ + ThreadUtils.runOnUiThread { guardianInfo?.let { reportMsgLayout.visibility = View.VISIBLE tvReportSrc.text = "src:${it.src}" tvReportLevel.text = "level:${it.level}" tvReportMsg.text = "msg:${it.msg}" tvReportCode.text = "code:${it.code}" - var resultStr="result:" - for(result in it.resultList){ + var resultStr = "result:" + for (result in it.resultList) { resultStr = "$resultStr$result " } tvReportResult.text = resultStr - var actionStr="action:" - for(action in it.actionsList){ + var actionStr = "action:" + for (action in it.actionsList) { actionStr = "$actionStr$action " } tvReportActions.text = actionStr @@ -1303,7 +1389,7 @@ class DebugSettingView @JvmOverloads constructor( tvReportNSec.text = "nsec:${it.timestamp.nsec}" - if("error" == it.level){ + if ("error" == it.level) { //字体为红色,吐司提示 tvReportSrc.setTextColor(Color.RED) tvReportLevel.setTextColor(Color.RED) @@ -1314,7 +1400,7 @@ class DebugSettingView @JvmOverloads constructor( tvReportSec.setTextColor(Color.RED) tvReportNSec.setTextColor(Color.RED) toastMsg(it.msg) - }else{ + } else { tvReportSrc.setTextColor(Color.BLACK) tvReportLevel.setTextColor(Color.BLACK) tvReportMsg.setTextColor(Color.BLACK) @@ -1342,9 +1428,9 @@ class DebugSettingView @JvmOverloads constructor( /** * 吐司提示 */ - private fun toastMsg(msg: String){ + private fun toastMsg(msg: String) { //当处于美化(演示)模式、msg为空时不弹吐司 - if(!FunctionBuildConfig.isDemoMode && msg.isNotEmpty()){ + if (!FunctionBuildConfig.isDemoMode && msg.isNotEmpty()) { ToastUtils.showLong(msg) } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index e6e28ae6db..a0f9958855 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -11,9 +11,8 @@ android:id="@+id/reportMsgLayout" android:layout_width="match_parent" android:layout_height="@dimen/dp_350" - app:layout_constraintBottom_toBottomOf="parent" android:visibility="gone" - > + app:layout_constraintBottom_toBottomOf="parent"> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> - + android:background="#F0F0F0" /> @@ -141,9 +122,8 @@ android:id="@+id/svLayout" android:layout_width="match_parent" android:layout_height="0dp" - app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@id/reportMsgLayout" - > + app:layout_constraintTop_toTopOf="parent"> + android:textOff="设备绑定关系" + android:textOn="设备绑定关系" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> @@ -240,13 +209,12 @@ android:id="@+id/tbAppVersionInfo" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textOff="版本信息" - android:textOn="版本信息" + android:layout_margin="@dimen/dp_10" android:background="@drawable/radio_button_normal_background_right" android:drawableEnd="@drawable/icon_right" android:padding="@dimen/dp_20" - android:layout_margin="@dimen/dp_10" - /> + android:textOff="版本信息" + android:textOn="版本信息" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> @@ -417,13 +361,12 @@ android:id="@+id/tbStatusCenter" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textOff="状态中心" - android:textOn="状态中心" + android:layout_margin="@dimen/dp_10" android:background="@drawable/radio_button_normal_background_right" android:drawableEnd="@drawable/icon_right" android:padding="@dimen/dp_20" - android:layout_margin="@dimen/dp_10" - /> + android:textOff="状态中心" + android:textOn="状态中心" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + android:background="#F0F0F0" /> @@ -529,33 +458,30 @@ android:id="@+id/tbControlCenter" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textOff="控制中心" - android:textOn="控制中心" + android:layout_margin="@dimen/dp_10" android:background="@drawable/radio_button_normal_background_right" android:drawableEnd="@drawable/icon_right" android:padding="@dimen/dp_20" - android:layout_margin="@dimen/dp_10" - /> + android:textOff="控制中心" + android:textOn="控制中心" /> + android:visibility="gone"> + android:textOff="域控制器" + android:textOn="域控制器" /> + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@id/tvAutopilotInfo" />