[630][adas] 修复处于PING状态时,无法停止PING问题

This commit is contained in:
xinfengkun
2024-03-15 13:59:47 +08:00
parent fec3d1b8dc
commit 8a8d0bf56a
11 changed files with 251 additions and 122 deletions

View File

@@ -29,6 +29,7 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.constants.SharedPrefsConstants
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
@@ -49,6 +50,7 @@ import com.mogo.eagle.core.data.multidisplay.TelematicConstant
import com.mogo.eagle.core.data.obu.MogoObuConst
import com.mogo.eagle.core.data.obu.ObuStatusInfo
import com.mogo.eagle.core.function.api.autopilot.*
import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener
import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuConnectListener
import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuInfoListener
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener
@@ -58,6 +60,8 @@ import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_RAIN
import com.mogo.eagle.core.function.api.setting.ISopSettingListener
import com.mogo.eagle.core.function.call.autopilot.*
import com.mogo.eagle.core.function.call.cloud.CallerCloudCertManager
import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
@@ -82,15 +86,12 @@ import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.permissions.BackgrounderPermission
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener
import com.mogo.eagle.core.function.call.cloud.CallerCloudCertManager
import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.map.MogoData.Companion.mogoMapData
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.map.uicontroller.VisualAngleMode.*
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.service.chain.ChainLog
import kotlinx.android.synthetic.main.view_debug_setting.view.*
import kotlinx.coroutines.*
@@ -193,6 +194,8 @@ internal class DebugSettingView @JvmOverloads constructor(
// 高精地图是否已缓存
private var isHDCached = false
private var isClickCheckedCbSsl = false//是否已经点击且选中证书认证按钮
private var isFirstDownLoadCertHint = false
init {
LayoutInflater.from(context).inflate(R.layout.view_debug_setting, this, true)
@@ -724,8 +727,8 @@ internal class DebugSettingView @JvmOverloads constructor(
CallerAutoPilotControlManager.setDemoMode(FunctionBuildConfig.isDemoMode)
CallerSopSettingManager.invokeDemoModeListener(isChecked)
CallerHmiViewControlListenerManager.invokeFuncMode(
FUNC_MODE_DEMO,
FunctionBuildConfig.isDemoMode
FUNC_MODE_DEMO,
FunctionBuildConfig.isDemoMode
)
if (!FunctionBuildConfig.isDemoMode) {
//关闭美化模式时,通知工控机
@@ -1058,8 +1061,16 @@ internal class DebugSettingView @JvmOverloads constructor(
ToastUtils.showLong("经纬度复制成功")
}
val certTxt = if(CallerCloudCertManager.getRootCrtF().isNullOrEmpty()) "未下载证书" else "已下载证书"
tvCertFile.text = "证书状态: $certTxt"
val certTxt =
if (CallerCloudCertManager.getRootCrtF()
.isNullOrEmpty()
) "<font color='red'>未下载证书</font>" else "<font color='green'>已下载证书</font>"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tvCertFile.text = Html.fromHtml("证书状态: $certTxt", Html.FROM_HTML_MODE_LEGACY)
} else {
tvCertFile.text = Html.fromHtml("证书状态: $certTxt")
}
//状态中心-后台优化状态
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
@@ -1272,27 +1283,49 @@ internal class DebugSettingView @JvmOverloads constructor(
}
}
//是否启用证书认证
cbSsl.isChecked = SharedPrefsMgr.getInstance().getBoolean(MoGoConfig.AUTOPILOT_CERTIFICATION,false)
cbSsl.isChecked =
SharedPrefsMgr.getInstance().getBoolean(
MoGoConfig.AUTOPILOT_CERTIFICATION,
MoGoConfig.AUTOPILOT_CERTIFICATION_DEFAULT_VALUE
)
cbSsl.setOnCheckedChangeListener { _, isChecked ->
cbSsl.isChecked = isChecked
SharedPrefsMgr.getInstance().putBoolean(MoGoConfig.AUTOPILOT_CERTIFICATION,isChecked)
//下载证书
if(isChecked){
if(CallerCloudCertManager.getRootCrtF().isNullOrEmpty()){
CallerCloudCertManager.certFileDownLoad{ errorMsg ->
isClickCheckedCbSsl = isChecked
// 下载证书
if (isChecked) {
if (CallerCloudCertManager.getRootCrtF().isNullOrEmpty()) {
if (!isFirstDownLoadCertHint) {
isFirstDownLoadCertHint = true
ToastUtils.showShort("证书文件不存在,正在下载")
}
cbSsl.isChecked = false
CallerCloudCertManager.certFileDownLoad { errorMsg ->
ThreadUtils.runOnUiThread {
ToastUtils.showShort(errorMsg)
}
}
}
}
SharedPrefsMgr.getInstance()
.putBoolean(MoGoConfig.AUTOPILOT_CERTIFICATION, cbSsl.isChecked)
}
}
override fun authCrtFile(device: String, root: String) {
super.authCrtFile(device, root)
ThreadUtils.runOnUiThread {
tvCertFile.text = "证书状态: 已下载证书"
if (isClickCheckedCbSsl) {
cbSsl.isChecked = true
SharedPrefsMgr.getInstance()
.putBoolean(MoGoConfig.AUTOPILOT_CERTIFICATION, true)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tvCertFile.text = Html.fromHtml(
"证书状态: <font color='green'>已下载证书</font>",
Html.FROM_HTML_MODE_LEGACY
)
} else {
tvCertFile.text = Html.fromHtml("证书状态: <font color='green'>已下载证书</font>")
}
}
}
@@ -1426,10 +1459,10 @@ internal class DebugSettingView @JvmOverloads constructor(
/**
* 设置是否开启pre check, true-打开false-关闭
*/
tbTraceEnable.isChecked = SharedPrefsMgr.getInstance().getBoolean("TRACE_ENABLE",true)
tbTraceEnable.isChecked = SharedPrefsMgr.getInstance().getBoolean("TRACE_ENABLE", true)
tbTraceEnable.setOnCheckedChangeListener { _, isChecked ->
HmiActionLog.hmiAction(TAG + "TRACE_ENABLE",isChecked)
SharedPrefsMgr.getInstance().putBoolean("TRACE_ENABLE",isChecked)
HmiActionLog.hmiAction(TAG + "TRACE_ENABLE", isChecked)
SharedPrefsMgr.getInstance().putBoolean("TRACE_ENABLE", isChecked)
CallerDevaToolsManager.setTraceEnable(isChecked)
}
@@ -1924,55 +1957,47 @@ internal class DebugSettingView @JvmOverloads constructor(
}
}
/**
* 自动驾驶状态回调
*/
override fun onAutopilotStatusResponse(state: Int) {
setAutopilotConnectStatus()
override fun onAutopilotIpcConnectStatusChanged(
status: AdasConstants.IpcConnectionStatus,
reason: String?
) {
setAutopilotConnectStatus(status)
}
/**
* 设置工控机连接状态
*/
private fun setAutopilotConnectStatus() {
ThreadUtils.runOnUiThread {
tvAutopilotConnectStatus.text = Html.fromHtml(
"工控机连接状态:${
if (AppConfigInfo.isConnectAutopilot) {
"<font color='blue'>正常"
} else {
"<font color='red'>异常 原因:${
if (AppConfigInfo.connectStatusDescribe.isNullOrEmpty()) {
"主动断开连接"
} else {
AppConfigInfo.connectStatusDescribe
}
}"
}
}"
)
private fun setAutopilotConnectStatus(status: AdasConstants.IpcConnectionStatus = AdasConstants.IpcConnectionStatus.DISCONNECTED) {
val color = when (status) {
AdasConstants.IpcConnectionStatus.CONNECTED -> {
"<font color='green'>"
}
if (AppConfigInfo.isConnectAutopilot) {
AdasConstants.IpcConnectionStatus.CONNECTING,
AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER,
AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK,
AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS -> {
"<font color='blue'>"
}
else -> {
"<font color='red'>"
}
}
val msg = Html.fromHtml("工控机连接状态:${color}${AppConfigInfo.connectStatusDescribe}")
ThreadUtils.runOnUiThread {
tvAutopilotConnectStatus.text = msg
if (status == AdasConstants.IpcConnectionStatus.CONNECTED ||
status == AdasConstants.IpcConnectionStatus.CONNECTING ||
status == AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER ||
status == AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK ||
status == AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS
) {
tvIpcConnectStatus.minLines = 1
} else {
tvIpcConnectStatus.minLines = 4
}
tvIpcConnectStatus.text = Html.fromHtml(
"工控机连接状态:${
if (AppConfigInfo.isConnectAutopilot) {
"<font color='blue'>正常"
} else {
"<font color='red'>异常 原因:${
if (AppConfigInfo.connectStatusDescribe.isNullOrEmpty()) {
"主动断开连接"
} else {
AppConfigInfo.connectStatusDescribe
}
}"
}
}"
)
tvIpcConnectStatus.text = msg
//如果是乘客端,则不显示工控机连接状态
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
tvIpcConnectStatus.visibility = View.GONE