[Update]启用多屏功能
This commit is contained in:
@@ -4,6 +4,7 @@ import android.Manifest.permission
|
||||
import android.content.Context
|
||||
import androidx.annotation.RequiresPermission
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlCmdParameter
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
@@ -21,11 +22,20 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.telematic.MogoProtocolMsg
|
||||
import com.mogo.telematic.MogoProtocolMsg.NORMAL_DATA
|
||||
import com.mogo.telematic.NSDNettyManager
|
||||
import com.mogo.telematic.client.listener.NettyClientListener
|
||||
import com.mogo.telematic.client.status.ConnectState
|
||||
import com.mogo.telematic.server.netty.NettyServerListener
|
||||
import com.zhidao.support.adas.high.AdasManager
|
||||
import com.zhidao.support.adas.high.AdasOptions
|
||||
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 io.netty.channel.Channel
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
|
||||
@@ -36,7 +46,7 @@ import java.util.concurrent.TimeUnit
|
||||
*/
|
||||
@Route(path = MogoServicePaths.PATH_AUTO_PILOT)
|
||||
class MoGoAutopilotProvider :
|
||||
IMoGoAutopilotProvider, IMoGoMapDataCollectProvider.OnMapCollectCmdListener {
|
||||
IMoGoAutopilotProvider, IMoGoMapDataCollectProvider.OnMapCollectCmdListener {
|
||||
private val TAG = "MoGoAutoPilotProvider"
|
||||
private var mContext: Context? = null
|
||||
|
||||
@@ -56,107 +66,99 @@ class MoGoAutopilotProvider :
|
||||
CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this)
|
||||
// "192.168.1.102"
|
||||
val options = AdasOptions.Builder()
|
||||
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.ASSIGN)
|
||||
.setIpcAssignIP(FunctionBuildConfig.adasConnectIP)
|
||||
.setClient(false)
|
||||
.build()
|
||||
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.ASSIGN)
|
||||
.setIpcAssignIP(FunctionBuildConfig.adasConnectIP)
|
||||
.setClient(false)
|
||||
.build()
|
||||
|
||||
AdasManager.getInstance().create(context, options)
|
||||
// NSDNettyManager.getInstance().startNSDNettyServer(context, object : NettyServerListener<MogoProtocolMsg> {
|
||||
// override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) {
|
||||
// Logger.d(TAG, "Receive client data is:${msg?.toString()}")
|
||||
// }
|
||||
//
|
||||
// override fun onStartServer() {
|
||||
// ToastUtils.showShort("司机端服务启动成功!")
|
||||
// Logger.d(TAG, "onStartServer")
|
||||
// }
|
||||
//
|
||||
// override fun onStopServer() {
|
||||
// ToastUtils.showLong("司机端服务停止!")
|
||||
// Logger.d(TAG, "onStopServer")
|
||||
// }
|
||||
//
|
||||
// override fun onChannelConnect(channel: Channel?) {
|
||||
// NSDNettyManager.getInstance().selectChannel(channel)
|
||||
// val socketAddress = channel?.remoteAddress().toString()
|
||||
// Logger.d(TAG, "Client ip is:${socketAddress}")
|
||||
// }
|
||||
//
|
||||
// override fun onChannelDisConnect(channel: Channel?) {
|
||||
// Logger.d(TAG, "onChannelDisConnect")
|
||||
// }
|
||||
// })
|
||||
} else {// 乘客
|
||||
NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object :
|
||||
NettyServerListener<MogoProtocolMsg> {
|
||||
override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) {
|
||||
Logger.d(TAG, "Receive client data is:${msg?.toString()}")
|
||||
}
|
||||
|
||||
override fun onStartServer() {
|
||||
ToastUtils.showShort("司机端服务启动成功!")
|
||||
Logger.d(TAG, "onStartServer")
|
||||
}
|
||||
|
||||
override fun onStopServer() {
|
||||
ToastUtils.showLong("司机端服务停止!")
|
||||
Logger.d(TAG, "onStopServer")
|
||||
}
|
||||
|
||||
override fun onChannelConnect(channel: Channel?) {
|
||||
val socketAddress = channel?.remoteAddress().toString()
|
||||
Logger.d(TAG, "Client ip is:${socketAddress}")
|
||||
}
|
||||
|
||||
override fun onChannelDisConnect(channel: Channel?) {
|
||||
Logger.d(TAG, "onChannelDisConnect")
|
||||
}
|
||||
}, MoGoAiCloudClientConfig.getInstance().sn)
|
||||
} else {
|
||||
// 乘客端默认接收绘制全局路径+引导线
|
||||
//FunctionBuildConfig.isDemoMode = true
|
||||
//FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true
|
||||
// "192.168.1.103"
|
||||
val options = AdasOptions.Builder()
|
||||
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.ASSIGN)
|
||||
.setIpcAssignIP(FunctionBuildConfig.adasConnectIP)
|
||||
.setClient(false)
|
||||
.build()
|
||||
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.ASSIGN)
|
||||
.setIpcAssignIP(FunctionBuildConfig.adasConnectIP)
|
||||
.setClient(false)
|
||||
.build()
|
||||
AdasManager.getInstance().create(context, options)
|
||||
// NSDNettyManager.getInstance().searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, object : NettyClientListener<MogoProtocolMsg> {
|
||||
// override fun onMessageResponseClient(msg: MogoProtocolMsg?, sign: String?) {
|
||||
// Logger.d(TAG, "收到司机端的数据!")
|
||||
// // 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端
|
||||
// msg?.let {
|
||||
// AdasManager.getInstance().parseIPCData(it.body)
|
||||
// Logger.d(TAG, "解析司机端数据完毕!")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onClientStatusConnectChanged(statusCode: Int, sign: String?) {
|
||||
// when (statusCode) {
|
||||
// ConnectState.STATUS_CONNECT_SUCCESS -> Logger.d(TAG, "乘客端连接司机端服务成功! sign is:${sign}")
|
||||
// else -> {
|
||||
// ToastUtils.showLong("和司机端连接异常!")
|
||||
// Logger.d(TAG, "client statusCode is:${statusCode}")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
NSDNettyManager.getInstance()
|
||||
.searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, object :
|
||||
NettyClientListener<MogoProtocolMsg> {
|
||||
override fun onMessageResponseClient(msg: MogoProtocolMsg?, sign: String?) {
|
||||
Logger.d(TAG, "收到司机端的数据!")
|
||||
// 乘客端收到adas数据直接解析,后续分发解析后的数据流程同司机端
|
||||
msg?.let {
|
||||
AdasManager.getInstance().parseIPCData(it.body)
|
||||
Logger.d(TAG, "解析司机端数据完毕!")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClientStatusConnectChanged(statusCode: Int, sign: String?) {
|
||||
when (statusCode) {
|
||||
ConnectState.STATUS_CONNECT_SUCCESS -> {
|
||||
Logger.d(TAG, "乘客端连接司机端服务成功! sign is:${sign}")
|
||||
}
|
||||
else -> {
|
||||
ToastUtils.showLong("和司机端连接异常!")
|
||||
Logger.d(TAG, "client statusCode is:${statusCode}")
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
//////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
|
||||
// 监听 adas 连接状态
|
||||
AdasManager.getInstance()
|
||||
.setOnAdasConnectStatusListener(MoGoAdasMsgConnectStatusListenerImpl())
|
||||
.setOnAdasConnectStatusListener(MoGoAdasMsgConnectStatusListenerImpl())
|
||||
// 监听ADAS-SDK获取到的工控机数据(乘客也需注册)
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
// // 司机端监听
|
||||
// if (FunctionBuildConfig.appIdentityMode == 0) {
|
||||
// AdasManager.getInstance().setOnMultiDeviceListener { bytes ->
|
||||
// Logger.d(
|
||||
// TAG,
|
||||
// "司机端接收到工控机吐出来的数据为:${Arrays.toString(bytes)}"
|
||||
// )
|
||||
// // 发送数据给乘客端
|
||||
// if (NSDNettyManager.getInstance().isServerStart) {
|
||||
// Logger.d(
|
||||
// TAG,
|
||||
// "司机端透传数据给乘客端!"
|
||||
// )
|
||||
// NSDNettyManager.getInstance().sendMsgToAllClients(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes))
|
||||
//// NSDNettyManager.getInstance().sendMogoProtocolMsgToClient(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes)) { channelFuture: ChannelFuture ->
|
||||
//// if (channelFuture.isSuccess) {
|
||||
//// Logger.d(
|
||||
//// TAG,
|
||||
//// "Send data to client is success."
|
||||
//// )
|
||||
//// } else {
|
||||
//// Logger.d(
|
||||
//// TAG,
|
||||
//// "Send data to client is failure."
|
||||
//// )
|
||||
//// }
|
||||
//// }
|
||||
// } else {
|
||||
// Logger.d(TAG, "司机端Server未启动!")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// 司机端监听
|
||||
if (FunctionBuildConfig.appIdentityMode == 0) {
|
||||
AdasManager.getInstance().setOnMultiDeviceListener { bytes ->
|
||||
Logger.d(
|
||||
TAG,
|
||||
"司机端接收到工控机吐出来的数据为:${Arrays.toString(bytes)}"
|
||||
)
|
||||
// 发送数据给乘客端
|
||||
if (NSDNettyManager.getInstance().isServerStart) {
|
||||
Logger.d(
|
||||
TAG,
|
||||
"司机端透传数据给乘客端!"
|
||||
)
|
||||
NSDNettyManager.getInstance()
|
||||
.sendMsgToAllClients(MogoProtocolMsg(NORMAL_DATA, bytes.size, bytes))
|
||||
} else {
|
||||
Logger.d(TAG, "司机端Server未启动!")
|
||||
}
|
||||
}
|
||||
}
|
||||
// 同步数据给工控机的服务
|
||||
AsyncDataToAutopilotServer.INSTANCE.initServer()
|
||||
// 同步是否开启美化模式
|
||||
@@ -226,7 +228,7 @@ class MoGoAutopilotProvider :
|
||||
|
||||
override fun recordPackage(): Boolean {
|
||||
return AdasManager.getInstance()
|
||||
.recordPackage(1, (System.currentTimeMillis() / 1000).toInt())
|
||||
.recordPackage(1, (System.currentTimeMillis() / 1000).toInt())
|
||||
}
|
||||
|
||||
override fun recordPackage(type: Int, id: Int): Boolean {
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.mogo.eagle.core.function.autopilot
|
||||
|
||||
import android.content.Context
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.function.api.telematic.IMogoTelematicProvider
|
||||
import com.mogo.telematic.NSDNettyManager
|
||||
|
||||
@Route(path = MogoServicePaths.PATH_TELEMATIC_PROVIDER)
|
||||
class MoGoTelematicProvider: IMogoTelematicProvider {
|
||||
|
||||
override fun init(context: Context?) {}
|
||||
|
||||
override fun getServerStarted(): Boolean {
|
||||
return NSDNettyManager.getInstance().isServerStart
|
||||
}
|
||||
|
||||
override fun getClientConnStatus(): Boolean {
|
||||
return NSDNettyManager.getInstance().connectStatus
|
||||
}
|
||||
|
||||
override fun getServerIp(): String {
|
||||
return NSDNettyManager.getInstance().connServerIp
|
||||
}
|
||||
|
||||
override fun getServerToken(): String {
|
||||
return NSDNettyManager.getInstance().serverSn
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,7 @@ import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerSmpManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerOBUManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener
|
||||
import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView
|
||||
@@ -45,6 +46,10 @@ import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.map.MogoMap
|
||||
import com.mogo.map.uicontroller.VisualAngleMode
|
||||
import com.mogo.map.uicontroller.VisualAngleMode.MAP_STYLE_VR_ANGLE_300
|
||||
import com.mogo.map.uicontroller.VisualAngleMode.MAP_STYLE_VR_ANGLE_CROSS
|
||||
import com.mogo.map.uicontroller.VisualAngleMode.MAP_STYLE_VR_ANGLE_TOP
|
||||
import com.mogo.map.uicontroller.VisualAngleMode.MODE_LONG_SIGHT
|
||||
import com.mogo.map.uicontroller.VisualAngleMode.*
|
||||
import com.mogo.module.common.MogoApisHandler
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.*
|
||||
@@ -490,6 +495,18 @@ class DebugSettingView @JvmOverloads constructor(
|
||||
AppConfigInfo.isConnectNet = NetworkUtils.isConnected(context)
|
||||
AppConfigInfo.isConnectSocket = DebugConfig.isDownloadSnapshot()
|
||||
|
||||
when (FunctionBuildConfig.appIdentityMode) {
|
||||
0x00 -> {// 司机端
|
||||
AppConfigInfo.isDriver = true
|
||||
AppConfigInfo.isConnectedNetty = CallerTelematicManager.getServerStarted()
|
||||
}
|
||||
else -> {
|
||||
AppConfigInfo.isDriver = false
|
||||
AppConfigInfo.isConnectedNetty = CallerTelematicManager.getClientConnStatus()
|
||||
AppConfigInfo.serverIp = CallerTelematicManager.getServerIp()
|
||||
}
|
||||
}
|
||||
|
||||
// 将数据绘制
|
||||
tvAppInfo.text = Html.fromHtml(AppConfigInfo.toString())
|
||||
|
||||
|
||||
@@ -45,6 +45,12 @@ object AppConfigInfo {
|
||||
// 是否OBU
|
||||
var isConnectObu: Boolean = false
|
||||
|
||||
var isDriver = true
|
||||
|
||||
// Netty该端是否连接上另一端
|
||||
var isConnectedNetty = false
|
||||
|
||||
var serverIp = ""
|
||||
|
||||
override fun toString(): String {
|
||||
return "<font color='red' size='30'>-------------------应用信息--------------------</font><br/>" +
|
||||
@@ -108,6 +114,27 @@ object AppConfigInfo {
|
||||
"<font color='red'>"
|
||||
}
|
||||
}${isConnectObu}</font><br/>" +
|
||||
"${
|
||||
when {
|
||||
isDriver -> {
|
||||
"司机端Server启动"
|
||||
}
|
||||
else -> {
|
||||
"乘客端${
|
||||
when {
|
||||
serverIp.isNotEmpty() -> "(目标ip为:${serverIp})"
|
||||
else -> ""
|
||||
}
|
||||
}连接"
|
||||
}
|
||||
}
|
||||
}是否正常:${
|
||||
if (isConnectedNetty) {
|
||||
"<font color='green'>"
|
||||
} else {
|
||||
"<font color='red'>"
|
||||
}
|
||||
}${isConnectedNetty}</font><br/>" +
|
||||
"<font color='red' size='30'>------------------工控机感知&规控数据---------------------</font><br/>"
|
||||
}
|
||||
}
|
||||
@@ -274,4 +274,10 @@ public class MogoServicePaths {
|
||||
*/
|
||||
@Keep
|
||||
public static final String PATH_MAP_DATA_COLLECT_PROVIDER = "/map_x/collect";
|
||||
|
||||
/**
|
||||
* 多屏通信模块
|
||||
*/
|
||||
@Keep
|
||||
public static final String PATH_TELEMATIC_PROVIDER = "/telematic/api";
|
||||
}
|
||||
|
||||
@@ -124,5 +124,4 @@ interface IMoGoAutopilotProvider : IMoGoFunctionServerProvider {
|
||||
* isEnable = false 关闭
|
||||
*/
|
||||
fun setControlAutopilotCarAuto(isEnable: Boolean)
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.mogo.eagle.core.function.api.telematic
|
||||
|
||||
import com.alibaba.android.arouter.facade.template.IProvider
|
||||
|
||||
interface IMogoTelematicProvider: IProvider {
|
||||
fun getServerStarted(): Boolean
|
||||
|
||||
fun getClientConnStatus(): Boolean
|
||||
|
||||
fun getServerIp(): String
|
||||
|
||||
fun getServerToken(): String
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.mogo.eagle.core.function.call.telematic
|
||||
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.function.api.telematic.IMogoTelematicProvider
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
|
||||
object CallerTelematicManager {
|
||||
private val TAG = "CallerTelematicManager"
|
||||
|
||||
private val providerApi: IMogoTelematicProvider?
|
||||
get() = CallerBase.getApiInstance(
|
||||
IMogoTelematicProvider::class.java,
|
||||
MogoServicePaths.PATH_TELEMATIC_PROVIDER
|
||||
)
|
||||
|
||||
/**
|
||||
* 获取Server是否启动的状态
|
||||
*/
|
||||
fun getServerStarted(): Boolean {
|
||||
return providerApi?.getServerStarted() ?: false
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Client连接的状态
|
||||
*/
|
||||
fun getClientConnStatus(): Boolean {
|
||||
return providerApi?.getClientConnStatus() ?: false
|
||||
}
|
||||
|
||||
fun getServerIp(): String {
|
||||
return providerApi?.getServerIp() ?: ""
|
||||
}
|
||||
|
||||
fun getServerToken(): String {
|
||||
return providerApi?.getServerToken() ?: ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user