[6.0.0][Fix]解决偶现的崩溃问题
This commit is contained in:
@@ -7,6 +7,7 @@ import bag_manager.BagManagerOuterClass
|
||||
import chassis.SpecialVehicleTaskCmdOuterClass
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
||||
import com.mogo.eagle.core.data.autopilot.toAutoPilotLine
|
||||
import com.mogo.eagle.core.data.autopilot.toRouteInfo
|
||||
@@ -96,14 +97,15 @@ class MoGoAutopilotControlProvider :
|
||||
override fun init(context: Context) {
|
||||
CallerLogger.i("$M_D_C$TAG", "初始化工控机连接……")
|
||||
mContext = context
|
||||
// 初始化ADAS 域控制器
|
||||
CupidLogUtils.setEnableLog(false)
|
||||
msgHandler = TeleMsgHandler()
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {// 司机
|
||||
// 注册地图采集功能
|
||||
CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this)
|
||||
runCatching {
|
||||
// 初始化ADAS 域控制器
|
||||
CupidLogUtils.setEnableLog(false)
|
||||
msgHandler = TeleMsgHandler()
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {// 司机
|
||||
// 注册地图采集功能
|
||||
CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this)
|
||||
|
||||
// 配置默认关闭的连接topic
|
||||
// 配置默认关闭的连接topic
|
||||
// val messageTypes: MutableSet<MessageType> = HashSet()
|
||||
// messageTypes.add(MessageType.TYPE_RECEIVE_POINT_CLOUD)
|
||||
// val subscribeInterfaceOptions = SubscribeInterfaceOptions.newBuilder()
|
||||
@@ -111,125 +113,131 @@ class MoGoAutopilotControlProvider :
|
||||
// .setType(Constants.SUBSCRIBE_TYPE.UNSUBSCRIBE)
|
||||
// .setMessageTypes(messageTypes).build()
|
||||
|
||||
// "192.168.1.102"
|
||||
val options = AdasOptions.Builder()
|
||||
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION)
|
||||
.setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext))
|
||||
.setClient(false)
|
||||
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
|
||||
// "192.168.1.102"
|
||||
val options = AdasOptions.Builder()
|
||||
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION)
|
||||
.setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext))
|
||||
.setClient(false)
|
||||
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
|
||||
// .setSubscribeInterfaceOptions(subscribeInterfaceOptions)//
|
||||
.build()
|
||||
.build()
|
||||
|
||||
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
//////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
|
||||
// 监听ADAS-SDK获取到的工控机数据
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object :
|
||||
NettyServerListener<MogoProtocolMsg> {
|
||||
override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) {
|
||||
msgHandler.handleMsgFromClient(msg, channel)
|
||||
}
|
||||
|
||||
override fun onStartServer() {
|
||||
ToastUtils.showShort("司机端服务启动成功!")
|
||||
if (timer == null) {
|
||||
timer = Timer()
|
||||
AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
//////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
|
||||
// 监听ADAS-SDK获取到的工控机数据
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object :
|
||||
NettyServerListener<MogoProtocolMsg> {
|
||||
override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) {
|
||||
msgHandler.handleMsgFromClient(msg, channel)
|
||||
}
|
||||
// 10s同步一次数据到乘客屏
|
||||
timer!!.schedule(object : TimerTask() {
|
||||
override fun run() {
|
||||
// 同步是否开启美化模式
|
||||
setDemoMode(FunctionBuildConfig.isDemoMode)
|
||||
setIgnoreConditionDraw(FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData)
|
||||
msgHandler.synMsgToAllClients()
|
||||
|
||||
override fun onStartServer() {
|
||||
ToastUtils.showShort("司机端服务启动成功!")
|
||||
if (timer == null) {
|
||||
timer = Timer()
|
||||
}
|
||||
}, 1000, 10000)
|
||||
invokeNettyConnResult("司机端服务启动成功!")
|
||||
CallerTelematicStatusListenerManager.invokeServerStatusChanged(true)
|
||||
}
|
||||
|
||||
override fun onStopServer() {
|
||||
ToastUtils.showLong("司机端服务停止!")
|
||||
timer?.cancel()
|
||||
timer = null
|
||||
invokeNettyConnResult("司机端服务停止!")
|
||||
CallerTelematicStatusListenerManager.invokeServerStatusChanged(false)
|
||||
}
|
||||
|
||||
override fun onChannelConnect(channel: Channel?) {
|
||||
msgHandler.handleClientConn2Server(channel)
|
||||
}
|
||||
|
||||
override fun onChannelDisConnect(channel: Channel?) {
|
||||
CallerLogger.d("$M_D_C$TAG", "onChannelDisConnect")
|
||||
}
|
||||
|
||||
override fun onReceiveClientSign(channel: Channel?, sn: String?) {
|
||||
sn?.let {
|
||||
invokeNettyConnResult("连接成功的乘客屏sn为:$it")
|
||||
// 10s同步一次数据到乘客屏
|
||||
timer!!.schedule(object : TimerTask() {
|
||||
override fun run() {
|
||||
// 同步是否开启美化模式
|
||||
setDemoMode(FunctionBuildConfig.isDemoMode)
|
||||
setIgnoreConditionDraw(FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData)
|
||||
msgHandler.synMsgToAllClients()
|
||||
}
|
||||
}, 1000, 10000)
|
||||
invokeNettyConnResult("司机端服务启动成功!")
|
||||
CallerTelematicStatusListenerManager.invokeServerStatusChanged(true)
|
||||
}
|
||||
}
|
||||
}, MoGoAiCloudClientConfig.getInstance().sn)
|
||||
} else {
|
||||
NSDNettyManager.getInstance()
|
||||
.searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn,
|
||||
AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode),
|
||||
object : NettyClientListener<MogoProtocolMsg> {
|
||||
override fun onMessageResponseClient(
|
||||
msg: MogoProtocolMsg?,
|
||||
sign: String?,
|
||||
channel: Channel
|
||||
) {
|
||||
// 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端
|
||||
msgHandler.handleMsgFromServer(msg, channel)
|
||||
}
|
||||
|
||||
override fun onClientStatusConnectChanged(
|
||||
statusCode: Int,
|
||||
sign: String?,
|
||||
channel: Channel
|
||||
) {
|
||||
msgHandler.handleClientConnStatus(statusCode, sign, channel)
|
||||
}
|
||||
})
|
||||
}
|
||||
msgHandler.setListener(object : EventListener {
|
||||
override fun connectDevice(isSupportMulti: Boolean) {
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (!isInit) {
|
||||
isInit = true
|
||||
// 转发工控机数据给乘客屏
|
||||
listenDeviceData()
|
||||
override fun onStopServer() {
|
||||
ToastUtils.showLong("司机端服务停止!")
|
||||
timer?.cancel()
|
||||
timer = null
|
||||
invokeNettyConnResult("司机端服务停止!")
|
||||
CallerTelematicStatusListenerManager.invokeServerStatusChanged(false)
|
||||
}
|
||||
} else {
|
||||
if (!isInit) {
|
||||
isInit = true
|
||||
UiThreadHandler.post {
|
||||
if (isSupportMulti) {
|
||||
// 直连工控机
|
||||
directConnect()
|
||||
} else {
|
||||
val options = AdasOptions
|
||||
.Builder()
|
||||
.setClient(true)
|
||||
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
|
||||
.build()
|
||||
AdasManager.getInstance()
|
||||
.create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
// 监听ADAS-SDK获取到的工控机数据
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
// 接收司机屏发过来的感知、定位等数据
|
||||
listenDeviceData()
|
||||
|
||||
override fun onChannelConnect(channel: Channel?) {
|
||||
msgHandler.handleClientConn2Server(channel)
|
||||
}
|
||||
|
||||
override fun onChannelDisConnect(channel: Channel?) {
|
||||
CallerLogger.d("$M_D_C$TAG", "onChannelDisConnect")
|
||||
}
|
||||
|
||||
override fun onReceiveClientSign(channel: Channel?, sn: String?) {
|
||||
sn?.let {
|
||||
invokeNettyConnResult("连接成功的乘客屏sn为:$it")
|
||||
}
|
||||
}
|
||||
}, MoGoAiCloudClientConfig.getInstance().sn)
|
||||
} else {
|
||||
NSDNettyManager.getInstance()
|
||||
.searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn,
|
||||
AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode),
|
||||
object : NettyClientListener<MogoProtocolMsg> {
|
||||
override fun onMessageResponseClient(
|
||||
msg: MogoProtocolMsg?,
|
||||
sign: String?,
|
||||
channel: Channel
|
||||
) {
|
||||
// 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端
|
||||
msgHandler.handleMsgFromServer(msg, channel)
|
||||
}
|
||||
|
||||
override fun onClientStatusConnectChanged(
|
||||
statusCode: Int,
|
||||
sign: String?,
|
||||
channel: Channel
|
||||
) {
|
||||
msgHandler.handleClientConnStatus(statusCode, sign, channel)
|
||||
}
|
||||
})
|
||||
}
|
||||
msgHandler.setListener(object : EventListener {
|
||||
override fun connectDevice(isSupportMulti: Boolean) {
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (!isInit) {
|
||||
isInit = true
|
||||
// 转发工控机数据给乘客屏
|
||||
listenDeviceData()
|
||||
}
|
||||
} else {
|
||||
if (!isInit) {
|
||||
isInit = true
|
||||
UiThreadHandler.post {
|
||||
if (isSupportMulti) {
|
||||
// 直连工控机
|
||||
directConnect()
|
||||
} else {
|
||||
val options = AdasOptions
|
||||
.Builder()
|
||||
.setClient(true)
|
||||
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
|
||||
.build()
|
||||
AdasManager.getInstance()
|
||||
.create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
// 监听ADAS-SDK获取到的工控机数据
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
// 接收司机屏发过来的感知、定位等数据
|
||||
listenDeviceData()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
|
||||
CallerLogger.i("$M_D_C$TAG", "initServer……")
|
||||
// 同步数据给工控机的服务
|
||||
AsyncDataToAutopilotServer.INSTANCE.initServer()
|
||||
}.onFailure { throwable ->
|
||||
if (DebugConfig.isDebug()) {
|
||||
ToastUtils.showLong("AutoPilot出现异常,请立即处理!")
|
||||
}
|
||||
})
|
||||
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
|
||||
CallerLogger.i("$M_D_C$TAG", "initServer……")
|
||||
// 同步数据给工控机的服务
|
||||
AsyncDataToAutopilotServer.INSTANCE.initServer()
|
||||
throwable.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
private fun directConnect() {
|
||||
|
||||
Reference in New Issue
Block a user