[630][adas] 新增域控认证;优化重连机制:无限重连、用不重连、指定次数重连;优化连接状态;新增设置是否启用超时检测;新增是否自动连接;
This commit is contained in:
@@ -55,7 +55,6 @@ import com.zhidao.support.adas.high.AdasOptions
|
||||
import com.zhidao.support.adas.high.OnMultiDeviceListener
|
||||
import com.zhidao.support.adas.high.chain.AdasChain
|
||||
import com.zhidao.support.adas.high.common.Constants
|
||||
import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS
|
||||
import com.zhidao.support.adas.high.common.CupidLogUtils
|
||||
import com.zhjt.mogo.adas.common.MessageType
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
@@ -98,7 +97,7 @@ class MoGoAutopilotControlProvider :
|
||||
override fun init(context: Context) {
|
||||
CallerLogger.i("$M_D_C$TAG", "初始化工控机连接……")
|
||||
mContext = context
|
||||
AdasManager.getInstance().init(context)
|
||||
AdasManager.getInstance().init(context)//必须在AdasManager.getInstance().create() 和构建AdasOptions之前调用
|
||||
runCatching {
|
||||
// 初始化ADAS 域控制器
|
||||
CupidLogUtils.setEnableLog(false)
|
||||
@@ -118,13 +117,13 @@ class MoGoAutopilotControlProvider :
|
||||
// "192.168.1.102"
|
||||
val options = AdasOptions.newBuilder()
|
||||
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.PING)
|
||||
.setPingAddressList(AdasManager.getInstance().ipcFixationIPList)
|
||||
.setPingAddressList(AdasManager.getInstance().pingAddressList)
|
||||
.setPassenger(false)
|
||||
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
|
||||
// .setSubscribeInterfaceOptions(subscribeInterfaceOptions)//
|
||||
.build()
|
||||
|
||||
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
//////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
|
||||
// 监听ADAS-SDK获取到的工控机数据
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
@@ -219,7 +218,7 @@ class MoGoAutopilotControlProvider :
|
||||
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
|
||||
.build()
|
||||
AdasManager.getInstance()
|
||||
.create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
.create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
// 监听ADAS-SDK获取到的工控机数据
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
// 接收司机屏发过来的感知、定位等数据
|
||||
@@ -246,11 +245,11 @@ class MoGoAutopilotControlProvider :
|
||||
val options = AdasOptions
|
||||
.newBuilder()
|
||||
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.PING)
|
||||
.setPingAddressList(AdasManager.getInstance().ipcFixationIPList)
|
||||
.setPingAddressList(AdasManager.getInstance().pingAddressList)
|
||||
.setPassenger(false)// 乘客端直连工控机改为false
|
||||
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
|
||||
.build()
|
||||
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
//////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
|
||||
// 监听ADAS-SDK获取到的工控机数据
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
@@ -309,7 +308,7 @@ class MoGoAutopilotControlProvider :
|
||||
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.SPECIFIED)
|
||||
.setSpecifiedAddress(autoPilotIp)
|
||||
.build()
|
||||
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
|
||||
// AdasManager.getInstance().adasOptions.isClient = false
|
||||
// AdasManager.getInstance().adasOptions.ipcConnectionMode =
|
||||
@@ -368,7 +367,7 @@ class MoGoAutopilotControlProvider :
|
||||
.sendAutoPilotModeReq(1, source, null)
|
||||
invokeAutoPilotResult(if (invokeResult) "无参自动驾驶调用成功" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
|
||||
} else {
|
||||
if (AdasManager.getInstance().ipcConnectionStatus == IPC_CONNECTION_STATUS.CONNECTED) {
|
||||
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
|
||||
val invokeResult = AdasManager.getInstance()
|
||||
.sendAutoPilotModeReq(1, source, null)
|
||||
invokeAutoPilotResult(if (invokeResult) "无参自动驾驶调用成功" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
|
||||
@@ -384,7 +383,7 @@ class MoGoAutopilotControlProvider :
|
||||
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo())
|
||||
invokeAutoPilotResult(if (invokeResult) "自动驾驶调用成功" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
|
||||
} else {
|
||||
if (AdasManager.getInstance().ipcConnectionStatus == IPC_CONNECTION_STATUS.CONNECTED) {
|
||||
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
|
||||
val invokeResult = AdasManager.getInstance()
|
||||
.sendAutoPilotModeReq(1, source, controlParameters.toRouteInfo())
|
||||
invokeAutoPilotResult(if (invokeResult) "自动驾驶调用成功" else "自动驾驶调用失败, socket 或者 rawPack 可能为空")
|
||||
@@ -431,7 +430,7 @@ class MoGoAutopilotControlProvider :
|
||||
}
|
||||
|
||||
override fun cancelAutoPilot() {
|
||||
if (AdasManager.getInstance().ipcConnectionStatus == IPC_CONNECTION_STATUS.CONNECTED) {
|
||||
if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) {
|
||||
AdasManager.getInstance().sendAutoPilotModeReq(0, 1, null)
|
||||
} else {
|
||||
CallerLogger.e("$M_D_C$TAG", "车机与工控机链接失败,无法断开自动驾驶")
|
||||
@@ -925,7 +924,7 @@ class MoGoAutopilotControlProvider :
|
||||
* 车机与工控机是否连上了
|
||||
*/
|
||||
override fun isConnected(): Boolean {
|
||||
return AdasManager.getInstance().ipcConnectionStatus == IPC_CONNECTION_STATUS.CONNECTED
|
||||
return AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -58,6 +58,7 @@ import com.mogo.support.obu.ObuScene
|
||||
import com.zhidao.support.adas.high.OnAdasListener
|
||||
import com.zhjt.mogo.adas.data.bean.AdasParam
|
||||
import com.zhidao.support.adas.high.common.ProtocolStatus
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics
|
||||
import com.zhjt.mogo.adas.data.bean.ReceivedAck
|
||||
@@ -357,12 +358,17 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
// 自动驾驶设备基础信息请求
|
||||
override fun onBasicInfoReq(
|
||||
header: MessagePad.Header,
|
||||
basicInfoReq: MessagePad.BasicInfoReq?
|
||||
) {
|
||||
invokeAutopilotSNRequest()
|
||||
/**
|
||||
* 自动驾驶设备基础信息请求
|
||||
* 连接时启用认证 后才会有认证结果
|
||||
* ROOT证书异常会影响校验域控证书
|
||||
* PAD证书异常会影响域控端校验的证书校验,域控端证书校验失败将会断开连接,且并不会给出断开原因,ADAS LIB会执行重连操作(如果配置启用重连)
|
||||
* 校验域控证书认证失败会主动断开连接,且不进行重连
|
||||
*
|
||||
* @param status 域控证书认证结果{@link AdasConstants.CertificationStatus}
|
||||
*/
|
||||
override fun onBasicInfoReq(status: AdasConstants.CertificationStatus) {
|
||||
invokeAutopilotSNRequest(status)
|
||||
}
|
||||
|
||||
//工控机基础配置信息
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package com.mogo.eagle.core.function.datacenter.autopilot.adapter
|
||||
|
||||
import com.mogo.commons.debug.DebugConfig.*
|
||||
import com.mogo.commons.debug.DebugConfig.NET_MODE_DEMO
|
||||
import com.mogo.commons.debug.DebugConfig.NET_MODE_DEV
|
||||
import com.mogo.commons.debug.DebugConfig.NET_MODE_QA
|
||||
import com.mogo.commons.debug.DebugConfig.NET_MODE_RELEASE
|
||||
import com.mogo.commons.debug.DebugConfig.getNetMode
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
@@ -18,10 +22,13 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.zhidao.support.adas.high.AdasManager
|
||||
import com.zhidao.support.adas.high.OnAdasConnectStatusListener
|
||||
import com.zhidao.support.adas.high.bean.VersionCompatibility
|
||||
import com.zhidao.support.adas.high.common.Constants
|
||||
import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.*
|
||||
import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.DEMO
|
||||
import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.DEVELOP
|
||||
import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.PRODUCTION
|
||||
import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.TEST
|
||||
import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.DRIVER
|
||||
import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.PASSENGER
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
|
||||
/**
|
||||
* ADAS-SDK与工控机连接状态回调
|
||||
@@ -39,17 +46,53 @@ class MoGoAdasMsgConnectStatusListenerImpl :
|
||||
|
||||
init {
|
||||
CallerCloudListenerManager.addListener(TAG, this)
|
||||
CallerAutopilotActionsListenerManager.setConnected(AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED)
|
||||
CallerParallelDrivingActionsListenerManager.setConnected(AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED)
|
||||
CallerAutopilotActionsListenerManager.setConnected(AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED)
|
||||
CallerParallelDrivingActionsListenerManager.setConnected(AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED)
|
||||
}
|
||||
|
||||
override fun onConnectionIPCStatus(ipcConnectionStatus: Int, reason: String?) {
|
||||
CallerAutopilotActionsListenerManager.setConnected(ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED)
|
||||
CallerParallelDrivingActionsListenerManager.setConnected(ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED)
|
||||
private fun resetArgs(reason: String? = null) {
|
||||
if (connectStatus) {
|
||||
reason?.let {
|
||||
ToastUtils.showLong(it)
|
||||
}
|
||||
connectStatus = false
|
||||
}
|
||||
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP =
|
||||
AdasManager.getInstance().ipcConnectedIp
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectPort =
|
||||
AdasManager.getInstance().ipcConnectedPort
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = false
|
||||
AppConfigInfo.isConnectAutopilot = false
|
||||
//与工控机断开连接,需要重置自动驾驶状态(包括上传至云平台缓存信息),等待连接成功后同步状态信息
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state = 0
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().pilotmode = 0
|
||||
}
|
||||
|
||||
/**
|
||||
* 与工控机链接状态变化
|
||||
*
|
||||
* @param status {@link AdasConstants.IpcConnectionStatus}
|
||||
* @param reason 连接信息(需要判null),目前只有以下参数存在值,其他全部为null
|
||||
* {@link AdasConstants.IpcConnectionStatus#HEARTBEAT_TIMEOUT} 表示超时时间
|
||||
* {@link AdasConstants.IpcConnectionStatus#CONNECT_EXCEPTION} 表示连接异常原因
|
||||
* {@link AdasConstants.IpcConnectionStatus#SERVER_DISCONNECTED} 服务端断开(如果服务端关闭时发送了原因将存在,如果服务端关闭时未发送将为null)
|
||||
*/
|
||||
override fun onConnectionIPCStatus(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||
CallerAutopilotActionsListenerManager.setConnected(status == AdasConstants.IpcConnectionStatus.CONNECTED)
|
||||
CallerParallelDrivingActionsListenerManager.setConnected(status == AdasConstants.IpcConnectionStatus.CONNECTED)
|
||||
AppConfigInfo.connectStatusDescribe = reason
|
||||
when (ipcConnectionStatus) {
|
||||
Constants.IPC_CONNECTION_STATUS.CONNECTED -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "webSocket 连接成功")
|
||||
when (status) {
|
||||
AdasConstants.IpcConnectionStatus.DISCONNECTED -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"未连接或主动断开连接(未连接:鹰眼首次启动时未调用连接函数【目前鹰眼默认启动就会调用连接函数】;主动断开连接:主动调用断开连接函数;)"
|
||||
)
|
||||
resetArgs()
|
||||
}
|
||||
|
||||
AdasConstants.IpcConnectionStatus.CONNECTED -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "已连接")
|
||||
connectStatus = true
|
||||
// 初始化自动驾驶状态信息
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP =
|
||||
@@ -71,38 +114,86 @@ class MoGoAdasMsgConnectStatusListenerImpl :
|
||||
//每次工控机连接成功后,需同步当前设置的雨天模式状态
|
||||
CallerAutoPilotControlManager.setRainMode(FunctionBuildConfig.isRainMode)
|
||||
}
|
||||
Constants.IPC_CONNECTION_STATUS.DISCONNECTED -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "webSocket 连接失败 reason:$reason")
|
||||
if (connectStatus) {
|
||||
reason?.let {
|
||||
ToastUtils.showLong("工控机连接断开,原因:$it , 等待重连")
|
||||
}
|
||||
connectStatus = false
|
||||
}
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP =
|
||||
AdasManager.getInstance().ipcConnectedIp
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectPort =
|
||||
AdasManager.getInstance().ipcConnectedPort
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = false
|
||||
AppConfigInfo.isConnectAutopilot = false
|
||||
//与工控机断开连接,需要重置自动驾驶状态(包括上传至云平台缓存信息),等待连接成功后同步状态信息
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state = 0
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().pilotmode = 0
|
||||
|
||||
AdasConstants.IpcConnectionStatus.CONNECTING -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "连接中")
|
||||
}
|
||||
Constants.IPC_CONNECTION_STATUS.CONNECTING -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "webSocket 正在连接")
|
||||
|
||||
AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "重连中(定时器)")
|
||||
}
|
||||
Constants.IPC_CONNECTION_STATUS.SEARCH_ADDRESS -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "webSocket 正在搜索工控机IP")
|
||||
|
||||
AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "重连中(网络监听)")
|
||||
}
|
||||
Constants.IPC_CONNECTION_STATUS.NOT_FOUND_ADDRESS -> {
|
||||
CallerLogger.d("$M_D_C$TAG", "webSocket 找不到可用IP 传入的IP不可用或固定IP列表中所有IP不可用")
|
||||
|
||||
AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"连接异常(表示鹰眼与域控连接失败、无法连接、非正常断开等),原因:$reason"
|
||||
)
|
||||
resetArgs("域控连接异常,等待重连。原因:${reason}")
|
||||
}
|
||||
|
||||
AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"非法地址(连接模式为指定地址时:表示当前鹰眼调用连接时传入的域控地址错误或不符合规则【不修改默认配置不会出现此问题】;连接模式为PING模式时:表示传入的PING地址列表存在问题)"
|
||||
)
|
||||
resetArgs()
|
||||
}
|
||||
|
||||
AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"正在搜索域控地址(表示当前鹰眼正在查找是否有可用的域控地址)"
|
||||
)
|
||||
}
|
||||
|
||||
AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"找不到可用地址(当前鹰眼配置的域控地址列表中的全部地址均无法PING通【不修改默认配置的情况下需要排查PAD是否连接车载路由器、工控机是否连接车载路由器、工控机是否开机等】)"
|
||||
)
|
||||
resetArgs()
|
||||
}
|
||||
|
||||
AdasConstants.IpcConnectionStatus.CERTIFICATION_FAILED -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"认证异常(表示鹰眼端或鹰眼端和域控端启用认证后,认证出现异常。具体认证异常状态详情见认证状态CertificationStatus【鹰眼端验证域控证书失败会断开连接不进行重连;域控端验证鹰眼端证书失败会断开连接,但是由于域控断开并没有发送断开的原因所以鹰眼会自动重连,重连次数可配置为:用不重连、无限重连、指定次数重连】)"
|
||||
)
|
||||
resetArgs()
|
||||
}
|
||||
|
||||
AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"心跳超时(表示连接域控成功后在一段时间内未收到域控任何数据,默认4秒【可以配置】),超时时间:${reason}秒"
|
||||
)
|
||||
resetArgs("与域控心跳超时,等待重连")
|
||||
}
|
||||
|
||||
AdasConstants.IpcConnectionStatus.PROTOCOL_MISMATCH -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"協議不匹配(表示被连接的服务端非WebSocket协议【可能性非常低】)"
|
||||
)
|
||||
resetArgs()
|
||||
}
|
||||
|
||||
AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED -> {
|
||||
CallerLogger.d(
|
||||
"$M_D_C$TAG",
|
||||
"域控主动断开连接(表示域控主动发起断开WebSocket连接,目前主要原因有:1.证书认证失败;2.老版本MAP不支持多连接的情况下会踢掉客户端;),域控断开发送的消息:${reason}"
|
||||
)
|
||||
resetArgs("域控主动断开连接,等待重连。可能原因:证书认证失败或不支持多连接")
|
||||
}
|
||||
}
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().ipcConnStatus = ipcConnectionStatus
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().ipcConnStatus = status
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatusDescribe = reason
|
||||
CallerAutoPilotStatusListenerManager.invokeAutoPilotStatus()
|
||||
CallerAutoPilotStatusListenerManager.invokeAutoPilotIPCStatusChanged(ipcConnectionStatus, reason)
|
||||
CallerAutoPilotStatusListenerManager.invokeAutoPilotIPCStatusChanged(status, reason)
|
||||
}
|
||||
|
||||
override fun onCompatibility(versionCompatibility: VersionCompatibility?) {
|
||||
@@ -112,7 +203,7 @@ class MoGoAdasMsgConnectStatusListenerImpl :
|
||||
/**
|
||||
* 工控机获取SN
|
||||
*/
|
||||
override fun onAutopilotSNRequest() {
|
||||
override fun onAutopilotSNRequest(status: AdasConstants.CertificationStatus) {
|
||||
syncBasicInfoToAutopilot()
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import chassis.ChassisStatesOuterClass
|
||||
import com.mogo.eagle.core.function.api.autopilot.*
|
||||
import com.mogo.eagle.core.function.call.autopilot.*
|
||||
import com.mogo.eagle.core.utilcode.kotlin.safeCancel
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.CanStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
|
||||
import kotlinx.coroutines.Job
|
||||
@@ -74,7 +75,7 @@ internal class CanImpl(ctx: Context) :
|
||||
send(CanStatus(isCanEnabled()))
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
send(CanStatus(isCanEnabled()))
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.zhjt.mogo_core_function_devatools.status.flow.ipc
|
||||
import android.content.*
|
||||
import com.mogo.eagle.core.function.api.autopilot.*
|
||||
import com.mogo.eagle.core.function.call.autopilot.*
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.IpcStatus
|
||||
|
||||
@@ -12,14 +13,14 @@ internal class IpcImpl(ctx: Context): IFlow<IpcStatus>(ctx), IMoGoAutopilotStatu
|
||||
const val TAG = "IpcImpl"
|
||||
}
|
||||
|
||||
private var state: Int = -1
|
||||
private var state: AdasConstants.IpcConnectionStatus? = null
|
||||
|
||||
override fun onCreate() {
|
||||
checkAndSend()
|
||||
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
if (state != status) {
|
||||
checkAndSend()
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.RTKStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -83,7 +84,7 @@ internal class RTKImpl(ctx: Context): IFlow<RTKStatus>(ctx), IMoGoAutopilotStatu
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
|
||||
CallerLogger.d("$M_DEVA$TAG", "工控机断开了....")
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.content.*
|
||||
import com.mogo.eagle.core.function.api.autopilot.*
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion.STATUS_AUTOPILOT_RUNNING
|
||||
import com.mogo.eagle.core.function.call.autopilot.*
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.*
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.TracingStatus.Tracing.*
|
||||
import com.zhjt.mogo_core_function_devatools.status.flow.*
|
||||
@@ -19,7 +20,7 @@ internal class TracingImpl(ctx: Context): IFlow<TracingStatus>(ctx), IMoGoAutopi
|
||||
|
||||
private var old: TracingStatus.Tracing = UNKNOWN
|
||||
|
||||
private val ipcConnectStatus by lazy { AtomicInteger() }
|
||||
private val ipcConnectStatus by lazy { AtomicReference<AdasConstants.IpcConnectionStatus>() }
|
||||
|
||||
private val ipcStatus by lazy { AtomicInteger() }
|
||||
|
||||
@@ -54,7 +55,7 @@ internal class TracingImpl(ctx: Context): IFlow<TracingStatus>(ctx), IMoGoAutopi
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
try {
|
||||
if (ipcConnectStatus.get() != status) {
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import kotlinx.android.synthetic.main.view_blue_tooth.view.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
@@ -99,7 +100,7 @@ open class BlueToothView: LinearLayout, IMoGoMoFangProvider.OnMoFangStatusListen
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
|
||||
UiThreadHandler.post {
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.mogo.eagle.core.function.hmi.notification.WarningFloat
|
||||
import com.mogo.eagle.core.function.hmi.ui.tools.DockerRebootDialog
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import kotlinx.android.synthetic.main.view_check_system.view.*
|
||||
|
||||
class CheckSystemView @JvmOverloads constructor(
|
||||
@@ -100,10 +101,10 @@ class CheckSystemView @JvmOverloads constructor(
|
||||
CallerAutoPilotStatusListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
ThreadUtils.runOnUiThread {
|
||||
setViewStatus(status == 0x00)
|
||||
setViewStatus(status == AdasConstants.IpcConnectionStatus.CONNECTED)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils.OnNetworkStatusChangedListener
|
||||
import com.mogo.eagle.core.utilcode.util.SpanUtils
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import kotlinx.android.synthetic.main.view_connect_status.view.tvADASStatus
|
||||
import kotlinx.android.synthetic.main.view_connect_status.view.tvNetStatus
|
||||
|
||||
@@ -105,11 +106,14 @@ class ConnectStatusView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
override fun onAutopilotIpcConnectStatusChanged(
|
||||
status: AdasConstants.IpcConnectionStatus,
|
||||
reason: String?
|
||||
) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
tvADASStatus.post {
|
||||
when (status) {
|
||||
IPC_CONNECTION_STATUS.CONNECTED -> {
|
||||
AdasConstants.IpcConnectionStatus.CONNECTED -> {
|
||||
// 统计代码
|
||||
val properties: MutableMap<String, Any> = HashMap()
|
||||
properties["连接状态"] = "已连接"
|
||||
@@ -135,7 +139,15 @@ class ConnectStatusView @JvmOverloads constructor(
|
||||
MogoAnalyticUtils.track("IPC_CONNECTION_STATUS", properties)
|
||||
}
|
||||
|
||||
IPC_CONNECTION_STATUS.DISCONNECTED -> {
|
||||
AdasConstants.IpcConnectionStatus.DISCONNECTED,//未连接或主动断开连接(不管是否配置重连都不进行重连)
|
||||
AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION,//连接异常
|
||||
AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS,//非法地址不管是否配置重连都不进行重连)
|
||||
AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS,//找不到可用地址
|
||||
AdasConstants.IpcConnectionStatus.CERTIFICATION_FAILED,//认证异常(不管是否配置重连都不进行重连)
|
||||
AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT,//心跳超时
|
||||
AdasConstants.IpcConnectionStatus.PROTOCOL_MISMATCH,//協議不匹配
|
||||
AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED,//服务端主动断开连接
|
||||
-> {
|
||||
disconnectADASCount++
|
||||
disconnectADASTime = System.currentTimeMillis()
|
||||
val adasSpan = SpanUtils.with(tvADASStatus)
|
||||
@@ -173,33 +185,4 @@ class ConnectStatusView @JvmOverloads constructor(
|
||||
CallerAutoPilotStatusListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
interface IPC_CONNECTION_STATUS {
|
||||
companion object {
|
||||
/**
|
||||
* 已连接
|
||||
*/
|
||||
const val CONNECTED = 0x00
|
||||
|
||||
/**
|
||||
* 未连接
|
||||
*/
|
||||
const val DISCONNECTED = 0x01
|
||||
|
||||
/**
|
||||
* 正在连接
|
||||
*/
|
||||
const val CONNECTING = 0x02
|
||||
|
||||
/**
|
||||
* 正在搜索IP
|
||||
*/
|
||||
const val SEARCH_ADDRESS = 0x03
|
||||
|
||||
/**
|
||||
* 找不到可用IP 传入的IP不可用或固定IP列表中所有IP不可用
|
||||
*/
|
||||
const val NOT_FOUND_ADDRESS = 0x04
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -51,6 +51,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.map.listener.IMogoMapListener
|
||||
import com.mogo.map.listener.MogoMapListenerHandler.Companion.mogoMapListenerHandler
|
||||
import com.mogo.map.uicontroller.EnumMapUI
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import kotlinx.android.synthetic.main.module_main_activity_main.module_main_id_cover_up
|
||||
import kotlinx.android.synthetic.main.module_main_activity_main.rvConnectInfo
|
||||
@@ -71,8 +72,8 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
|
||||
private var isFirst = false
|
||||
private var mConnAdapter: ConnInfoAdapter? = null
|
||||
private val dataList: List<AutopilotStatusInfo> = ArrayList()
|
||||
// private var mLastStatus = 0x00
|
||||
private var mLastStatus = 0x01
|
||||
// private var mLastStatus = AdasConstants.IpcConnectionStatus.CONNECTED
|
||||
private var mLastStatus = AdasConstants.IpcConnectionStatus.DISCONNECTED
|
||||
private var isFloatingLayerHidden = false
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
@@ -323,7 +324,7 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
|
||||
MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, true)
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: AdasConstants.IpcConnectionStatus, reason: String?) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
UiThreadHandler.post {
|
||||
if(mLastStatus != status){
|
||||
|
||||
Reference in New Issue
Block a user