From e447fb1a3e75d30866ae6e69ea2e50ece9ed2e1e Mon Sep 17 00:00:00 2001 From: donghongyu Date: Tue, 1 Mar 2022 18:46:47 +0800 Subject: [PATCH] =?UTF-8?q?[Change]=20=E5=A2=9E=E5=8A=A0=E6=9C=AA=E7=9F=A5?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E7=BB=98=E5=88=B6=E5=BC=80=E5=85=B3=E6=8C=89?= =?UTF-8?q?=E9=92=AE=20=E5=A2=9E=E5=8A=A0=E6=9C=AA=E7=9F=A5=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E8=AE=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: donghongyu --- app/productFlavors/fPadLenovo.gradle | 2 +- .../autopilot/MoGoAutopilotProvider.kt | 56 ++++----- .../hmi/ui/setting/DebugSettingView.kt | 109 ++++++++++-------- .../main/res/layout/view_debug_setting.xml | 10 ++ .../core/data/config/FunctionBuildConfig.kt | 9 ++ .../common/drawer/IdentifyDataDrawer.java | 4 +- 6 files changed, 107 insertions(+), 83 deletions(-) diff --git a/app/productFlavors/fPadLenovo.gradle b/app/productFlavors/fPadLenovo.gradle index 31335d67d8..830d322313 100644 --- a/app/productFlavors/fPadLenovo.gradle +++ b/app/productFlavors/fPadLenovo.gradle @@ -27,7 +27,7 @@ project.android.productFlavors { buildConfigField 'int', 'GPS_PROVIDER', "1" // 构建的应用身份类型,司机|乘客 - buildConfigField 'int', 'APP_IDENTITY_MODE', "0x02" + buildConfigField 'int', 'APP_IDENTITY_MODE', "0x00" // 连接的工控机IP地址 buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.1.104\"" // 构建的是否是演示(美化)模式 diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index a120c60187..3e5dc6400c 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -4,7 +4,6 @@ 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 @@ -17,6 +16,7 @@ import com.mogo.eagle.core.function.autopilot.adapter.MoGoAdasMsgConnectStatusLi import com.mogo.eagle.core.function.autopilot.adapter.MoGoHandAdasMsgManager import com.mogo.eagle.core.function.autopilot.server.AsyncDataToAutopilotServer import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils 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 @@ -36,7 +36,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 @@ -51,19 +51,17 @@ class MoGoAutopilotProvider : CupidLogUtils.setEnableLog(false) CupidLogUtils.setIsWriteLog(false) // TODO 临时方案,根据不同的身份标识,连接不同的工控机IP - when (FunctionBuildConfig.appIdentityMode) { - 0x00 -> // 司机 - { - // 注册地图采集功能 - CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this) - // "192.168.1.102" - val options = AdasOptions.Builder() - .setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION) - .setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext)) + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {// 司机 + // 注册地图采集功能 + CallerMapDataCollectorManager.registerOnMapCollectTaskListener(this) + // "192.168.1.102" + val options = AdasOptions.Builder() + .setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.ASSIGN) + .setIpcAssignIP(FunctionBuildConfig.adasConnectIP) .setClient(false) .build() - AdasManager.getInstance().create(context, options) + AdasManager.getInstance().create(context, options) // NSDNettyManager.getInstance().startNSDNettyServer(context, object : NettyServerListener { // override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) { // Logger.d(TAG, "Receive client data is:${msg?.toString()}") @@ -89,18 +87,17 @@ class MoGoAutopilotProvider : // Logger.d(TAG, "onChannelDisConnect") // } // }) - } - 0x01 -> // 乘客 - { - // 乘客端默认接收绘制全局路径+引导线 - //FunctionBuildConfig.isDemoMode = true - //FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true - // "192.168.1.102" - val options = AdasOptions - .Builder() + } 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(true) .build() - AdasManager.getInstance().create(context, options) + AdasManager.getInstance().create(context, options) // NSDNettyManager.getInstance().searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, object : NettyClientListener { // override fun onMessageResponseClient(msg: MogoProtocolMsg?, sign: String?) { // Logger.d(TAG, "收到司机端的数据!") @@ -121,22 +118,11 @@ class MoGoAutopilotProvider : // } // } // }) - } - // - else -> // 默认采用UDP寻址方式 - { - val options = AdasOptions.Builder() - .setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION) - .setIpcFixationIP(AdasManager.getInstance().getIPCFixationIPList(mContext)) - .setClient(false) - .build() - AdasManager.getInstance().create(context, options) - } } //////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// // 监听 adas 连接状态 AdasManager.getInstance() - .setOnAdasConnectStatusListener(MoGoAdasMsgConnectStatusListenerImpl()) + .setOnAdasConnectStatusListener(MoGoAdasMsgConnectStatusListenerImpl()) // 监听ADAS-SDK获取到的工控机数据(乘客也需注册) AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) // // 司机端监听 @@ -240,7 +226,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 { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 1722ad828f..e5292b1f22 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -14,6 +14,7 @@ import com.mogo.eagle.core.data.autopilot.* import com.mogo.eagle.core.data.chain.ChainConstant import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.constants.MoGoConfig +import com.mogo.eagle.core.data.enums.TrafficTypeEnum import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.data.obu.ObuStatusInfo import com.mogo.eagle.core.data.traffic.TrafficData @@ -44,12 +45,7 @@ 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_CLOSE_SIGHT -import com.mogo.map.uicontroller.VisualAngleMode.MODE_LONG_SIGHT -import com.mogo.map.uicontroller.VisualAngleMode.MODE_MEDIUM_SIGHT +import com.mogo.map.uicontroller.VisualAngleMode.* import com.mogo.module.common.MogoApisHandler import kotlinx.android.synthetic.main.view_debug_setting.view.* import java.util.* @@ -61,13 +57,13 @@ import java.util.* * 展示 本机、网络、工控机、OBU等状态信息,支持设置IP,等参数进行调试 */ class DebugSettingView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoObuStatusListener, - IMoGoAutopilotStatusListener, IMoGoAutopilotCarStateListener, - IMoGoMapLocationListener, IMoGoAutopilotIdentifyListener, - IMoGoAutopilotPlanningListener { + IMoGoAutopilotStatusListener, IMoGoAutopilotCarStateListener, + IMoGoMapLocationListener, IMoGoAutopilotIdentifyListener, + IMoGoAutopilotPlanningListener { private val TAG = "DebugSettingView" @@ -77,9 +73,12 @@ class DebugSettingView @JvmOverloads constructor( private var mAutoPilotStatusInfo: AutopilotStatusInfo? = null private var mAutoPilotCarStateInfo: AutopilotCarStateInfo? = null - // 感知识别数据个数 + // 感知识别「已知类型」数据个数 private var mIdentifyDataSize = 0 + // 感知识别「未知类型」数据个数 + private var mUnknownIdentifyDataSize = 0 + // 引导线点个数 private var mTrajectoryInfoSize = 0 @@ -247,14 +246,14 @@ class DebugSettingView @JvmOverloads constructor( tvObuInfo.text = CallerObuListenerManager.getObuStatusInfoJsonString() tvAutopilotInfo.text = - CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfoJsonString() + CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfoJsonString() // 绘制应用基本信息 drawAppInfo() // 初始化OBU IP信息 val ipAddress = - SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, "192.168.1.199") + SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, "192.168.1.199") etObuIP.setText(ipAddress) etObuIP.text?.let { etObuIP.setSelection(it.length) } @@ -270,8 +269,8 @@ class DebugSettingView @JvmOverloads constructor( // 初始化工控机 IP信息 val autoPilotIpAddress = - SharedPrefsMgr.getInstance(context) - .getString(MoGoConfig.AUTOPILOT_IP, FunctionBuildConfig.adasConnectIP) + SharedPrefsMgr.getInstance(context) + .getString(MoGoConfig.AUTOPILOT_IP, FunctionBuildConfig.adasConnectIP) etAutopilotIP.setText(autoPilotIpAddress) etAutopilotIP.text?.let { etAutopilotIP.setSelection(it.length) } @@ -292,18 +291,18 @@ class DebugSettingView @JvmOverloads constructor( // 初始化 GSP数据源 数据 rgGpsProvider.check( - when (FunctionBuildConfig.gpsProvider) { - 0 -> { - R.id.rbGpsProviderAndroid + when (FunctionBuildConfig.gpsProvider) { + 0 -> { + R.id.rbGpsProviderAndroid + } + 1 -> { + R.id.rbGpsProviderRTK + } + 2 -> { + R.id.rbGpsProviderOBU + } + else -> R.id.rbGpsProviderAndroid } - 1 -> { - R.id.rbGpsProviderRTK - } - 2 -> { - R.id.rbGpsProviderOBU - } - else -> R.id.rbGpsProviderAndroid - } ) rgGpsProvider.setOnCheckedChangeListener { group, checkedId -> when (checkedId) { @@ -325,6 +324,12 @@ class DebugSettingView @JvmOverloads constructor( FunctionBuildConfig.isDrawIdentifyData = isChecked } + // 初始化 ADAS感知数据是否绘制 选择情况 + tbIsDrawUnknownIdentifyData.isChecked = FunctionBuildConfig.isDrawUnknownIdentifyData + tbIsDrawUnknownIdentifyData.setOnCheckedChangeListener { buttonView, isChecked -> + FunctionBuildConfig.isDrawUnknownIdentifyData = isChecked + } + // 初始化 OBU感知数据是否绘制 选择情况 tbIsDrawOBUIdentifyData.isChecked = FunctionBuildConfig.isDrawObuIdentifyData tbIsDrawOBUIdentifyData.setOnCheckedChangeListener { buttonView, isChecked -> @@ -385,7 +390,7 @@ class DebugSettingView @JvmOverloads constructor( } tbLogCatch.isChecked = - SharedPrefsMgr.getInstance(context).getBoolean(MoGoConfig.CATCH_LOG, false) + SharedPrefsMgr.getInstance(context).getBoolean(MoGoConfig.CATCH_LOG, false) tbLogCatch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { val logCatchTime = etLogCatch.text.toString().toInt() @@ -400,20 +405,20 @@ class DebugSettingView @JvmOverloads constructor( } } CallerDevaToolsListenerManager.registerDevaToolsLogCatchListener(TAG, - object : IMoGoDevaToolsListener { - override fun onLogCatchClose() { - super.onLogCatchClose() - tbLogCatch.isChecked = false - } + object : IMoGoDevaToolsListener { + override fun onLogCatchClose() { + super.onLogCatchClose() + tbLogCatch.isChecked = false + } - override fun onLogCatch(lineLog: String) { - logInfoView?.let { - if (logViewAttach) { - it.onLogCatch(lineLog) + override fun onLogCatch(lineLog: String) { + logInfoView?.let { + if (logViewAttach) { + it.onLogCatch(lineLog) + } } } - } - }) + }) tbLogDebugView.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { logInfoView = LogInfoView() @@ -476,18 +481,20 @@ class DebugSettingView @JvmOverloads constructor( tvAutopilotInfo.text = GsonUtils.toJson(mAutoPilotStatusInfo) tvCarInfo.text = - "GPS时间:${mAutoPilotCarStateInfo?.values?.satelliteTime}\n" + - "自车经纬度:\n${mAutoPilotCarStateInfo?.values?.lon}\n${mAutoPilotCarStateInfo?.values?.lat}\n" + "GPS时间:${mAutoPilotCarStateInfo?.values?.satelliteTime}\n" + + "自车经纬度:\n${mAutoPilotCarStateInfo?.values?.lon}\n${mAutoPilotCarStateInfo?.values?.lat}\n" tvIdentifyInfo.text = - "感知数据个数:${mIdentifyDataSize}" + "「有效类型」感知数据个数:${mIdentifyDataSize}\n" + + "「未知类型」感知数据个数:${mUnknownIdentifyDataSize}\n" tvTrajectoryInfoSize.text = - "引导线点个数:${mTrajectoryInfoSize}" + "引导线点个数:${mTrajectoryInfoSize}" tvRouteInfoSize.text = - "全局路径规划点个数:${mRouteInfoSize}" + "全局路径规划点个数:${mRouteInfoSize}" // 用完之后重制为0,防止节点回掉突然没数据,导致页面显示还是之前的数据情况 mIdentifyDataSize = 0 + mUnknownIdentifyDataSize = 0 mTrajectoryInfoSize = 0 mRouteInfoSize = 0 } @@ -534,7 +541,17 @@ class DebugSettingView @JvmOverloads constructor( } override fun onAutopilotIdentifyDataUpdate(trafficData: ArrayList?) { - mIdentifyDataSize = trafficData?.size ?: 0 + // 重制数据 + mIdentifyDataSize = 0 + mUnknownIdentifyDataSize = 0 + // 遍历计数 + trafficData?.forEach { + if (it.type == TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI) { + mUnknownIdentifyDataSize++ + } else { + mIdentifyDataSize++ + } + } } override fun onAutopilotWarnMessage(autopilotWarnMessage: AutopilotWarnMessage?) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 09142edb15..30f78b9d3c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -274,6 +274,16 @@ android:textOn="关闭鹰眼感知" android:textSize="@dimen/dp_24" /> + +