[8.1.0]多链路数据控制

This commit is contained in:
xuxinchao
2025-06-07 15:17:13 +08:00
parent 9943888855
commit 6a2c64289b
14 changed files with 597 additions and 264 deletions

View File

@@ -1616,4 +1616,53 @@ class MoGoAutopilotControlProvider :
return AdasManager.getInstance().sendCloudConfigRequest() > -1
}
/**
* NDE下行感知进PNC开关
* @param enable 0: 不发给PnC 1:发给Pnc
*/
override fun sendNdeDownPerceptionToPnc(enable: Int): Boolean {
return AdasManager.getInstance().sendNdeDownPerceptionToPnc(enable) > -1
}
/**
* NDE下行事件进PNC开关
* @param enable 0: 不发给PnC 1:发给Pnc
*/
override fun sendNdeDownEventToPnc(enable: Int): Boolean {
return AdasManager.getInstance().sendNdeDownEventToPnc(enable) > -1
}
/**
* V2I下行感知进PNC开关
* @param enable 0: 不发给PnC 1:发给Pnc
*/
override fun sendV2iDownPerceptionToPnc(enable: Int): Boolean {
return AdasManager.getInstance().sendV2iDownPerceptionToPnc(enable) > -1
}
/**
* 云端配置控制
* @param type 0:蘑菇云 1:NDE云 2:基础平台云
* @param direction 0:上行和下行 1:上行 2:下行 当 type == 0 或 1 时 此值只能是 0蘑菇云和NDE云只能上下行同时控制当 type == 2 时 此值不能是 0基础平台云只能上下行分开控制
* @param enable 连接使能开关, true:开 false:关闭
*/
override fun sendForceStopOrStartCloudReq(type: Int, direction: Int, enable: Boolean): Boolean {
return AdasManager.getInstance().sendForceStopOrStartCloudReq(type, direction, enable) > -1
}
/**
* 域控上报OBU开关控制
* @param enable 0:关 1:开
*/
override fun sendSetObuUploadReq(enable: Int): Boolean {
return AdasManager.getInstance().sendSetObuUploadReq(enable) > -1
}
/**
* 域控上报OBU开关状态查询
*/
override fun sendObuUploadStatusQuery(): Boolean {
return AdasManager.getInstance().sendObuUploadStatusQuery() > -1
}
}

View File

@@ -88,7 +88,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerCaptureImgManager
import com.mogo.eagle.core.function.call.devatools.CallerDiskCopyManager
import com.mogo.eagle.core.function.call.devatools.CallerImgUploadCloudManager
import com.mogo.eagle.core.function.call.devatools.CallerV2XManager
import com.mogo.eagle.core.function.call.devatools.CallerOTAManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.function.call.obu.CallerObuMapMathListenerManager
@@ -1308,6 +1308,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
) {
FunctionBuildConfig.fusionMode = adasParam.fusionMode
CallerAutopilotGetParamResponseDispatcher.dispatchResponse(header, getParamResp, adasParam)
CallerV2XManager.invokeGetParamResp(getParamResp, adasParam)
}
/**
@@ -1485,13 +1486,14 @@ class MoGoAdasListenerImpl : OnAdasListener {
override fun onCloudConfig(header: MessagePad.Header, config: MessagePad.CloudConfig) {
CallerCloudConfigListenerManager.invokeCloudConfig(config)
CallerV2XManager.invokeCloudConfig(config)
}
override fun onImgUploadCloudStatusResp(
header: MessagePad.Header,
resp: MessagePad.ImgUploadCloudStatusResp
) {
CallerImgUploadCloudManager.invokeImgUploadCloudStatusResp(resp)
CallerV2XManager.invokeImgUploadCloudStatusResp(resp)
}
/**
@@ -1594,6 +1596,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
* @param enable 数据
*/
override fun onObuUploadStatus(header: MessagePad.Header, enable: MessagePad.SetEnableReq) {
CallerV2XManager.invokeObuUploadStatus(enable)
}
/**

View File

@@ -25,10 +25,9 @@ import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
import com.mogo.eagle.core.data.multidisplay.TelematicConstant
import com.mogo.eagle.core.data.obu.MogoObuConst
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoGetParamResponseListener
import com.mogo.eagle.core.function.api.devatools.IImgUploadCloudListener
import com.mogo.eagle.core.function.api.devatools.IV2XListener
import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_DEMO
@@ -40,11 +39,10 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotGetParamResponseDispatcher
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.devatools.CallerImgUploadCloudManager
import com.mogo.eagle.core.function.call.devatools.CallerV2XManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
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.setting.CallerSopSettingManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
@@ -324,18 +322,42 @@ class OperatePanelLayout : LinearLayout {
}
}
class V2XPreferenceFragmentCompat : OperatePanelDetailBase() {
class V2XPreferenceFragmentCompat : OperatePanelDetailBase(), IV2XListener {
companion object {
private const val KEY_V2X_TOTAL_SWITCH = "v2x_total_switch"
private const val KEY_V2N_TOTAL_SWITCH = "v2n_total_switch"
private const val KEY_V2N_NEW_LINKED_TO_PNC = "v2n_new_linked_to_pnc"
private const val KEY_V2I_TOTAL_SWITCH = "v2i_total_switch"
private const val KEY_V2I_TO_PNC = "v2i_to_pnc"
private const val KEY_V2I_RED_LIGHT_WARNING = "v2i_red_light_warning"
private const val KEY_V2I_WEAKNESS_TRAFFIC = "v2i_weakness_traffic"
private const val KEY_V2V_TOTAL_SWITCH = "v2v_total_switch"
private const val KEY_OBU_TOTAL_SWITCH = "obu_total_switch"
private const val TAG = "V2XPreferenceFragmentCompat"
private const val NDE_UPWARD_SWITCH = "nde_upward_switch" //NDE数据上车上行
private const val IMAGE_UPLOAD_SWITCH = "image_upload_switch" //车辆图像上传行云大模型
private const val NDE_DOWNWARD_SWITCH = "nde_downward_switch" //NDE数据上车下行
private const val NDE_EVENT_DATA_TO_PNC = "nde_event_data_to_pnc" //事件数据进PNC应用
private const val NDE_PERCEPTION_DATA_TO_PNC = "nde_perception_data_to_pnc" //感知数据进PNC应用
private const val CLOUD_CONTROL_UPWARD = "cloud_control_upward" //云控基础平台上行
private const val CLOUD_CONTROL_DOWNWARD = "cloud_control_downward" //云控基础平台下行
private const val OBU_UPWARD_SWITCH = "obu_upward_switch" //OBU上报V2I、V2V上行
private const val V2I_DOWNWARD_SWITCH = "v2i_downward_switch" //V2I下行
private const val V2I_WEAK_TRAFFIC_PARTICIPANT = "v2i_weak_traffic_participant" //弱势交通参与者
private const val V2I_PERCEPTION_DATA_TO_PNC = "v2i_perception_data_to_pnc" //感知数据进PNC应用
private const val V2V_DOWNWARD_SWITCH = "v2v_downward_switch" //V2V下行
}
override fun onCreateView(inflater: LayoutInflater,
container: ViewGroup?, savedInstanceState: Bundle?
): View {
CallerV2XManager.addListener(TAG,this)
if (AppConfigInfo.isConnectAutopilot){
//云端配置查询
CallerAutoPilotControlManager.sendCloudConfigRequest()
//域控上报OBU开关状态查询
CallerAutoPilotControlManager.sendObuUploadStatusQuery()
//车辆图像上传行云大模型状态查询
CallerAutoPilotControlManager.sendImgUploadCloudStatusQuery()
}
return super.onCreateView(inflater, container, savedInstanceState)
}
override fun onDestroyView() {
CallerV2XManager.removeListener(TAG)
super.onDestroyView()
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@@ -344,32 +366,53 @@ class OperatePanelLayout : LinearLayout {
override fun getDefaultVal(pref: Preference): Any? {
when (pref.key) {
KEY_V2X_TOTAL_SWITCH -> {
return FunctionBuildConfig.v2xTotalSwitch
//NDE数据上车上行
NDE_UPWARD_SWITCH->{
}
KEY_V2N_TOTAL_SWITCH -> {
return FunctionBuildConfig.v2nTotalSwitch
//车辆图像上传行云大模型
IMAGE_UPLOAD_SWITCH->{
return FunctionBuildConfig.isImageUpload
}
KEY_V2N_NEW_LINKED_TO_PNC -> {
return FunctionBuildConfig.v2nNewLinkedToPNC
//NDE数据上车下行
NDE_DOWNWARD_SWITCH->{
}
KEY_V2I_TOTAL_SWITCH -> {
//事件数据进PNC应用
NDE_EVENT_DATA_TO_PNC->{
}
//感知数据进PNC应用
NDE_PERCEPTION_DATA_TO_PNC->{
}
//云控基础平台上行
CLOUD_CONTROL_UPWARD->{
}
//云控基础平台下行
CLOUD_CONTROL_DOWNWARD->{
}
//OBU上报V2I、V2V上行
OBU_UPWARD_SWITCH->{
}
//V2I下行
V2I_DOWNWARD_SWITCH->{
return HmiBuildConfig.v2iTotalSwitch
}
KEY_V2I_TO_PNC -> {
return FunctionBuildConfig.v2iToPNC
}
KEY_V2I_RED_LIGHT_WARNING -> {
return HmiBuildConfig.v2iRedLightWarning
}
KEY_V2I_WEAKNESS_TRAFFIC -> {
//弱势交通参与者
V2I_WEAK_TRAFFIC_PARTICIPANT->{
return HmiBuildConfig.v2iWeaknessTraffic
}
KEY_V2V_TOTAL_SWITCH -> {
return HmiBuildConfig.v2vTotalSwitch
//感知数据进PNC应用
V2I_PERCEPTION_DATA_TO_PNC->{
}
KEY_OBU_TOTAL_SWITCH -> {
return CallerObuApiManager.isConnected()
//V2V下行
V2V_DOWNWARD_SWITCH->{
return HmiBuildConfig.v2vTotalSwitch
}
}
return super.getDefaultVal(pref)
@@ -378,110 +421,116 @@ class OperatePanelLayout : LinearLayout {
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
Log.d(TAG, "-- onPreferenceChange:($preference, $newValue)")
when (preference.key) {
KEY_V2X_TOTAL_SWITCH -> {
//NDE数据上车上行
NDE_UPWARD_SWITCH->{
}
//车辆图像上传行云大模型
IMAGE_UPLOAD_SWITCH->{
val isChecked = newValue as? Boolean ?: false
FunctionBuildConfig.v2xTotalSwitch = isChecked
hmiAction("V2X总开关, ", isChecked)
clickEventAnalytics("V2X总开关", isChecked)
if (isChecked) {
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2N_TOTAL_SWITCH)?.also { changeValue(it, FunctionBuildConfig.v2nTotalSwitch) } // V2N总开关
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2I_TOTAL_SWITCH)?.also { changeValue(it, HmiBuildConfig.v2iTotalSwitch) } // V2I总开关
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2V_TOTAL_SWITCH)?.also { changeValue(it, HmiBuildConfig.v2vTotalSwitch) } // V2V总开关
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_OBU_TOTAL_SWITCH)?.also { changeValue(it, CallerObuApiManager.isConnected()) } // OBU总开关
} else {
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2N_TOTAL_SWITCH)?.also { changeValue(it, false) } // V2N总开关
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2I_TOTAL_SWITCH)?.also { changeValue(it, false) } // V2I总开关
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2V_TOTAL_SWITCH)?.also { changeValue(it, false) } // V2V总开关
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_OBU_TOTAL_SWITCH)?.also { changeValue(it, false) } // OBU总开关
}
FunctionBuildConfig.isImageUpload = isChecked
//域控摄像头上传NDE云开关命令
CallerAutoPilotControlManager.sendImgUploadCloudEnable(isChecked)
//查询域控摄像头上传NDE云开关状态查询,设置完成后延迟500毫秒进行查询
UiThreadHandler.postDelayed({
CallerAutoPilotControlManager.sendImgUploadCloudStatusQuery()
}, 500)
hmiAction("SOP 车辆图像上传行云大模型, ", isChecked)
clickEventAnalytics("车辆图像上传行云大模型", isChecked)
return true
}
KEY_V2N_TOTAL_SWITCH -> {
val isChecked = newValue as? Boolean ?: false
FunctionBuildConfig.v2nTotalSwitch = isChecked
hmiAction("V2N总开关, ", isChecked)
clickEventAnalytics("V2N总开关", isChecked)
if (!isChecked) { // preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2N_NEW_LINKED)?.also { changeValue(it, false) }
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2N_NEW_LINKED_TO_PNC)?.also { changeValue(it, false) }
}
val map = HashMap<String, Boolean>().also {
it["f1"] = isChecked
}
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, toJson(map).toByteArray())
return true
//NDE数据上车下行
NDE_DOWNWARD_SWITCH->{
}
KEY_V2N_NEW_LINKED_TO_PNC -> {
val isChecked = newValue as? Boolean ?: false
FunctionBuildConfig.v2nNewLinkedToPNC = isChecked
clickEventAnalytics("V2N场景进PNC", isChecked)
hmiAction("V2N场景进PNC, ", isChecked)
CallerAutoPilotControlManager.sendV2nToPncCmd(isChecked)
return true
//事件数据进PNC应用
NDE_EVENT_DATA_TO_PNC->{
}
KEY_V2I_TOTAL_SWITCH -> {
//感知数据进PNC应用
NDE_PERCEPTION_DATA_TO_PNC->{
}
//云控基础平台上行
CLOUD_CONTROL_UPWARD->{
}
//云控基础平台下行
CLOUD_CONTROL_DOWNWARD->{
}
//OBU上报V2I、V2V上行
OBU_UPWARD_SWITCH->{
}
//V2I下行
V2I_DOWNWARD_SWITCH->{
val isChecked = newValue as? Boolean ?: false
HmiBuildConfig.v2iTotalSwitch = isChecked
hmiAction("V2I总开关, ", isChecked)
hmiAction("V2I下行, ", isChecked)
if (!isChecked) {
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2I_TO_PNC)?.also { changeValue(it, false) }
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2I_RED_LIGHT_WARNING)?.also { changeValue(it, false) }
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2I_WEAKNESS_TRAFFIC)?.also { changeValue(it, false) }
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(V2I_WEAK_TRAFFIC_PARTICIPANT)?.also { changeValue(it, false) }
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(V2I_PERCEPTION_DATA_TO_PNC)?.also { changeValue(it, false) }
}
clickEventAnalytics("V2I总开关", isChecked)
clickEventAnalytics("V2I下行", isChecked)
return true
}
KEY_V2I_TO_PNC -> {
val isChecked = newValue as? Boolean ?: false
FunctionBuildConfig.v2iToPNC = isChecked
// FunctionBuildConfig.isFusionColor = isChecked //6.6.2版本基于运营需求-产品设计-v2i进pnc,感知目标颜色替换
FunctionBuildConfig.fusionMode = 2
CallerAutoPilotControlManager.sendFusionMode(2)
CallerAutoPilotControlManager.setFusionColor(isChecked)
CallerHmiViewControlListenerManager.invokeFuncMode(IViewControlListener.FUNC_FUSION_COLOR,isChecked)
CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked)
hmiAction("V2I场景进PNC, ", isChecked)
clickEventAnalytics("V2I场景进PNC", isChecked)
return true
}
KEY_V2I_RED_LIGHT_WARNING -> {
val isChecked = newValue as? Boolean ?: false
HmiBuildConfig.v2iRedLightWarning = isChecked
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_RUNREDLIGHT_WARNING, (if (isChecked) "1" else "0").toByteArray())
clickEventAnalytics("V2I闯红灯预警", isChecked)
hmiAction("V2I闯红灯预警, ", isChecked)
return true
}
KEY_V2I_WEAKNESS_TRAFFIC -> {
//弱势交通参与者
V2I_WEAK_TRAFFIC_PARTICIPANT->{
val isChecked = newValue as? Boolean ?: false
HmiBuildConfig.v2iWeaknessTraffic = isChecked
clickEventAnalytics("V2I弱势交通参与者", isChecked)
hmiAction("V2I弱势交通参与者, ", isChecked)
return true
}
KEY_V2V_TOTAL_SWITCH -> {
//感知数据进PNC应用
V2I_PERCEPTION_DATA_TO_PNC->{
}
//V2V下行
V2V_DOWNWARD_SWITCH->{
val isChecked = newValue as? Boolean ?: false
HmiBuildConfig.v2vTotalSwitch = isChecked
clickEventAnalytics("V2V总开关", isChecked)
hmiAction("V2V总开关, ", isChecked)
return true
}
KEY_OBU_TOTAL_SWITCH -> {
val isChecked = newValue as? Boolean ?: false
if (!isChecked) {
CallerObuApiManager.disConnectObu() // 断开OBU连接
} else {
val isObuConnected = CallerObuApiManager.isConnected()
if (isObuConnected) {
CallerObuApiManager.resetObuIpAddress(MogoObuConst.OBU_DEFAULT_IP)
}
}
clickEventAnalytics("OBU控制总开关", isChecked)
hmiAction("OBU控制总开关, ", isChecked)
clickEventAnalytics("V2V下行", isChecked)
hmiAction("V2V下行, ", isChecked)
return true
}
}
return super.onPreferenceChange(preference, newValue)
}
/**
* 云端配置查询响应
* @param config 数据
*/
override fun onCloudConfig(config: MessagePad.CloudConfig) {
}
/**
* 查询摄像头上传NDE云状态返回
*/
override fun onImgUploadCloudStatusResp(resp: MessagePad.ImgUploadCloudStatusResp) {
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(IMAGE_UPLOAD_SWITCH)?.also { changeValue(it, resp.enable) }
}
/**
* 查询 NDE下行事件数据进pnc 与 V2I下行感知数据进pnc 与 NDE下行感知数据进pnc参数获取应答
* @param getParamResp 配置参数
* @param adasParam 解析后的配置参数
*/
override fun onGetParamResp(getParamResp: MessagePad.SetParamReq, adasParam: AdasParam) {
}
/**
* 域控上报OBU开关状态响应
* @param enable 数据
*/
override fun onObuUploadStatus(enable: MessagePad.SetEnableReq) {
}
}
class DemoPreferenceFragmentCompat : OperatePanelDetailBase(), IViewControlListener {
@@ -1061,8 +1110,8 @@ class OperatePanelLayout : LinearLayout {
}
}
class VehiclesPreferenceFragmentCompat : OperatePanelDetailBase(), IMoGoAutopilotCarConfigListener, ISopSettingListener, IViewControlListener, IMoGoGetParamResponseListener,
IImgUploadCloudListener {
class VehiclesPreferenceFragmentCompat : OperatePanelDetailBase(), IMoGoAutopilotCarConfigListener,
ISopSettingListener, IViewControlListener, IMoGoGetParamResponseListener{
companion object {
private const val TAG = "VehiclesPreferenceFragmentCompat"
private const val KEY_PNC_PARK_INTERSECTION_CAR = "pnc_park_intersection_car"
@@ -1072,7 +1121,6 @@ class OperatePanelLayout : LinearLayout {
private const val KEY_FAULT_DECELERATION_PARK = "fault_deceleration_park"
private const val KEY_WEAK_NET_DECELERATION_PARK = "weak_net_deceleration_park"
private const val KEY_EXAM_FUNCTION_PANEL = "exam_function_panel"
private const val KEY_IMAGE_UPLOAD = "image_upload"
private const val KEY_ALL_MERGE_MODE = "all_merge_mode"
private const val KEY_BLIND_AREA_MODE = "blind_area_mode"
private const val KEY_BEYOND_VISUAL_RANGE_MODE = "beyond_visual_range_mode"
@@ -1091,13 +1139,11 @@ class OperatePanelLayout : LinearLayout {
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
CallerSopSettingManager.addListener(TAG, this)
CallerHmiViewControlListenerManager.addListener(TAG, this)
CallerImgUploadCloudManager.addListener(TAG, this)
if (AppConfigInfo.isConnectAutopilot) {
Logger.d(TAG, "--- onCreateView --- 2 ---") //获取车辆配置
CallerAutoPilotControlManager.getCarConfig() //查询融合模式
CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.FUSION_MODE)
CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.OVERTAKE_MAX_SPEED)
CallerAutoPilotControlManager.sendImgUploadCloudStatusQuery()
}
return super.onCreateView(inflater, container, savedInstanceState)
}
@@ -1107,7 +1153,6 @@ class OperatePanelLayout : LinearLayout {
CallerAutopilotCarConfigListenerManager.removeListener(TAG)
CallerSopSettingManager.removeListener(TAG)
CallerHmiViewControlListenerManager.removeListener(TAG)
CallerImgUploadCloudManager.removeListener(TAG)
super.onDestroyView()
}
@@ -1245,9 +1290,6 @@ class OperatePanelLayout : LinearLayout {
KEY_RAIN_DAY -> {
return FunctionBuildConfig.isRainMode
}
KEY_IMAGE_UPLOAD -> {
return FunctionBuildConfig.isImageUpload
}
KEY_WEAK_NET_DECELERATION_PARK -> {
return FunctionBuildConfig.isWeakNetSlowDown
}
@@ -1397,19 +1439,6 @@ class OperatePanelLayout : LinearLayout {
clickEventAnalytics("考试功能面板", isChecked)
return true
}
KEY_IMAGE_UPLOAD -> {
val isChecked = newValue as? Boolean ?: false
FunctionBuildConfig.isImageUpload = isChecked
//域控摄像头上传NDE云开关命令
CallerAutoPilotControlManager.sendImgUploadCloudEnable(isChecked)
//查询域控摄像头上传NDE云开关状态查询,设置完成后延迟500毫秒进行查询
UiThreadHandler.postDelayed({
CallerAutoPilotControlManager.sendImgUploadCloudStatusQuery()
}, 500)
hmiAction("SOP 车辆图像上传行云大模型, ", isChecked)
clickEventAnalytics("车辆图像上传行云大模型", isChecked)
return true
}
KEY_ALL_MERGE_MODE -> {
if (preference.extras.containsKey("is_checked")) {
preference.extras.remove("is_checked")
@@ -1514,12 +1543,6 @@ class OperatePanelLayout : LinearLayout {
return super.onPreferenceChange(preference, newValue)
}
/**
* 查询摄像头上传NDE云状态返回
*/
override fun onImgUploadCloudStatusResp(resp: MessagePad.ImgUploadCloudStatusResp) {
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_IMAGE_UPLOAD)?.also { changeValue(it, resp.enable) }
}
}
class WelcomeWordsPreferenceCompat : OperatePanelDetailBase() {

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@android:color/transparent"
tools:background="#83000000"
android:layout_marginStart="@dimen/dp_30"
android:layout_marginEnd="@dimen/dp_30">
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:textSize="@dimen/dp_34"
android:textColor="#FFFFFF"
tools:ignore="SpUsage"
android:layout_marginBottom="@dimen/dp_30"
/>
<LinearLayout
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginBottom="@dimen/dp_30"
/>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/white"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:paddingTop="@dimen/dp_30"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@android:color/transparent"
tools:background="#83000000"
android:layout_marginStart="@dimen/dp_30"
android:layout_marginEnd="@dimen/dp_30"
>
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:textSize="@dimen/dp_34"
android:textColor="#FFFFFF"
tools:ignore="SpUsage"
android:layout_marginTop="@dimen/dp_30"
/>
<LinearLayout
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginTop="@dimen/dp_30"
/>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/white"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -2,87 +2,111 @@
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="V2X" android:layout="@layout/layout_operate_panel_preference_category_title">
<SwitchPreferenceCompat
android:key="v2x_total_switch"
android:title="V2X总开关"
android:key="nde_upward_switch"
android:title="NDE数据上车上行"
android:persistent="false"
android:disableDependentsState="false"
android:defaultValue="@bool/v2x_total_switch"
android:defaultValue="@bool/nde_upward_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2n_total_switch"
android:title="V2N总开关"
android:key="image_upload_switch"
android:title="车辆图像上传行云大模型"
android:persistent="false"
android:defaultValue="@bool/image_upload_switch"
android:dependency="nde_upward_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="nde_downward_switch"
android:title="NDE数据上车下行"
android:persistent="false"
android:disableDependentsState="false"
android:dependency="v2x_total_switch"
android:defaultValue="@bool/v2n_total_switch"
android:defaultValue="@bool/nde_downward_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<!-- <SwitchPreferenceCompat-->
<!-- android:key="v2n_new_linked"-->
<!-- android:title="V2N新链路"-->
<!-- android:persistent="false"-->
<!-- android:dependency="v2n_total_switch"-->
<!-- android:defaultValue="@bool/v2n_new_linked"-->
<!-- android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"-->
<!-- android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>-->
<SwitchPreferenceCompat
android:key="v2n_new_linked_to_pnc"
android:title="V2N场景进PNC"
android:key="nde_event_data_to_pnc"
android:title="事件数据进PNC应用"
android:persistent="false"
android:dependency="v2n_total_switch"
android:defaultValue="@bool/v2n_new_linked_to_pnc"
android:dependency="nde_downward_switch"
android:defaultValue="@bool/nde_event_data_to_pnc"
android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2i_total_switch"
android:title="V2I总开关"
android:key="nde_perception_data_to_pnc"
android:title="感知数据进PNC应用"
android:persistent="false"
android:dependency="v2x_total_switch"
android:dependency="nde_downward_switch"
android:defaultValue="@bool/nde_perception_data_to_pnc"
android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="cloud_control_upward"
android:title="云控基础平台上行"
android:persistent="false"
android:defaultValue="@bool/cloud_control_upward"
android:disableDependentsState="false"
android:defaultValue="@bool/v2i_total_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat"
android:layout="@layout/layout_operate_panel_preference_top_divider"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2i_to_pnc"
android:title="V2I场景进PNC"
android:key="cloud_control_downward"
android:title="云控基础平台下行"
android:persistent="false"
android:defaultValue="@bool/v2i_from_pnc"
android:dependency="v2i_total_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2i_red_light_warning"
android:title="闯红灯预警"
android:persistent="false"
android:dependency="v2i_total_switch"
android:defaultValue="@bool/v2i_red_green_warning"
android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2i_weakness_traffic"
android:title="路侧弱势交通参与者"
android:persistent="false"
android:dependency="v2i_total_switch"
android:defaultValue="@bool/v2i_weakness_traffic"
android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2v_total_switch"
android:title="V2V总开关"
android:persistent="false"
android:defaultValue="@bool/v2v_total_switch"
android:defaultValue="@bool/cloud_control_downward"
android:disableDependentsState="false"
android:dependency="v2x_total_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat"
android:layout="@layout/layout_operate_panel_preference_bottom_divider"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="obu_total_switch"
android:title="OBU总开关"
android:key="obu_upward_switch"
android:title="OBU上报V2I、V2V上行"
android:persistent="false"
android:defaultValue="@bool/obu_total_switch"
android:dependency="v2x_total_switch"
android:defaultValue="@bool/v2i_downward_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2i_downward_switch"
android:title="V2I下行"
android:persistent="false"
android:defaultValue="@bool/v2i_downward_switch"
android:disableDependentsState="false"
android:layout="@layout/layout_operate_panel_preference_switch_compat"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2i_weak_traffic_participant"
android:title="弱势交通参与者"
android:persistent="false"
android:defaultValue="@bool/v2i_weak_traffic_participant"
android:dependency="v2i_downward_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2i_perception_data_to_pnc"
android:title="感知数据进PNC应用"
android:persistent="false"
android:defaultValue="@bool/v2i_perception_data_to_pnc"
android:dependency="v2i_downward_switch"
android:layout="@layout/layout_operate_panel_preference_switch_compat_dependee"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
<SwitchPreferenceCompat
android:key="v2v_downward_switch"
android:title="V2V下行"
android:persistent="false"
android:defaultValue="@bool/v2v_downward_switch"
android:disableDependentsState="false"
android:layout="@layout/layout_operate_panel_preference_switch_compat"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"/>
</PreferenceCategory>
</androidx.preference.PreferenceScreen>

View File

@@ -45,13 +45,6 @@
android:title="考试功能面板"
android:persistent="false"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat" />
<SwitchPreferenceCompat
android:key="image_upload"
android:layout="@layout/layout_operate_panel_preference_switch_compat"
android:title="车辆图像上传行云大模型"
android:persistent="false"
android:widgetLayout="@layout/layout_operate_panel_preference_widget_switch_compat"
/>
<CheckBoxPreference
android:key="all_merge_mode"
android:layout="@layout/layout_operate_panel_preference_checkbox_compat"