diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java index bb7491b45d..799c399ca5 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java @@ -11,7 +11,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotStatisticsList import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; import com.zhjt.mogo.adas.data.bean.AutopilotStatistics; -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason; +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; @@ -25,7 +25,7 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo private static final String TAG = OCHAdasAbilityManager.class.getSimpleName(); private boolean isAutopilotAbility; - private ArrayList unableAutopilotReasons; + private ArrayList unableAutopilotReasons; private String startFailedCode = ""; private String startFailedMessage = ""; @@ -93,7 +93,7 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo } @Override - public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons) { + public void onAutopilotAbility(boolean isAutopilotAbility, @Nullable ArrayList unableAutopilotReasons) { this.isAutopilotAbility = isAutopilotAbility; this.unableAutopilotReasons = unableAutopilotReasons; Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + (unableAutopilotReasons == null ? null : unableAutopilotReasons.toString())); diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt index 6449fc6f0c..336357d774 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt @@ -158,5 +158,6 @@ class RightRearCamView : ConstraintLayout , IMoGoBackCameraVideoListener, actv_cam_position_group?.visibility = VISIBLE } v_video_right_rear?.setImageBitmap(mBitmap) + v_video_right_rear?.scaleX = -1f } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt index 6449fc6f0c..336357d774 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/RightRearCamView.kt @@ -158,5 +158,6 @@ class RightRearCamView : ConstraintLayout , IMoGoBackCameraVideoListener, actv_cam_position_group?.visibility = VISIBLE } v_video_right_rear?.setImageBitmap(mBitmap) + v_video_right_rear?.scaleX = -1f } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index ceb72f140a..62d5defef4 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -58,7 +58,7 @@ import com.zhjt.mogo.adas.data.bean.AdasParam import com.zhidao.support.adas.high.common.ProtocolStatus import com.zhjt.mogo.adas.data.AiCloudTask import com.zhjt.mogo.adas.data.bean.AutopilotStatistics -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume @@ -885,7 +885,7 @@ class MoGoAdasListenerImpl : OnAdasListener { */ override fun onAutopilotAbility( isAutopilotAbility: Boolean, - unableAutopilotReasons: ArrayList? + unableAutopilotReasons: ArrayList? ) { if (unableAutopilotReasons != null && unableAutopilotReasons.size > 0) { autopilotAbilityCheck(isAutopilotAbility, unableAutopilotReasons.toString()) @@ -893,6 +893,16 @@ class MoGoAdasListenerImpl : OnAdasListener { invokeAutopilotAbility(isAutopilotAbility, unableAutopilotReasons) } + override fun onParallelDrivingAbility( + isParallelDrivingAbility: Boolean, + unableParallelDrivingReasons: java.util.ArrayList? + ) { + CallerParallelDrivingActionsListenerManager.invokeParallelDrivingAbility( + isParallelDrivingAbility, + unableParallelDrivingReasons + ) + } + @ChainLog( linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, linkCode = CHAIN_SOURCE_ADAS, diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt index d788e040e9..9302a00183 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt @@ -9,6 +9,7 @@ import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingActionsListenerManager import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -39,10 +40,12 @@ class MoGoAdasMsgConnectStatusListenerImpl : init { CallerCloudListenerManager.addListener(TAG, this) CallerAutopilotActionsListenerManager.setConnected(AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) + CallerParallelDrivingActionsListenerManager.setConnected(AdasManager.getInstance().ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) } override fun onConnectionIPCStatus(ipcConnectionStatus: Int, reason: String?) { CallerAutopilotActionsListenerManager.setConnected(ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) + CallerParallelDrivingActionsListenerManager.setConnected(ipcConnectionStatus == Constants.IPC_CONNECTION_STATUS.CONNECTED) AppConfigInfo.connectStatusDescribe = reason when (ipcConnectionStatus) { Constants.IPC_CONNECTION_STATUS.CONNECTED -> { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index ac1da819b8..9f9700b99f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -4,7 +4,7 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.view.View -import android.widget.* +import android.widget.Toast import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig @@ -21,18 +21,18 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotGetParamResponseDispatcher import com.mogo.eagle.core.function.call.devatools.* import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager +import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils import com.zhjt.mogo.adas.data.AdasConstants import com.zhjt.mogo.adas.data.bean.AdasParam import kotlinx.android.synthetic.main.view_sop_setting.view.* -import kotlinx.android.synthetic.main.view_sop_setting.view.tbRouteDynamicEffect import mogo.telematics.pad.MessagePad /** @@ -57,47 +57,30 @@ internal class SOPSettingView @JvmOverloads constructor( private fun initView() { sopLayout.setOnClickListener { } - tbObstacleAvoidance.isChecked = FunctionBuildConfig.isDetouring - tbObstacleAvoidance.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 绕障类功能开关",isChecked) - CallerAutoPilotControlManager.sendDetouring(isChecked) - FunctionBuildConfig.isDetouring = isChecked + //V2X消息设置 + v2xSetting() + //地图效果类设置 + mapSetting() + //与车相关类设置 + vehicleSetting() + //其他类别开关设置 + otherSetting() + } + + /** + * V2X消息设置 + */ + private fun v2xSetting(){ + //V2N新链路 + scNewV2NData.isChecked = FunctionBuildConfig.isNewV2NData + scNewV2NData.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP 是否是V2N新链路(云->工控机->App)",isChecked) + FunctionBuildConfig.isNewV2NData = isChecked } - tbMarkingObstacles.isChecked = FunctionBuildConfig.isPNCWarning - tbMarkingObstacles.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 危险障碍物颜色标记开关",isChecked) - FunctionBuildConfig.isPNCWarning = isChecked - } - - if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { - tbMarkingObstacles.visibility = View.GONE - } - - tbRouteDynamicEffect.isChecked = HmiBuildConfig.isShowRouteStrategy - tbRouteDynamicEffect.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 引导线动态效果",isChecked) - HmiBuildConfig.isShowRouteStrategy = isChecked - } - - //默认开启 - tbObuWeaknessTrafficSop.isChecked = HmiBuildConfig.isShowObuWeaknessTrafficView - tbObuWeaknessTrafficSop.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP obu弱势交通控制, ",isChecked) - HmiBuildConfig.isShowObuWeaknessTrafficView = isChecked - } - - /** - * 默认关闭 - */ - tbCloudWeaknessTrafficSop.isChecked = HmiBuildConfig.isShowCloudWeaknessTrafficView - tbCloudWeaknessTrafficSop.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 云端弱势交通控制, ",isChecked) - HmiBuildConfig.isShowCloudWeaknessTrafficView = isChecked - } - - tbV2nPnc.isChecked = FunctionBuildConfig.isV2NPnc - tbV2nPnc.setOnCheckedChangeListener{ compoundButton, isChecked -> + //V2N场景进PNC + scV2nPnc.isChecked = FunctionBuildConfig.isV2NPnc + scV2nPnc.setOnCheckedChangeListener{ compoundButton, isChecked -> if(!compoundButton.isPressed){ return@setOnCheckedChangeListener } @@ -106,53 +89,9 @@ internal class SOPSettingView @JvmOverloads constructor( FunctionBuildConfig.isV2NPnc = isChecked } - tbV2iPnc.isChecked = FunctionBuildConfig.isV2IPnc - tbV2iPnc.setOnCheckedChangeListener{ compoundButton, isChecked -> - if(!compoundButton.isPressed){ - return@setOnCheckedChangeListener - } - hmiAction("SOP V2I场景进PNC, ",isChecked) - CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked) - FunctionBuildConfig.isV2IPnc = isChecked - } - - /** - * 默认打开 - */ - tbObuV2vView.isChecked = HmiBuildConfig.isShowObuV2vView - tbObuV2vView.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP obuV2V开关, ",isChecked) - HmiBuildConfig.isShowObuV2vView = isChecked - } - - /** - * 默认打开 - */ - tbObuV2iView.isChecked = HmiBuildConfig.isShowObuV2iView - tbObuV2iView.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP obuV2i开关, ",isChecked) - HmiBuildConfig.isShowObuV2iView = isChecked - } - - /** - * 默认关闭 - */ - tbRunRedLightSop.isChecked = HmiBuildConfig.isShowRunRedLightView - tbRunRedLightSop.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP obu闯红灯预警, ",isChecked) - HmiBuildConfig.isShowRunRedLightView = isChecked - if (HmiBuildConfig.isShowRunRedLightView) { - CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_RUNREDLIGHT_WARNING, "1".toByteArray()) - } else { - CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_RUNREDLIGHT_WARNING, "0".toByteArray()) - } - } - - /** - * 默认关闭 - */ - tbGreenWaveSop.isChecked = HmiBuildConfig.isShowGreenWaveView - tbGreenWaveSop.setOnCheckedChangeListener { _, isChecked -> + //绿波通行(默认关闭) + scGreenWaveSop.isChecked = HmiBuildConfig.isShowGreenWaveView + scGreenWaveSop.setOnCheckedChangeListener { _, isChecked -> hmiAction("SOP obu绿波通行, ",isChecked) HmiBuildConfig.isShowGreenWaveView = isChecked if (HmiBuildConfig.isShowGreenWaveView) { @@ -162,30 +101,111 @@ internal class SOPSettingView @JvmOverloads constructor( } } - tbTrafficLight.isChecked = !HmiBuildConfig.isShowTrafficLightView - tbTrafficLight.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 红绿灯标识开关, ",isChecked) - if (isChecked) { - CallerHmiManager.showTrafficLightView() + //V2I场景进PNC + scV2iPnc.isChecked = FunctionBuildConfig.isV2IPnc + scV2iPnc.setOnCheckedChangeListener{ compoundButton, isChecked -> + if(!compoundButton.isPressed){ + return@setOnCheckedChangeListener + } + hmiAction("SOP V2I场景进PNC, ",isChecked) + CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked) + FunctionBuildConfig.isV2IPnc = isChecked + } + + //闯红灯预警(默认关闭) + scRunRedLightSop.isChecked = HmiBuildConfig.isShowRunRedLightView + scRunRedLightSop.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP obu闯红灯预警, ",isChecked) + HmiBuildConfig.isShowRunRedLightView = isChecked + if (HmiBuildConfig.isShowRunRedLightView) { + CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_RUNREDLIGHT_WARNING, "1".toByteArray()) } else { - CallerHmiManager.hideTrafficLightView() + CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_RUNREDLIGHT_WARNING, "0".toByteArray()) } } - tbSpeedLimit.isChecked = HmiBuildConfig.isShowLimitingVelocityView - tbSpeedLimit.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 限速标识开关, ",isChecked) + //路侧弱势交通参与者(默认开启) + scObuWeaknessTrafficSop.isChecked = HmiBuildConfig.isShowObuWeaknessTrafficView + scObuWeaknessTrafficSop.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP obu弱势交通控制, ",isChecked) + HmiBuildConfig.isShowObuWeaknessTrafficView = isChecked + } + + //V2V总开关(默认关闭) + scObuV2vView.isChecked = HmiBuildConfig.isShowObuV2vView + scObuV2vView.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP obuV2V开关, ",isChecked) + HmiBuildConfig.isShowObuV2vView = isChecked + } + + //obu总开关 + scObu.isChecked = CallerObuApiManager.isConnected() + scObu.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP OBU控制总开关, ",isChecked) if (isChecked) { - HmiBuildConfig.isShowLimitingVelocityView = true + CallerObuApiManager.resetObuIpAddress(MogoObuConst.OBU_DEFAULT_IP) } else { - HmiBuildConfig.isShowLimitingVelocityView = false - CallerHmiViewControlListenerManager.invokeVisible(IViewControlListener.LimitingVelocityView_TAG,View.GONE) + //断开链接 + CallerObuApiManager.disConnectObu() } } + } + + /** + * 地图效果类设置 + */ + private fun mapSetting(){ + //危险障碍物颜色标记开关 + scMarkingObstacles.isChecked = FunctionBuildConfig.isPNCWarning + scMarkingObstacles.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP 危险障碍物颜色标记开关",isChecked) + FunctionBuildConfig.isPNCWarning = isChecked + } + if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { + scMarkingObstacles.isEnabled = false + } + + //引导线动态效果 + scRouteDynamicEffect.isChecked = HmiBuildConfig.isShowRouteStrategy + scRouteDynamicEffect.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP 引导线动态效果",isChecked) + HmiBuildConfig.isShowRouteStrategy = isChecked + } + + //点云效果 + //初始化点云数据渲染情况 + scDrawPointCloudData.isChecked = FunctionBuildConfig.isDrawPointCloudData + //是否渲染点云数据 + scDrawPointCloudData.setOnCheckedChangeListener { _, isChecked -> + CallerAutoPilotControlManager.setIsDrawPointCloud(isChecked) + FunctionBuildConfig.isDrawPointCloudData = isChecked + CallerMapUIServiceManager.getMapUIController()?.setIsDrawPointCloud(isChecked) + } + + //自车光圈 + scCarAperture.isChecked = FunctionBuildConfig.isDisplayAnimEnable + scCarAperture.setOnCheckedChangeListener { _, isChecked -> + CallerMapUIServiceManager.getMapUIController()?.setDisplayAnimEnable(isChecked) + FunctionBuildConfig.isDisplayAnimEnable = isChecked + } + } + + /** + * 与车相关类设置 + */ + private fun vehicleSetting(){ + //绕障类功能 + scObstacleAvoidance.isChecked = FunctionBuildConfig.isDetouring + scObstacleAvoidance.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP 绕障类功能开关",isChecked) + CallerAutoPilotControlManager.sendDetouring(isChecked) + FunctionBuildConfig.isDetouring = isChecked + } + // 演示模式,上一次勾选的数据 - tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode - tbDemoMode.setOnCheckedChangeListener { compoundButton, _ -> + scDemoMode.isChecked = FunctionBuildConfig.isDemoMode + scDemoMode.setOnCheckedChangeListener { compoundButton, _ -> if(!compoundButton.isPressed){ return@setOnCheckedChangeListener } @@ -200,12 +220,12 @@ internal class SOPSettingView @JvmOverloads constructor( } //只在司机端设置美化模式开关功能 if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { - tbDemoMode.visibility = View.GONE + scDemoMode.isEnabled = false } // 雨天模式,上一次勾选的数据 - tbRainMode.isChecked = FunctionBuildConfig.isRainMode - tbRainMode.setOnCheckedChangeListener { compoundButton, isChecked -> + scRainMode.isChecked = FunctionBuildConfig.isRainMode + scRainMode.setOnCheckedChangeListener { compoundButton, isChecked -> if(!compoundButton.isPressed){ return@setOnCheckedChangeListener } @@ -216,72 +236,24 @@ internal class SOPSettingView @JvmOverloads constructor( } //雨天模式按钮只在司机屏生效,乘客屏不显示 if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { - tbRainMode.visibility = View.GONE - } - - tbObu.isChecked = CallerObuApiManager.isConnected() - tbObu.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP OBU控制总开关, ",isChecked) - if (isChecked) { - CallerObuApiManager.resetObuIpAddress(MogoObuConst.OBU_DEFAULT_IP) - } else { - //断开链接 - CallerObuApiManager.disConnectObu() - } - } - - - tbIPCReport.isChecked = FunctionBuildConfig.isReportWarning - tbIPCReport.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 是否开启异常上报, ",isChecked) - FunctionBuildConfig.isReportWarning = isChecked - } - - tbNewV2NData.isChecked = FunctionBuildConfig.isNewV2NData - tbNewV2NData.setOnCheckedChangeListener { _, isChecked -> - hmiAction("SOP 是否是V2N新链路(云->工控机->App)",isChecked) - FunctionBuildConfig.isNewV2NData = isChecked - } - - // M1 360度环视 - tbNew360LookAround?.also { - if (!AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode)) { - it.isEnabled = false - } else { - it.isEnabled = true - it.setOnCheckedChangeListener { _, isChecked -> - if (isChecked) { - CallerHmiManager.showM1360LookAround() - } else { - CallerHmiManager.hidM1360LookAround() - } - } - it.isChecked = CallerHmiManager.isM1360LookAroundShowing() - } + scRainMode.visibility = View.GONE } //弱网减速停车 - tbWeakNetSlowDown.isChecked = FunctionBuildConfig.isWeakNetSlowDown - tbWeakNetSlowDown.setOnCheckedChangeListener{_, isChecked -> + scWeakNetSlowDown.isChecked = FunctionBuildConfig.isWeakNetSlowDown + scWeakNetSlowDown.setOnCheckedChangeListener{_, isChecked -> FunctionBuildConfig.isWeakNetSlowDown = isChecked CallerAutoPilotControlManager.sendWeakNetSlowDown(isChecked) hmiAction("SOP 弱网减速停车, ",isChecked) } //故障减速停车 - tbFaultSlowDown.isChecked = FunctionBuildConfig.isFaultSlowDown - tbFaultSlowDown.setOnCheckedChangeListener{_, isChecked -> + scFaultSlowDown.isChecked = FunctionBuildConfig.isFaultSlowDown + scFaultSlowDown.setOnCheckedChangeListener{_, isChecked -> FunctionBuildConfig.isFaultSlowDown = isChecked CallerAutoPilotControlManager.sendBreakdownSlowDown(isChecked) hmiAction("SOP 故障减速停车, ",isChecked) } - - //是否展示被动触发的录包弹窗(自动驾驶下出现问题触发的录包) - tbShowBagRecordWindow.isChecked = FunctionBuildConfig.isShowBagRecordWindow - tbShowBagRecordWindow.setOnCheckedChangeListener{_, isChecked -> - FunctionBuildConfig.isShowBagRecordWindow = isChecked - hmiAction("SOP 是否展示被动触发的录包弹窗, ",isChecked) - } //融合模式 rgFusionMode.setOnCheckedChangeListener { _, p1 -> when(p1){ @@ -308,7 +280,65 @@ internal class SOPSettingView @JvmOverloads constructor( } CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) } + } + /** + * 其他类别开关设置 + */ + private fun otherSetting(){ + //红绿灯标识开关 + scTrafficLight.isChecked = !HmiBuildConfig.isShowTrafficLightView + scTrafficLight.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP 红绿灯标识开关, ",isChecked) + if (isChecked) { + CallerHmiManager.showTrafficLightView() + } else { + CallerHmiManager.hideTrafficLightView() + } + } + + //限速标识 + scSpeedLimit.isChecked = HmiBuildConfig.isShowLimitingVelocityView + scSpeedLimit.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP 限速标识开关, ",isChecked) + if (isChecked) { + HmiBuildConfig.isShowLimitingVelocityView = true + } else { + HmiBuildConfig.isShowLimitingVelocityView = false + CallerHmiViewControlListenerManager.invokeVisible(IViewControlListener.LimitingVelocityView_TAG,View.GONE) + } + } + + //异常上报提示 + scIPCReport.isChecked = FunctionBuildConfig.isReportWarning + scIPCReport.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP 是否开启异常上报, ",isChecked) + FunctionBuildConfig.isReportWarning = isChecked + } + + // M1 360度环视 + scNew360LookAround?.also { + if (!AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode)) { + it.isEnabled = false + } else { + it.isEnabled = true + it.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CallerHmiManager.showM1360LookAround() + } else { + CallerHmiManager.hidM1360LookAround() + } + } + it.isChecked = CallerHmiManager.isM1360LookAroundShowing() + } + } + + //是否展示被动触发的录包弹窗(自动驾驶下出现问题触发的录包) + scShowBagRecordWindow.isChecked = FunctionBuildConfig.isShowBagRecordWindow + scShowBagRecordWindow.setOnCheckedChangeListener{_, isChecked -> + FunctionBuildConfig.isShowBagRecordWindow = isChecked + hmiAction("SOP 是否展示被动触发的录包弹窗, ",isChecked) + } //变道绕障的目标障碍物速度阈值 tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" @@ -393,8 +423,11 @@ internal class SOPSettingView @JvmOverloads constructor( mfStatusLayout.setClickEnabled(false) mfTest.isEnabled = false } + + } + override fun onAttachedToWindow() { super.onAttachedToWindow() //添加 业务配置监听 @@ -410,10 +443,10 @@ internal class SOPSettingView @JvmOverloads constructor( override fun updateFuncMode(tag: String, boolean: Boolean) { super.updateFuncMode(tag, boolean) if(tag == FUNC_MODE_DEMO){ - tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode + scDemoMode.isChecked = FunctionBuildConfig.isDemoMode } if(tag == FUNC_MODE_RAIN){ - tbRainMode.isChecked = FunctionBuildConfig.isRainMode + scRainMode.isChecked = FunctionBuildConfig.isRainMode } } @@ -426,40 +459,34 @@ internal class SOPSettingView @JvmOverloads constructor( CallerDevaToolsManager.mofang()?.unRegisterMoFangStatusListener(this) } -// private val timerTaskRefresh = object : TimerTask(){ -// override fun run() { -// UiThreadHandler.post{ -// tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode -// tbRainMode.isChecked = FunctionBuildConfig.isRainMode -// } -// } -// -// } override fun updateBizView(type: String, lock: Boolean) { when (type) { + //美化模式 FuncBizConfig.BIZ_BEAUTY_MODE -> { - tbDemoMode.isClickable = !lock + scDemoMode.isClickable = !lock if(lock){ - tbDemoMode.visibility = View.INVISIBLE + scDemoMode.visibility = View.INVISIBLE }else{ - tbDemoMode.visibility = View.VISIBLE + scDemoMode.visibility = View.VISIBLE } } + //雨天模式 FuncBizConfig.BIZ_RAIN_MODE -> { - tbRainMode.isClickable = !lock + scRainMode.isClickable = !lock if (lock) { - tbRainMode.visibility = View.INVISIBLE + scRainMode.visibility = View.INVISIBLE } else { - tbRainMode.visibility = View.VISIBLE + scRainMode.visibility = View.VISIBLE } } + //危险障碍物颜色标记 FuncBizConfig.BIZ_PNC_WARNING -> { - tbMarkingObstacles.isClickable = !lock + scMarkingObstacles.isClickable = !lock if (lock) { - tbMarkingObstacles.visibility = View.INVISIBLE + scMarkingObstacles.visibility = View.INVISIBLE } else { - tbMarkingObstacles.visibility = View.VISIBLE + scMarkingObstacles.visibility = View.VISIBLE } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt index ac38c8e368..afbefbeab0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt @@ -21,8 +21,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingListener import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason -import com.zhjt.mogo.adas.data.bean.UnableAutopilotReason.SourceType +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason +import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.SourceType import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest.ParallelRequest import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass @@ -121,7 +121,7 @@ class ParallelDriveView @JvmOverloads constructor( override fun onAutopilotAbility( isAutopilotAbility: Boolean, - unableAutopilotReasons: ArrayList? + unableAutopilotReasons: ArrayList? ) { // 是否可平行驾驶 val isAvailable = isAvailable(unableAutopilotReasons) @@ -173,7 +173,7 @@ class ParallelDriveView @JvmOverloads constructor( } } - private fun isAvailable(unableAutopilotReasons: ArrayList?): Boolean { + private fun isAvailable(unableAutopilotReasons: ArrayList?): Boolean { var unavailable = false unableAutopilotReasons?.forEach { if (it.source.ordinal == SourceType.CHASSIS.ordinal) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index 0f7ffcb25a..eb00657456 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -1,492 +1,710 @@ - - + android:background="@color/color_D4D8DC" + android:orientation="vertical"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -