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