[6.7.0][运营面板] 融合模式逻辑优化
This commit is contained in:
@@ -25,6 +25,7 @@ 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.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
|
||||
@@ -33,6 +34,7 @@ import com.mogo.eagle.core.function.api.setting.ISopSettingListener
|
||||
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.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.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
@@ -58,6 +60,8 @@ import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils
|
||||
import com.mogo.eagle.core.utilcode.rv.divider.CommonDividerItemDecoration
|
||||
import com.mogo.eagle.core.utilcode.util.AppStateManager
|
||||
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.layout_operate_panel.view.iv_operate_panel_close
|
||||
import kotlinx.coroutines.launch
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
@@ -915,7 +919,7 @@ class OperatePanelLayout : LinearLayout {
|
||||
}
|
||||
}
|
||||
|
||||
class VehiclesPreferenceFragmentCompat : OperatePanelDetailBase(), IMoGoAutopilotCarConfigListener, ISopSettingListener, IViewControlListener {
|
||||
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"
|
||||
@@ -938,15 +942,28 @@ class OperatePanelLayout : LinearLayout {
|
||||
private var prevCheckedKeyForFusionMode: String? = null
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
Logger.d(TAG, "--- onCreateView --- 1 ---")
|
||||
if (AppConfigInfo.isConnectAutopilot) {
|
||||
CallerAutoPilotControlManager.getCarConfig()
|
||||
Logger.d(TAG, "--- onCreateView --- 2 ---") //获取车辆配置
|
||||
CallerAutoPilotControlManager.getCarConfig() //查询融合模式
|
||||
CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.FUSION_MODE)
|
||||
CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.OVERTAKE_MAX_SPEED)
|
||||
}
|
||||
CallerAutopilotGetParamResponseDispatcher.addListener(TAG, this)
|
||||
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
|
||||
CallerSopSettingManager.addListener(TAG, this)
|
||||
CallerHmiViewControlListenerManager.addListener(TAG, this)
|
||||
return super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
CallerAutopilotGetParamResponseDispatcher.removeListener(TAG)
|
||||
CallerAutopilotCarConfigListenerManager.removeListener(TAG)
|
||||
CallerSopSettingManager.removeListener(TAG)
|
||||
CallerHmiViewControlListenerManager.removeListener(TAG)
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
override fun updateFuncMode(tag: String, boolean: Boolean) {
|
||||
super.updateFuncMode(tag, boolean)
|
||||
if (tag == FUNC_MODE_RAIN) {
|
||||
@@ -957,11 +974,86 @@ class OperatePanelLayout : LinearLayout {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
CallerAutopilotCarConfigListenerManager.removeListener(TAG)
|
||||
CallerSopSettingManager.removeListener(TAG)
|
||||
CallerHmiViewControlListenerManager.removeListener(TAG)
|
||||
super.onDestroyView()
|
||||
override fun onGetParamResp(header: MessagePad.Header, getParamResp: MessagePad.SetParamReq, adasParam: AdasParam) {
|
||||
Logger.d(TAG, "-- onGetParamResp --: fusion-mode:${adasParam.fusionMode}, over-take-speed:${adasParam.overtakeMaxSpeed} ")
|
||||
lifecycleScope.launch {
|
||||
when(FunctionBuildConfig.fusionMode) {
|
||||
1 -> {
|
||||
//全融合模式
|
||||
FunctionBuildConfig.fusionMode = 1
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_ALL_MERGE_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
changeValue(it, false)
|
||||
}
|
||||
prevCheckedKeyForFusionMode = KEY_ALL_MERGE_MODE
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(KEY_ALL_MERGE_MODE)?.also {
|
||||
it.extras.putBoolean("is_checked", true)
|
||||
changeValue(it, true)
|
||||
}
|
||||
}
|
||||
2 -> {
|
||||
//盲区模式
|
||||
FunctionBuildConfig.fusionMode = 2
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BLIND_AREA_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
changeValue(it, false)
|
||||
}
|
||||
prevCheckedKeyForFusionMode = KEY_BLIND_AREA_MODE
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(KEY_BLIND_AREA_MODE)?.also {
|
||||
it.extras.putBoolean("is_checked", true)
|
||||
changeValue(it, true)
|
||||
}
|
||||
}
|
||||
3 -> {
|
||||
//超视距模式
|
||||
FunctionBuildConfig.fusionMode = 3
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BEYOND_VISUAL_RANGE_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
changeValue(it, false)
|
||||
}
|
||||
prevCheckedKeyForFusionMode = KEY_BEYOND_VISUAL_RANGE_MODE
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(KEY_BEYOND_VISUAL_RANGE_MODE)?.also {
|
||||
it.extras.putBoolean("is_checked", true)
|
||||
changeValue(it, true)
|
||||
}
|
||||
}
|
||||
4 -> {
|
||||
//透传模式
|
||||
FunctionBuildConfig.fusionMode = 4
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_TRANSPARENT_TRANSFER_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
changeValue(it, false)
|
||||
}
|
||||
prevCheckedKeyForFusionMode = KEY_TRANSPARENT_TRANSFER_MODE
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(KEY_TRANSPARENT_TRANSFER_MODE)?.also {
|
||||
it.extras.putBoolean("is_checked", true)
|
||||
changeValue(it, true)
|
||||
}
|
||||
}
|
||||
5 -> {
|
||||
//纯路侧模式
|
||||
FunctionBuildConfig.fusionMode = 5
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_PURE_OBU_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
changeValue(it, false)
|
||||
}
|
||||
prevCheckedKeyForFusionMode = KEY_PURE_OBU_MODE
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(KEY_PURE_OBU_MODE)?.also {
|
||||
it.extras.putBoolean("is_checked", true)
|
||||
changeValue(it, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (adasParam.overtakeMaxSpeed > 0) {
|
||||
FunctionBuildConfig.overTakeSpeed = adasParam.overtakeMaxSpeed
|
||||
preferenceScreen.findPreferenceReal<PreferenceWithSpeedSetting>(KEY_OVERTAKE_SPEED_THRESHOLDSS)?.update(listOf("3.0", "12.5", "${FunctionBuildConfig.overTakeSpeed}", "0.5", "m/s"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
@@ -983,7 +1075,7 @@ class OperatePanelLayout : LinearLayout {
|
||||
lifecycleScope.launch {
|
||||
if (carConfigResp.speedLimit > 0) {
|
||||
FunctionBuildConfig.maxSpeedLimit = min(carConfigResp.speedLimit * 3.6, 60.0)
|
||||
preferenceScreen.findPreferenceReal<PreferenceWithSpeedSetting>(KEY_AUTO_PILOT_SPEED_THRESHOLDS)?.update(listOf("0", "60.0", "${FunctionBuildConfig.maxSpeedLimit}", "5"))
|
||||
preferenceScreen.findPreferenceReal<PreferenceWithSpeedSetting>(KEY_AUTO_PILOT_SPEED_THRESHOLDS)?.update(listOf("0", "60.0", "${FunctionBuildConfig.maxSpeedLimit}", "5", "km/h"))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1018,48 +1110,28 @@ class OperatePanelLayout : LinearLayout {
|
||||
return FunctionBuildConfig.isFaultSlowDown
|
||||
}
|
||||
KEY_ALL_MERGE_MODE -> {
|
||||
val checked = FunctionBuildConfig.fusionMode == 1
|
||||
if (checked) {
|
||||
prevCheckedKeyForFusionMode = KEY_ALL_MERGE_MODE
|
||||
}
|
||||
return checked
|
||||
return false
|
||||
}
|
||||
KEY_BLIND_AREA_MODE -> {
|
||||
val checked = FunctionBuildConfig.fusionMode == 2
|
||||
if (checked) {
|
||||
prevCheckedKeyForFusionMode = KEY_BLIND_AREA_MODE
|
||||
}
|
||||
return checked
|
||||
return false
|
||||
}
|
||||
KEY_BEYOND_VISUAL_RANGE_MODE -> {
|
||||
val checked = FunctionBuildConfig.fusionMode == 3
|
||||
if (checked) {
|
||||
prevCheckedKeyForFusionMode = KEY_BEYOND_VISUAL_RANGE_MODE
|
||||
}
|
||||
return checked
|
||||
return false
|
||||
}
|
||||
KEY_TRANSPARENT_TRANSFER_MODE -> {
|
||||
val checked = FunctionBuildConfig.fusionMode == 4
|
||||
if (checked) {
|
||||
prevCheckedKeyForFusionMode = KEY_TRANSPARENT_TRANSFER_MODE
|
||||
}
|
||||
return checked
|
||||
return false
|
||||
}
|
||||
KEY_PURE_OBU_MODE -> {
|
||||
val checked = FunctionBuildConfig.fusionMode == 5
|
||||
if (checked) {
|
||||
prevCheckedKeyForFusionMode = KEY_PURE_OBU_MODE
|
||||
}
|
||||
return checked
|
||||
return false
|
||||
}
|
||||
KEY_AUTO_PILOT_SPEED_THRESHOLDS -> {
|
||||
return listOf("0.0", "60.0", "${FunctionBuildConfig.maxSpeedLimit}", "5.0")
|
||||
return listOf("0.0", "60.0", "${FunctionBuildConfig.maxSpeedLimit}", "5.0", "km/h")
|
||||
}
|
||||
KEY_CHANGE_LANE_SPEED_THRESHOLDS -> {
|
||||
return listOf("3.0", "7.0", "${FunctionBuildConfig.detouringSpeed}", "0.5")
|
||||
return listOf("3.0", "7.0", "${FunctionBuildConfig.detouringSpeed}", "0.5", "m/s")
|
||||
}
|
||||
KEY_OVERTAKE_SPEED_THRESHOLDSS -> {
|
||||
return listOf("3.0", "12.5", "${FunctionBuildConfig.overTakeSpeed}", "0.5")
|
||||
return listOf("3.0", "12.5", "${FunctionBuildConfig.overTakeSpeed}", "0.5", "m/s")
|
||||
}
|
||||
}
|
||||
return super.getDefaultVal(pref)
|
||||
@@ -1181,6 +1253,10 @@ class OperatePanelLayout : LinearLayout {
|
||||
return true
|
||||
}
|
||||
KEY_ALL_MERGE_MODE -> {
|
||||
if (preference.extras.containsKey("is_checked")) {
|
||||
preference.extras.remove("is_checked")
|
||||
return true
|
||||
}
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
if (isChecked) {
|
||||
FunctionBuildConfig.fusionMode = 1
|
||||
@@ -1197,6 +1273,10 @@ class OperatePanelLayout : LinearLayout {
|
||||
return isChecked
|
||||
}
|
||||
KEY_BLIND_AREA_MODE -> {
|
||||
if (preference.extras.containsKey("is_checked")) {
|
||||
preference.extras.remove("is_checked")
|
||||
return true
|
||||
}
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
if (isChecked) {
|
||||
FunctionBuildConfig.fusionMode = 2
|
||||
@@ -1213,15 +1293,19 @@ class OperatePanelLayout : LinearLayout {
|
||||
return isChecked
|
||||
}
|
||||
KEY_BEYOND_VISUAL_RANGE_MODE -> {
|
||||
if (preference.extras.containsKey("is_checked")) {
|
||||
preference.extras.remove("is_checked")
|
||||
return true
|
||||
}
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
if (isChecked) {
|
||||
FunctionBuildConfig.fusionMode = 3
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BEYOND_VISUAL_RANGE_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
prevCheckedKeyForFusionMode = KEY_BEYOND_VISUAL_RANGE_MODE
|
||||
changeValue(it, false)
|
||||
}
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
prevCheckedKeyForFusionMode = KEY_BEYOND_VISUAL_RANGE_MODE
|
||||
changeValue(it, false)
|
||||
}
|
||||
hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode)
|
||||
clickEventAnalytics("融合模式", true)
|
||||
CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode)
|
||||
@@ -1229,15 +1313,19 @@ class OperatePanelLayout : LinearLayout {
|
||||
return isChecked
|
||||
}
|
||||
KEY_TRANSPARENT_TRANSFER_MODE -> {
|
||||
if (preference.extras.containsKey("is_checked")) {
|
||||
preference.extras.remove("is_checked")
|
||||
return true
|
||||
}
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
if (isChecked) {
|
||||
FunctionBuildConfig.fusionMode = 4
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_TRANSPARENT_TRANSFER_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
prevCheckedKeyForFusionMode = KEY_TRANSPARENT_TRANSFER_MODE
|
||||
changeValue(it, false)
|
||||
}
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
prevCheckedKeyForFusionMode = KEY_TRANSPARENT_TRANSFER_MODE
|
||||
changeValue(it, false)
|
||||
}
|
||||
hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode)
|
||||
clickEventAnalytics("融合模式", true)
|
||||
CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode)
|
||||
@@ -1245,6 +1333,10 @@ class OperatePanelLayout : LinearLayout {
|
||||
return isChecked
|
||||
}
|
||||
KEY_PURE_OBU_MODE -> {
|
||||
if (preference.extras.containsKey("is_checked")) {
|
||||
preference.extras.remove("is_checked")
|
||||
return true
|
||||
}
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
if (isChecked) {
|
||||
FunctionBuildConfig.fusionMode = 5
|
||||
|
||||
@@ -42,13 +42,14 @@ class PreferenceWithSpeedSetting : Preference {
|
||||
override fun onBindViewHolder(holder: PreferenceViewHolder) {
|
||||
super.onBindViewHolder(holder)
|
||||
val speedData = mSpeedData ?: return
|
||||
if (speedData !is List<*> || speedData.size != 4) {
|
||||
if (speedData !is List<*> || speedData.size != 5) {
|
||||
throw AssertionError()
|
||||
}
|
||||
val min = (speedData.elementAt(0) as String).toDouble()
|
||||
val max = (speedData.elementAt(1) as String).toDouble()
|
||||
var cur = (speedData.elementAt(2) as String).toDouble()
|
||||
val step = (speedData.elementAt(3) as String).toDouble()
|
||||
val unit = speedData.elementAt(4) as String
|
||||
if (min > max) {
|
||||
throw AssertionError()
|
||||
}
|
||||
@@ -60,6 +61,8 @@ class PreferenceWithSpeedSetting : Preference {
|
||||
}
|
||||
val ll = holder.findViewById(R.id.ll_speed)
|
||||
val btnOk = holder.findViewById(R.id.bt_ok)
|
||||
val speedUnit = holder.findViewById(R.id.tv_speed_unit) as? TextView
|
||||
speedUnit?.text = unit
|
||||
val speedLimit = holder.findViewById(R.id.tv_speed_limit) as? TextView
|
||||
if (cache.containsKey(key)) {
|
||||
cur = max(cur, cache[key] ?: 0.0)
|
||||
@@ -73,7 +76,7 @@ class PreferenceWithSpeedSetting : Preference {
|
||||
minus.onClickWidthDuration(100) {
|
||||
val minusAfter = cur - step
|
||||
if (minusAfter < min) {
|
||||
ToastUtils.showShort("阈值最小可为${BigDecimal.valueOf(min).setScale(1)}km/h")
|
||||
ToastUtils.showShort("阈值最小为${BigDecimal.valueOf(min).setScale(1)}$unit")
|
||||
return@onClickWidthDuration
|
||||
}
|
||||
cur = minusAfter
|
||||
@@ -89,7 +92,7 @@ class PreferenceWithSpeedSetting : Preference {
|
||||
add.onClickWidthDuration(100) {
|
||||
val addAfter = cur + step
|
||||
if (addAfter > max) {
|
||||
ToastUtils.showShort("阈值最大可为${BigDecimal.valueOf(max).setScale(1)}km/h")
|
||||
ToastUtils.showShort("阈值最大为${BigDecimal.valueOf(max).setScale(1)}$unit")
|
||||
return@onClickWidthDuration
|
||||
}
|
||||
holder.itemView.isEnabled = false
|
||||
|
||||
@@ -47,11 +47,12 @@
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_speed_unit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:text="km/h"
|
||||
tools:text="km/h"
|
||||
android:textColor="#ffffff"
|
||||
android:textSize="@dimen/dp_30"
|
||||
tools:ignore="HardcodedText,SpUsage" />
|
||||
|
||||
Reference in New Issue
Block a user