diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt index c373b2befc..4b7df42948 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt @@ -1511,7 +1511,11 @@ class OperatePanelLayout : LinearLayout { private const val TAG = "VehiclesPreferenceFragmentCompat" private const val IS_CHECKED_DRIVING_STYLE = "is_checked_driving_style" - private const val WHAT_UPDATE_ENABLE = 0x01//更新按钮状态 + private const val WHAT_UPDATE_ENABLE = 0x00//更新按钮状态 + private const val WHAT_SEND_AIP_FUNCTION_TIMEOUT = 0x01//发送AIP命令接收结果超时 发送主动查询AIP命令 + private const val WHAT_SEND_AIP_FUNCTION_TIMEOUT_RESEND_GET = 0x02//发送主动查询AIP命令接收结果超时 + private const val WHAT_SEND_DRIVING_STYLE_TIMEOUT = 0x03//发送驾驶模式命令接收结果超时 发送主动查询驾驶模式命令 + private const val WHAT_SEND_DRIVING_STYLE_TIMEOUT_RESEND_GET = 0x04//发送主动查询驾驶模式命令接收结果超时 private const val KEY_PNC_PARK_INTERSECTION_CAR = "pnc_park_intersection_car" private const val KEY_PNC_PARK_OVERTAKE_CAR = "pnc_park_overtake_car" @@ -1608,7 +1612,7 @@ class OperatePanelLayout : LinearLayout { override fun onPause() { super.onPause() vehIsShow = false - handler.removeMessages(WHAT_UPDATE_ENABLE) + handler.removeCallbacksAndMessages(null) customToast?.cancel() customToast = null } @@ -1616,23 +1620,122 @@ class OperatePanelLayout : LinearLayout { private val handler = object : Handler(Looper.getMainLooper()) { override fun handleMessage(msg: Message) { super.handleMessage(msg) - if (msg.what == WHAT_UPDATE_ENABLE) { - if (this.hasMessages(WHAT_UPDATE_ENABLE)) { - this.removeMessages(WHAT_UPDATE_ENABLE) + when (msg.what) { + WHAT_UPDATE_ENABLE -> { + if (this.hasMessages(WHAT_UPDATE_ENABLE)) { + this.removeMessages(WHAT_UPDATE_ENABLE) + } + setEnableStatus(AppConfigInfo.isConnectAutopilot) + if (AppConfigInfo.isConnectAutopilot) { + updateAutopilotActiveBtnDisableState() + customToast?.cancel() + customToast = null + } else { + showConnectToast() + this.sendEmptyMessageDelayed(WHAT_UPDATE_ENABLE, 5000) + } } - setEnableStatus(AppConfigInfo.isConnectAutopilot) - if (AppConfigInfo.isConnectAutopilot) { - updateAutopilotActiveBtnDisableState() - customToast?.cancel() - customToast = null - } else { - showConnectToast() - this.sendEmptyMessageDelayed(WHAT_UPDATE_ENABLE, 5000) + WHAT_SEND_AIP_FUNCTION_TIMEOUT -> { + removeWhatAipFunction() + CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.ACTIVATE_AIP) + this.sendEmptyMessageDelayed(WHAT_SEND_AIP_FUNCTION_TIMEOUT_RESEND_GET, 1500) } + WHAT_SEND_AIP_FUNCTION_TIMEOUT_RESEND_GET -> { + removeWhatAipFunction() + preferenceScreen.findPreferenceReal( + KEY_AIP_FUNCTION + )?.also { it.isChecked = FunctionBuildConfig.isActivateAip } + } + + WHAT_SEND_DRIVING_STYLE_TIMEOUT -> { + removeWhatDrivingStyle() + CallerAutoPilotControlManager.sendGetParamReq(AdasConstants.MapSystemParamType.DRIVING_STYLE) + this.sendEmptyMessageDelayed(WHAT_SEND_DRIVING_STYLE_TIMEOUT_RESEND_GET, 1500) + } + WHAT_SEND_DRIVING_STYLE_TIMEOUT_RESEND_GET -> { + removeWhatDrivingStyle() + when (FunctionBuildConfig.drivingStyle) { + 0 -> { + //正常模式 + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_NORMAL }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + it.isChecked = false + if (it.extras.containsKey(IS_CHECKED_DRIVING_STYLE)) { + it.extras.remove(IS_CHECKED_DRIVING_STYLE) + } + } + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_NORMAL + preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_NORMAL) + ?.also { + it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) + it.isChecked = true + } + } + + 1 -> { + //安全模式 + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_SAFETY }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + it.isChecked = false + if (it.extras.containsKey(IS_CHECKED_DRIVING_STYLE)) { + it.extras.remove(IS_CHECKED_DRIVING_STYLE) + } + } + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_SAFETY + preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_SAFETY) + ?.also { + it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) + it.isChecked = true + } + } + + 2 -> { + //专业模式 + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_PROFESSIONAL } + ?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + it.isChecked = false + if (it.extras.containsKey(IS_CHECKED_DRIVING_STYLE)) { + it.extras.remove(IS_CHECKED_DRIVING_STYLE) + } + } + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_PROFESSIONAL + preferenceScreen.findPreferenceReal( + KEY_DRIVING_STYLE_PROFESSIONAL + )?.also { + it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) + it.isChecked = true + } + } + } + } + + else -> {} } } } + private fun removeWhatAipFunction() { + if (handler.hasMessages(WHAT_SEND_AIP_FUNCTION_TIMEOUT)) { + handler.removeMessages(WHAT_SEND_AIP_FUNCTION_TIMEOUT) + } + if (handler.hasMessages(WHAT_SEND_AIP_FUNCTION_TIMEOUT_RESEND_GET)) { + handler.removeMessages(WHAT_SEND_AIP_FUNCTION_TIMEOUT_RESEND_GET) + } + } + + private fun removeWhatDrivingStyle() { + if (handler.hasMessages(WHAT_SEND_DRIVING_STYLE_TIMEOUT)) { + handler.removeMessages(WHAT_SEND_DRIVING_STYLE_TIMEOUT) + } + if (handler.hasMessages(WHAT_SEND_DRIVING_STYLE_TIMEOUT_RESEND_GET)) { + handler.removeMessages(WHAT_SEND_DRIVING_STYLE_TIMEOUT_RESEND_GET) + } + } + private fun showConnectToast() { try { AppStateManager.currentActivity()?.let { @@ -1769,7 +1872,10 @@ class OperatePanelLayout : LinearLayout { override fun onGetParamResp(adasParam: AdasParam) { super.onGetParamResp(adasParam) - Logger.d(TAG, "-- onGetParamResp --: fusion-mode:${adasParam.fusionMode}, over-take-speed:${adasParam.overtakeMaxSpeed} ") + Logger.d( + TAG, + "-- onGetParamResp --: adasParam.fusionMode:${adasParam.fusionMode}, adasParam.overtakeMaxSpeed:${adasParam.overtakeMaxSpeed}, adasParam.activateAip:${adasParam.activateAip}, adasParam.drivingStyle:${adasParam.drivingStyle}" + ) lifecycleScope.launch { when(adasParam.fusionMode) { 1 -> { @@ -1842,59 +1948,61 @@ class OperatePanelLayout : LinearLayout { FunctionBuildConfig.overTakeSpeed = adasParam.overtakeMaxSpeed preferenceScreen.findPreferenceReal(KEY_OVERTAKE_SPEED_THRESHOLDSS)?.update(listOf("3.0", "12.5", "${FunctionBuildConfig.overTakeSpeed}", "0.5", "m/s")) } - CallerLogger.i( - "VEH onGetParamResp", - "adasParam.activateAip=${adasParam.activateAip} " - ) + //AIP功能 if (adasParam.activateAip != -1) { - ThreadUtils.runOnUiThread { - preferenceScreen.findPreferenceReal( - KEY_AIP_FUNCTION - )?.also { changeValue(it, adasParam.activateAip == 1) } - } + removeWhatAipFunction() + preferenceScreen.findPreferenceReal( + KEY_AIP_FUNCTION + )?.also { changeValue(it, adasParam.activateAip > 0) } } //驾驶模式 - when(adasParam.drivingStyle) { - 0 -> { - //正常模式 - prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_NORMAL }?.let { - preferenceScreen.findPreferenceReal(it) - }?.also { - changeValue(it, false) + if (adasParam.drivingStyle != -1) { + removeWhatDrivingStyle() + when (adasParam.drivingStyle) { + 0 -> { + //正常模式 + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_NORMAL }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + changeValue(it, false) + } + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_NORMAL + preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_NORMAL)?.also { + it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) + changeValue(it, true) + } } - prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_NORMAL - preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_NORMAL)?.also { - it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) - changeValue(it, true) - } - } - 1 -> { - //安全模式 - prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_SAFETY }?.let { - preferenceScreen.findPreferenceReal(it) - }?.also { - changeValue(it, false) - } - prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_SAFETY - preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_SAFETY)?.also { - it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) - changeValue(it, true) - } - } - 2 -> { - //专业模式 - prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_PROFESSIONAL}?.let { - preferenceScreen.findPreferenceReal(it) - }?.also { - changeValue(it, false) - } - prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_PROFESSIONAL - preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_PROFESSIONAL)?.also { - it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) - changeValue(it, true) - } - } + 1 -> { + //安全模式 + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_SAFETY }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + changeValue(it, false) + } + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_SAFETY + preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_SAFETY) + ?.also { + it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) + changeValue(it, true) + } + } + + 2 -> { + //专业模式 + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_PROFESSIONAL } + ?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + changeValue(it, false) + } + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_PROFESSIONAL + preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_PROFESSIONAL)?.also { + it.extras.putBoolean(IS_CHECKED_DRIVING_STYLE, true) + changeValue(it, true) + } + } + } } } } @@ -1971,13 +2079,25 @@ class OperatePanelLayout : LinearLayout { return FunctionBuildConfig.isActivateAip } KEY_DRIVING_STYLE_NORMAL -> { - return FunctionBuildConfig.drivingStyle == 0 + val isNormal = FunctionBuildConfig.drivingStyle == 0 + if (isNormal) { + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_NORMAL + } + return isNormal } KEY_DRIVING_STYLE_SAFETY -> { - return FunctionBuildConfig.drivingStyle == 1 + val isSafety = FunctionBuildConfig.drivingStyle == 1 + if (isSafety) { + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_SAFETY + } + return isSafety } KEY_DRIVING_STYLE_PROFESSIONAL -> { - return FunctionBuildConfig.drivingStyle == 2 + val isProfessional = FunctionBuildConfig.drivingStyle == 2 + if (isProfessional) { + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_PROFESSIONAL + } + return isProfessional } KEY_AUTO_PILOT_SPEED_THRESHOLDS -> { return listOf("0.0", "60.0", "${FunctionBuildConfig.maxSpeedLimit}", "5.0", "km/h") @@ -2210,8 +2330,10 @@ class OperatePanelLayout : LinearLayout { return isChecked } KEY_AIP_FUNCTION -> { + removeWhatAipFunction() val isChecked = newValue as? Boolean ?: false CallerAutoPilotControlManager.sendActivateAip(isChecked) + handler.sendEmptyMessageDelayed(WHAT_SEND_AIP_FUNCTION_TIMEOUT, 1500) hmiAction("SOP AIP功能, ", isChecked) clickEventAnalytics("AIP功能", isChecked) return true @@ -2221,17 +2343,20 @@ class OperatePanelLayout : LinearLayout { preference.extras.remove(IS_CHECKED_DRIVING_STYLE) return false } + removeWhatDrivingStyle() val isChecked = newValue as? Boolean ?: false if (isChecked) { - prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_NORMAL }?.let { - preferenceScreen.findPreferenceReal(it) - }?.also { + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_NORMAL } + ?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { changeValue(it, false) } prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_NORMAL + CallerAutoPilotControlManager.sendDrivingStyle(0) + handler.sendEmptyMessageDelayed(WHAT_SEND_DRIVING_STYLE_TIMEOUT, 1500) hmiAction("SOP 驾驶模式-正常模式, ", 0) clickEventAnalytics("驾驶模式-正常模式", true) - CallerAutoPilotControlManager.sendDrivingStyle(0) } return isChecked } @@ -2240,38 +2365,44 @@ class OperatePanelLayout : LinearLayout { preference.extras.remove(IS_CHECKED_DRIVING_STYLE) return false } + removeWhatDrivingStyle() val isChecked = newValue as? Boolean ?: false if (isChecked) { - prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_SAFETY }?.let { - preferenceScreen.findPreferenceReal(it) - }?.also { + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_SAFETY } + ?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { changeValue(it, false) } prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_SAFETY + CallerAutoPilotControlManager.sendDrivingStyle(1) + handler.sendEmptyMessageDelayed(WHAT_SEND_DRIVING_STYLE_TIMEOUT, 1500) hmiAction("SOP 驾驶模式-安全模式, ", 1) clickEventAnalytics("驾驶模式-安全模式", true) - CallerAutoPilotControlManager.sendDrivingStyle(1) } return isChecked } KEY_DRIVING_STYLE_PROFESSIONAL -> { - if (preference.extras.containsKey(IS_CHECKED_DRIVING_STYLE)) { - preference.extras.remove(IS_CHECKED_DRIVING_STYLE) - return false - } - val isChecked = newValue as? Boolean ?: false - if (isChecked) { - prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_PROFESSIONAL }?.let { - preferenceScreen.findPreferenceReal(it) - }?.also { - changeValue(it, false) + if (preference.extras.containsKey(IS_CHECKED_DRIVING_STYLE)) { + preference.extras.remove(IS_CHECKED_DRIVING_STYLE) + return false } - prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_PROFESSIONAL - hmiAction("SOP 驾驶模式-专业模式, ", 2) - clickEventAnalytics("驾驶模式-专业模式", true) - CallerAutoPilotControlManager.sendDrivingStyle(2) - } - return isChecked + removeWhatDrivingStyle() + val isChecked = newValue as? Boolean ?: false + if (isChecked) { + prevCheckedKeyForDrivingStyle?.takeIf { it != KEY_DRIVING_STYLE_PROFESSIONAL } + ?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + changeValue(it, false) + } + prevCheckedKeyForDrivingStyle = KEY_DRIVING_STYLE_PROFESSIONAL + CallerAutoPilotControlManager.sendDrivingStyle(2) + handler.sendEmptyMessageDelayed(WHAT_SEND_DRIVING_STYLE_TIMEOUT, 1500) + hmiAction("SOP 驾驶模式-专业模式, ", 2) + clickEventAnalytics("驾驶模式-专业模式", true) + } + return isChecked } }