fix bug of push log func and add trace of car status log

This commit is contained in:
zhongchao
2022-03-29 14:13:03 +08:00
parent e98408e1d8
commit 9cee7a84e7
8 changed files with 749 additions and 728 deletions

View File

@@ -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],

View File

@@ -36,7 +36,6 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, 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<RemoteLogPushContent>, 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<RemoteLogPushContent>, 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<RemoteLogPushContent>, 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<RemoteLogPushContent>, 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<RemoteLogPushContent>, Handl
content,
this
)
CallerLogger.d("$M_DEVA$TAG", "start : ${logInfoManager.toString()}")
logInfoManager?.start()
logInfoManager?.registerLogOutListener { lineLog ->
CallerDevaToolsListenerManager.invokeDevaToolsLogCatchLines(lineLog)

View File

@@ -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<Int, ChainLogParam>) {
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)

View File

@@ -96,23 +96,25 @@ class DebugSettingView @JvmOverloads constructor(
//当前PAD支持的CPU架构
private var cpuList = "CPU架构"
//日志过滤标签集合
private val sceneMap = mutableMapOf< String, SceneModule>()
private val sceneMap = mutableMapOf<String, SceneModule>()
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 {
//未连接任何网络
"<font color='red'>异常"
}
}else{
//未连接任何网络
"<font color='red'>异常"
}
}")
}"
)
tvServerSocketStatus.text = Html.fromHtml("服务器Socket状态${
if(DebugConfig.isDownloadSnapshot()){
"<font color='blue'>正常"
}else{
"<font color='red'>异常"
}
}")
tvAutopilotConnectStatus.text =Html.fromHtml("Autopilot系统连接状态${
if(AppConfigInfo.isConnectAutopilot){
"<font color='blue'>正常"
}else{
"<font color='red'>异常"
}
}")
tvObuConnectStatus.text =Html.fromHtml("OBU连接状态${
if(AppConfigInfo.isConnectObu){
"<font color='blue'>正常"
}else{
"<font color='red'>异常"
}
}")
tvDriverServerStartupStatus.text = Html.fromHtml("${
when {
AppConfigInfo.isDriver -> {
"司机端Server启动"
tvServerSocketStatus.text = Html.fromHtml(
"服务器Socket状态${
if (DebugConfig.isDownloadSnapshot()) {
"<font color='blue'>正常"
} else {
"<font color='red'>异常"
}
else -> {
"乘客端${
when {
AppConfigInfo.serverIp.isNotEmpty() -> "(目标ip为:${AppConfigInfo.serverIp})"
else -> ""
}
}连接"
}
}
}是否正常${
if (AppConfigInfo.isConnectedNetty) {
"<font color='blue'>正常"
} else {
"<font color='red'>异常"
}
}")
}"
)
tvLocationEnabled.text =Html.fromHtml("定位服务开启状态:${
if(DeviceUtils.isLocationEnabled()){
"<font color='blue'>正常"
}else{
"<font color='red'>异常"
}
}")
tvAutopilotConnectStatus.text = Html.fromHtml(
"Autopilot系统连接状态${
if (AppConfigInfo.isConnectAutopilot) {
"<font color='blue'>正常"
} else {
"<font color='red'>异常"
}
}"
)
tvObuConnectStatus.text = Html.fromHtml(
"OBU连接状态${
if (AppConfigInfo.isConnectObu) {
"<font color='blue'>正常"
} else {
"<font color='red'>异常"
}
}"
)
tvDriverServerStartupStatus.text = Html.fromHtml(
"${
when {
AppConfigInfo.isDriver -> {
"司机端Server启动"
}
else -> {
"乘客端${
when {
AppConfigInfo.serverIp.isNotEmpty() -> "(目标ip为:${AppConfigInfo.serverIp})"
else -> ""
}
}连接"
}
}
}是否正常${
if (AppConfigInfo.isConnectedNetty) {
"<font color='blue'>正常"
} else {
"<font color='red'>异常"
}
}"
)
tvLocationEnabled.text = Html.fromHtml(
"定位服务开启状态:${
if (DeviceUtils.isLocationEnabled()) {
"<font color='blue'>正常"
} else {
"<font color='red'>异常"
}
}"
)
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)
}
}

View File

@@ -8,14 +8,16 @@ class ChainConstant {
const val CHAIN_LINK_ADAS = 1
const val CHAIN_LINK_LOG_CONNECT_STATUS = 0
const val CHAIN_LINK_LOG_WEB_SOCKET_DATA = 1
const val CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT = 1
const val CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED = 2
const val CHAIN_LINK_LOG_WEB_SOCKET_TRAJECTORY = 3
const val CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT = 4
const val CHAIN_LINK_LOG_WEB_SOCKET_BAD_CASE = 5
const val CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE = 4
const val CHAIN_LINK_LOG_ADAS_INIT = "-adasInitStatus"
const val CHAIN_LINK_LOG_ADAS_MSG = "-adasWsMsg"
const val CHAIN_LINK_LOG_ADAS_AUTO = "-adasWsAutoPilot"
const val CHAIN_LINK_LOG_ADAS_DATA_TRACK = "-adasWsDataTrack"
const val CHAIN_LINK_LOG_ADAS_TRAJECTORY = "-adasWsTrajectory"
const val CHAIN_LINK_LOG_ADAS_VEHICLE = "-adasWsVehicle"
const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA = "PAD_ADAS_MESSAGE_AUTOPILOT_RECT_DATA"
@@ -26,6 +28,7 @@ class ChainConstant {
const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY = "PAD_ADAS_MESSAGE_AUTOPILOT_TRAJECTORY"
const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_GUARDIAN = "PAD_ADAS_MESSAGE_AUTOPILOT_GUARDIAN"
const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_RECORD = "PAD_ADAS_MESSAGE_AUTOPILOT_RECORD"
const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE = "PAD_ADAS_MESSAGE_AUTOPILOT_VEHICLE"
const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_WARN = "PAD_ADAS_MESSAGE_AUTOPILOT_WARN"
}
}

View File

@@ -171,8 +171,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
ipcFixationIPHelper.start(ips);
}
@ChainLog(linkCode = CHAIN_LINK_ADAS,
linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
@ChainLog(linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
linkCode = CHAIN_LINK_ADAS,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_INIT,
paramIndexes = {-1},
@@ -189,8 +189,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
connect();
}
@ChainLog(linkCode = CHAIN_LINK_ADAS,
linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
@ChainLog(linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
linkCode = CHAIN_LINK_ADAS,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_CONNECT_ADDRESS,
paramIndexes = {0},

View File

@@ -194,8 +194,8 @@ public class FpgaSocket implements IWebSocket {
public class EchoWebSocketListener extends WebSocketListener {
@ChainLog(linkCode = CHAIN_LINK_ADAS,
linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
@ChainLog(linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
linkCode = CHAIN_LINK_ADAS,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_WEB_SOCKET_OPEN,
paramIndexes = {1},
@@ -214,8 +214,8 @@ public class FpgaSocket implements IWebSocket {
}
}
@ChainLog(linkCode = CHAIN_LINK_ADAS,
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
@ChainLog(linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
linkCode = CHAIN_LINK_ADAS,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_JSON,
paramIndexes = {1},
@@ -234,8 +234,8 @@ public class FpgaSocket implements IWebSocket {
}
}
@ChainLog(linkCode = CHAIN_LINK_ADAS,
linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
@ChainLog(linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA,
linkCode = CHAIN_LINK_ADAS,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_WEB_SOCKET_MESSAGE_BYTE,
paramIndexes = {-1},