[Fix]兼容2.3.0的docker版本
This commit is contained in:
@@ -25,6 +25,7 @@ import com.mogo.eagle.core.function.autopilot.adapter.MoGoAdasListenerImpl
|
||||
import com.mogo.eagle.core.function.autopilot.adapter.MoGoAdasMsgConnectStatusListenerImpl
|
||||
import com.mogo.eagle.core.function.autopilot.adapter.MoGoHandAdasMsgManager
|
||||
import com.mogo.eagle.core.function.autopilot.server.AsyncDataToAutopilotServer
|
||||
import com.mogo.eagle.core.function.autopilot.telematic.EventListener
|
||||
import com.mogo.eagle.core.function.autopilot.telematic.IMsgHandler
|
||||
import com.mogo.eagle.core.function.autopilot.telematic.TeleMsgHandler
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager
|
||||
@@ -72,6 +73,8 @@ class MoGoAutopilotProvider :
|
||||
private var mContext: Context? = null
|
||||
private lateinit var msgHandler: IMsgHandler
|
||||
private var timer: Timer? = null
|
||||
@Volatile
|
||||
private var isInit = false
|
||||
|
||||
override val functionName: String
|
||||
get() = TAG
|
||||
@@ -146,13 +149,24 @@ class MoGoAutopilotProvider :
|
||||
}
|
||||
}, MoGoAiCloudClientConfig.getInstance().sn)
|
||||
} else {
|
||||
val options = AdasOptions
|
||||
.Builder()
|
||||
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION)
|
||||
.setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext))
|
||||
.setClient(false)// 乘客端直连工控机改为false
|
||||
.build()
|
||||
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
msgHandler.setListener(object : EventListener {
|
||||
override fun connectDevice(isSupportMulti: Boolean) {
|
||||
if (!isInit) {
|
||||
isInit = true
|
||||
if (isSupportMulti) {
|
||||
// 直连工控机
|
||||
directConnect()
|
||||
} else {
|
||||
val options = AdasOptions
|
||||
.Builder()
|
||||
.setClient(true)
|
||||
.build()
|
||||
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
listenDeviceData()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
NSDNettyManager.getInstance()
|
||||
.searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn,
|
||||
AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode),
|
||||
@@ -179,10 +193,7 @@ class MoGoAutopilotProvider :
|
||||
|
||||
// 监听ADAS-SDK获取到的工控机数据(乘客也需注册)
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
// 乘客屏监听工控机基础信息回调
|
||||
if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
|
||||
}
|
||||
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
|
||||
CallerLogger.i("$M_ADAS_IMPL$TAG", "initServer……")
|
||||
// 同步数据给工控机的服务
|
||||
AsyncDataToAutopilotServer.INSTANCE.initServer()
|
||||
@@ -190,6 +201,47 @@ class MoGoAutopilotProvider :
|
||||
setRainMode(FunctionBuildConfig.isRainMode)
|
||||
}
|
||||
|
||||
private fun directConnect() {
|
||||
val options = AdasOptions
|
||||
.Builder()
|
||||
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION)
|
||||
.setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext))
|
||||
.setClient(false)// 乘客端直连工控机改为false
|
||||
.build()
|
||||
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
}
|
||||
|
||||
/**
|
||||
* 司机屏转发工控机发过来的数据,乘客屏接收解析后的数据保持原流程不变
|
||||
*/
|
||||
private fun listenDeviceData() {
|
||||
AdasManager.getInstance().setOnMultiDeviceListener(object : OnMultiDeviceListener {
|
||||
override fun onForwardingDriverIPCMessage(bytes: ByteArray?) {
|
||||
if (bytes == null)
|
||||
return
|
||||
// 发送数据给乘客端
|
||||
if (NSDNettyManager.getInstance().isServerStart) {
|
||||
msgHandler.synWriteTime()
|
||||
NSDNettyManager.getInstance()
|
||||
.sendMsgToAllClients(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes))
|
||||
} else {
|
||||
CallerLogger.d("$M_ADAS_IMPL$TAG", "司机端Server未启动!")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onForwardingPassengerIPCMessage(bytes: ByteArray?) {
|
||||
if (bytes == null)
|
||||
return
|
||||
NSDNettyManager.getInstance()
|
||||
.sendMogoProtocolMsgToServer(
|
||||
MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes),
|
||||
null
|
||||
)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 连接自动驾驶域控制器
|
||||
*
|
||||
@@ -561,10 +613,23 @@ class MoGoAutopilotProvider :
|
||||
}
|
||||
|
||||
override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) {
|
||||
// 乘客屏才监听
|
||||
CallerBindingcarManager.getBindingcarProvider()
|
||||
.getBindingcarInfo(carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn)
|
||||
invokeNettyConnResult("乘客屏车牌号:${carConfigResp.plateNumber},Mac地址为:${carConfigResp.macAddress}")
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (!isInit) {
|
||||
isInit = true
|
||||
if (carConfigResp.dockVersion.contains("2.3.0")) {// 不支持多连接
|
||||
// 司机屏转发工控机发过来的数据
|
||||
listenDeviceData()
|
||||
}
|
||||
}
|
||||
msgHandler.synMsgToAllClients()
|
||||
} else {// 乘客屏
|
||||
CallerBindingcarManager.getBindingcarProvider()
|
||||
.getBindingcarInfo(
|
||||
carConfigResp.macAddress,
|
||||
MoGoAiCloudClientConfig.getInstance().sn
|
||||
)
|
||||
invokeNettyConnResult("乘客屏车牌号:${carConfigResp.plateNumber},Mac地址为:${carConfigResp.macAddress}")
|
||||
}
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mogo.eagle.core.function.autopilot.telematic
|
||||
|
||||
interface EventListener {
|
||||
fun connectDevice(isSupportMulti: Boolean)
|
||||
}
|
||||
@@ -19,4 +19,6 @@ interface IMsgHandler {
|
||||
fun getTeleTimeStamp(): Long
|
||||
|
||||
fun synMsgToAllClients()
|
||||
|
||||
fun setListener(eventListener: EventListener?)
|
||||
}
|
||||
@@ -47,6 +47,8 @@ class TeleMsgHandler : IMsgHandler {
|
||||
@Volatile
|
||||
private var timestamp = 0L
|
||||
|
||||
private var listener: EventListener? = null
|
||||
|
||||
override fun handleMsgFromServer(msg: MogoProtocolMsg?, channel: Channel?) {
|
||||
msg?.let {
|
||||
when (it.protocolType) {
|
||||
@@ -86,6 +88,7 @@ class TeleMsgHandler : IMsgHandler {
|
||||
AppConfigInfo.plateNumber = carConfig.plateNumber
|
||||
AppConfigInfo.iPCMacAddress = carConfig.macAddress
|
||||
AppConfigInfo.dockerVersion = carConfig.dockVersion
|
||||
listener?.connectDevice(!carConfig.dockVersion.contains("2.3.0"))
|
||||
invokeNettyConnResult(
|
||||
"司机屏发送给乘客屏配置信息为:${
|
||||
TextFormat.printer().escapingNonAscii(false).printToString(carConfig)
|
||||
@@ -255,6 +258,10 @@ class TeleMsgHandler : IMsgHandler {
|
||||
return wrTimeStamp
|
||||
}
|
||||
|
||||
override fun setListener(eventListener: EventListener?) {
|
||||
listener = eventListener
|
||||
}
|
||||
|
||||
private fun reqServerSN() {
|
||||
if (NettyTcpClient.sSERVER_SN.isNullOrEmpty()) {
|
||||
ProcessLifecycleOwner.get().lifecycleScope.launch {
|
||||
|
||||
Reference in New Issue
Block a user