更新ADAS连接方式,更新连接工控机回调

This commit is contained in:
xinfengkun
2022-02-28 20:02:40 +08:00
parent 668c9ae8a3
commit c99c3aa8ac
3 changed files with 46 additions and 33 deletions

View File

@@ -24,6 +24,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.AdasManager
import com.zhidao.support.adas.high.AdasOptions import com.zhidao.support.adas.high.AdasOptions
import com.zhidao.support.adas.high.bean.IPCUpgradeInfo import com.zhidao.support.adas.high.bean.IPCUpgradeInfo
import com.zhidao.support.adas.high.common.Constants
import com.zhidao.support.adas.high.common.CupidLogUtils import com.zhidao.support.adas.high.common.CupidLogUtils
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@@ -57,7 +58,8 @@ class MoGoAutopilotProvider :
CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this) CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this)
// "192.168.1.102" // "192.168.1.102"
val options = AdasOptions.Builder() val options = AdasOptions.Builder()
.setIPCIp(FunctionBuildConfig.adasConnectIP) .setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION)
.setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext))
.setClient(false) .setClient(false)
.build() .build()
@@ -124,8 +126,9 @@ class MoGoAutopilotProvider :
else -> // 默认采用UDP寻址方式 else -> // 默认采用UDP寻址方式
{ {
val options = AdasOptions.Builder() val options = AdasOptions.Builder()
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION)
.setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext))
.setClient(false) .setClient(false)
.setIPCIp(FunctionBuildConfig.adasConnectIP)
.build() .build()
AdasManager.getInstance().create(context, options) AdasManager.getInstance().create(context, options)
} }
@@ -181,7 +184,7 @@ class MoGoAutopilotProvider :
*/ */
override fun resetIpAddress(autoPilotIp: String) { override fun resetIpAddress(autoPilotIp: String) {
// 关闭通信 // 关闭通信
AdasManager.getInstance().closeAllMsg() AdasManager.getInstance().disConnect()
// 延时执行连接指定IP地址 // 延时执行连接指定IP地址
ThreadUtils.executeBySingleWithDelay(object : ThreadUtils.SimpleTask<String>() { ThreadUtils.executeBySingleWithDelay(object : ThreadUtils.SimpleTask<String>() {
@RequiresPermission(permission.INTERNET) @RequiresPermission(permission.INTERNET)
@@ -191,9 +194,10 @@ class MoGoAutopilotProvider :
SharedPrefsMgr.getInstance(it).putString(MoGoConfig.AUTOPILOT_IP, autoPilotIp) SharedPrefsMgr.getInstance(it).putString(MoGoConfig.AUTOPILOT_IP, autoPilotIp)
} }
// 设置IP地址 // 设置IP地址
AdasManager.getInstance().setIPCIp(autoPilotIp) AdasManager.getInstance().adasOptions.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.ASSIGN)
AdasManager.getInstance().adasOptions.setIpcAssignIP(autoPilotIp)
// 打开通讯连接 // 打开通讯连接
AdasManager.getInstance().startAllMsg() AdasManager.getInstance().connect()
return "" return ""
} }
@@ -214,7 +218,7 @@ class MoGoAutopilotProvider :
} }
override fun startAutoPilot(result: AutopilotControlParameters) { override fun startAutoPilot(result: AutopilotControlParameters) {
if (AdasManager.getInstance().isSocketConnect) { if (AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) {
val parameter = AutopilotControlCmdParameter("aiCloudToStartAutopilot", result) val parameter = AutopilotControlCmdParameter("aiCloudToStartAutopilot", result)
AdasManager.getInstance().aiCloudToAdasData(GsonUtils.toJson(parameter)) AdasManager.getInstance().aiCloudToAdasData(GsonUtils.toJson(parameter))
} else { } else {
@@ -227,7 +231,7 @@ class MoGoAutopilotProvider :
} }
override fun cancelAutoPilot() { override fun cancelAutoPilot() {
if (AdasManager.getInstance().isSocketConnect) { if (AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) {
AdasManager.getInstance().controlAutopilotCarHead() AdasManager.getInstance().controlAutopilotCarHead()
} else { } else {
Logger.e(TAG, "车机与工控机链接失败,无法断开自动驾驶") Logger.e(TAG, "车机与工控机链接失败,无法断开自动驾驶")

View File

@@ -2,17 +2,16 @@ package com.mogo.eagle.core.function.autopilot.adapter
import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.debug.DebugConfig import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.constants.MoGoConfig
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.autopilot.network.AdasServiceModel import com.mogo.eagle.core.function.autopilot.network.AdasServiceModel
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.AdasManager
import com.zhidao.support.adas.high.OnAdasMsgConnectStatusListener import com.zhidao.support.adas.high.OnAdasConnectStatusListener
import com.zhidao.support.adas.high.bean.BasicInfo import com.zhidao.support.adas.high.bean.BasicInfo
import com.zhidao.support.adas.high.common.Constants
import io.reactivex.Flowable import io.reactivex.Flowable
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
@@ -23,7 +22,8 @@ import java.util.concurrent.TimeUnit
* *
* @author donghongyu * @author donghongyu
*/ */
class MoGoAdasMsgConnectStatusListenerImpl : OnAdasMsgConnectStatusListener, IMoGoAutopilotStatusListener { class MoGoAdasMsgConnectStatusListenerImpl : OnAdasConnectStatusListener,
IMoGoAutopilotStatusListener {
private val TAG = "MoGoAdasMsgConnectStatusListenerImpl" private val TAG = "MoGoAdasMsgConnectStatusListenerImpl"
//自动驾驶状态 //自动驾驶状态
@@ -32,27 +32,35 @@ class MoGoAdasMsgConnectStatusListenerImpl : OnAdasMsgConnectStatusListener, IMo
//自动驾驶车速度 //自动驾驶车速度
private var mCurrentAutopilotSpeed = 0f private var mCurrentAutopilotSpeed = 0f
override fun onWebSocketConnectSuccess() {
Logger.d(TAG, "webSocket 连接成功")
// 初始化自动驾驶状态信息
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP = AdasManager.getInstance().adasConfig.address
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = true
CallerAutoPilotStatusListenerManager.invokeAutoPilotStatus()
// 同步SN给工控机 override fun onAddressDisabled() {
syncBasicInfoToAutopilot()
// 开启轮训上传自动驾驶状态
updateDriveStatusTask()
} }
override fun onWebSocketConnectFailed(reason: String) { override fun onConnectionIPCStatus(ipcConnectionStatus: Int, reason: String?) {
Logger.d(TAG, "webSocket 连接失败 reason:$reason") if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) {
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP = AdasManager.getInstance().adasConfig.address Logger.d(TAG, "webSocket 连接成功")
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = false // 初始化自动驾驶状态信息
CallerAutoPilotStatusListenerManager.invokeAutoPilotStatus() CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP =
AdasManager.getInstance().adasConfig.address
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = true
CallerAutoPilotStatusListenerManager.invokeAutoPilotStatus()
// 同步SN给工控机
syncBasicInfoToAutopilot()
// 开启轮训上传自动驾驶状态
updateDriveStatusTask()
} else if (ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.DISCONNECTED) {
Logger.d(TAG, "webSocket 连接失败 reason:$reason")
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP =
AdasManager.getInstance().adasConfig.address
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectStatus = false
CallerAutoPilotStatusListenerManager.invokeAutoPilotStatus()
}
} }
/** /**
* 工控机获取SN * 工控机获取SN
*/ */
@@ -94,12 +102,13 @@ class MoGoAdasMsgConnectStatusListenerImpl : OnAdasMsgConnectStatusListener, IMo
private fun updateDriveStatusTask() { private fun updateDriveStatusTask() {
Logger.d(TAG, "updateDriveStatusTask") Logger.d(TAG, "updateDriveStatusTask")
Flowable.interval(0, 5, TimeUnit.SECONDS) Flowable.interval(0, 5, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe { aLong: Long? -> .subscribe { aLong: Long? ->
AdasServiceModel.getInstance().updateDriveStatus(mCurrentAutopilotStatus, mCurrentAutopilotSpeed) AdasServiceModel.getInstance()
} .updateDriveStatus(mCurrentAutopilotStatus, mCurrentAutopilotSpeed)
}
} }

View File

@@ -70,7 +70,7 @@ dependencies {
implementation rootProject.ext.dependencies.mogochainbase implementation rootProject.ext.dependencies.mogochainbase
//okhttp3的依赖 //okhttp3的依赖
implementation 'com.squareup.okhttp3:okhttp:3.14.9' implementation 'com.squareup.okhttp3:okhttp:3.12.3'
// parser // parser
implementation rootProject.ext.dependencies.gson implementation rootProject.ext.dependencies.gson
// logger // logger