diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt
index 0976b77e33..199f3f05e4 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt
@@ -56,8 +56,14 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
}else{
Log.i(TAG,"20分钟没有收到OTA升级推送置为失败")
CallerHmiManager.showOTADownloadStatusDialog(false, emptyList())
- CallerHmiManager.showOTAResultDialog(false)
+ CallerHmiManager.showOTAResultDialog(isShow = true, result = false)
}
+ }else if(msg.what == 2){
+ Log.i(TAG,"司机屏弹窗提示用车人执行车辆下电操作")
+ //如果OTA升级弹窗没有点击关闭,则自动关闭
+ CallerHmiManager.showOTAResultDialog(isShow = false, result = true)
+ //司机屏弹窗提示用车人执行车辆下电操作
+ CallerHmiManager.showOTAPowerOffFinishDialog()
}
}
}
@@ -126,7 +132,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
val token = productInfo.optString("token")
val productStatus = productInfo.optInt("status")
val failReason = productInfo.optString("fail_reason")
- val upgradeReason = productInfo.optString("upgrade_reason")
+ val upgradeReason = productInfo.optString("upgrade_reason")//升级原因
val taskId = productInfo.optInt("task_id")
val taskItemId = productInfo.optInt("task_item_id")
val otaType = productInfo.optInt("ota_type")
@@ -136,6 +142,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
val curSize = productInfo.optDouble("cur_size")
val totalSize = productInfo.optDouble("total_size")
val taskNumber = productInfo.optInt("task_number")
+ val leftTime = productInfo.optInt("left_time") //剩余时间,单位秒
Log.i(TAG, "index=$index")
Log.i(TAG, "token=$token")
@@ -150,7 +157,8 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
Log.i(TAG, "is_delay=$isDelay")
Log.i(TAG, "cur_size=$curSize")
Log.i(TAG, "total_size=$totalSize")
- Log.i(TAG,"taskNumber=$taskNumber")
+ Log.i(TAG,"task_number=$taskNumber")
+ Log.i(TAG,"left_time=$leftTime")
if(index == 0){
//是否需要触发提示升级只判断第一个任务
@@ -251,7 +259,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
val token = productInfo.optString("token")
val productStatus = productInfo.optInt("status")
val failReason = productInfo.optString("fail_reason")
- val upgradeReason = productInfo.optString("upgrade_reason")
+ val upgradeReason = productInfo.optString("upgrade_reason")//升级原因
val taskId = productInfo.optInt("task_id")
val taskItemId = productInfo.optInt("task_item_id")
val otaType = productInfo.optInt("ota_type")
@@ -261,6 +269,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
val curSize = productInfo.optDouble("cur_size")
val totalSize = productInfo.optDouble("total_size")
val taskNumber = productInfo.optInt("task_number")
+ val leftTime = productInfo.optInt("left_time")//剩余时间,单位秒
Log.i(TAG, "index=$index")
Log.i(TAG, "token=$token")
@@ -276,6 +285,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
Log.i(TAG, "cur_size=$curSize")
Log.i(TAG, "total_size=$totalSize")
Log.i(TAG,"task_number=$taskNumber")
+ Log.i(TAG,"left_time=$leftTime")
if(index == 0){
//是否需要触发提示升级只判断第一个任务
@@ -334,7 +344,13 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
OTAUpgradeConfig.isQuery = false
}else{
CallerHmiManager.showOTADownloadStatusDialog(false,otaUpgradeList)
- CallerHmiManager.showOTAResultDialog(upgradeResult)
+ CallerHmiManager.showOTAResultDialog(true,upgradeResult)
+ //升级成功,自动执行优雅停服
+ if(upgradeResult){
+ CallerAutoPilotControlManager.sendIpcPowerOff()
+ //当优雅停服完成、需要车辆下电的时候(比如当前是停服触发60s后),车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作
+ handler.sendEmptyMessageDelayed(2,60000)
+ }
}
CallerOTAManager.invokeOtaDownloadStatus(false)
}else{
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt
index ba66a8430a..b0573865c1 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt
@@ -61,6 +61,7 @@ import com.mogo.eagle.core.function.hmi.ui.setting.ToolsView.Companion.toolsView
import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog
import com.mogo.eagle.core.function.hmi.ui.tools.ModifyBindingCarDialog
import com.mogo.eagle.core.function.hmi.ui.tools.OTADownloadStatusDialog
+import com.mogo.eagle.core.function.hmi.ui.tools.OTAPowerOffFinishDialog
import com.mogo.eagle.core.function.hmi.ui.tools.OTAUpgradeDialog
import com.mogo.eagle.core.function.hmi.ui.tools.OTAUpgradeResultDialog
import com.mogo.eagle.core.function.hmi.ui.tools.ToBindingCarDialog
@@ -667,6 +668,7 @@ class MoGoHmiProvider : IMoGoHmiProvider {
private var otaUpgradeDialog: OTAUpgradeDialog ?= null
private var otaDownloadStatusDialog: OTADownloadStatusDialog ?= null
private var otaUpgradeResultDialog: OTAUpgradeResultDialog ?= null
+ private var otaPowerOffFinishDialog: OTAPowerOffFinishDialog ?= null
/**
* 展示OTA升级弹窗
@@ -720,18 +722,42 @@ class MoGoHmiProvider : IMoGoHmiProvider {
/**
* 展示OTA升级结果弹窗
+ * @param isShow 是否展示
* @param result true升级成功 false升级失败
*/
- override fun showOTAResultDialog(result: Boolean) {
+ override fun showOTAResultDialog(isShow: Boolean,result: Boolean) {
ThreadUtils.runOnUiThread{
- context?.let{
- if(otaUpgradeResultDialog == null){
- otaUpgradeResultDialog = OTAUpgradeResultDialog(it)
+ if(isShow){
+ context?.let{
+ if(otaUpgradeResultDialog == null){
+ otaUpgradeResultDialog = OTAUpgradeResultDialog(it)
+ }
+ if(otaUpgradeResultDialog?.isShowing == false){
+ otaUpgradeResultDialog?.show()
+ }
+ otaUpgradeResultDialog?.showResult(result)
}
- if(otaUpgradeResultDialog?.isShowing == false){
- otaUpgradeResultDialog?.show()
+ }else{
+ if(otaUpgradeResultDialog?.isShowing == true){
+ otaUpgradeResultDialog?.dismiss()
+ }
+ }
+
+ }
+ }
+
+ /**
+ * OTA升级完成且优雅停服完成、需要车辆下电的时候车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作
+ */
+ override fun showOTAPowerOffFinishDialog() {
+ ThreadUtils.runOnUiThread {
+ context?.let {
+ if(otaPowerOffFinishDialog == null){
+ otaPowerOffFinishDialog = OTAPowerOffFinishDialog(it)
+ }
+ if(otaPowerOffFinishDialog?.isShowing == false){
+ otaPowerOffFinishDialog?.show()
}
- otaUpgradeResultDialog?.showResult(result)
}
}
}
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAPowerOffFinishDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAPowerOffFinishDialog.kt
new file mode 100644
index 0000000000..8794be964a
--- /dev/null
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAPowerOffFinishDialog.kt
@@ -0,0 +1,31 @@
+package com.mogo.eagle.core.function.hmi.ui.tools
+
+import android.content.Context
+import androidx.lifecycle.LifecycleObserver
+import com.mogo.commons.voice.AIAssist
+import com.mogo.eagle.core.function.hmi.R
+import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
+import kotlinx.android.synthetic.main.dialog_ota_power_off_finish.tvPowerOffClose
+
+/**
+ * OTA升级完成且优雅停服完成、需要车辆下电的时候车端告知鹰眼,
+ * 司机屏弹窗提示用车人执行车辆下电操作
+ */
+class OTAPowerOffFinishDialog(context: Context) :
+ BaseFloatDialog(context,TAG), LifecycleObserver {
+
+ companion object {
+ private const val TAG = "OTAPowerOffFinishDialog"
+ }
+
+ init{
+ setContentView(R.layout.dialog_ota_power_off_finish)
+ setCanceledOnTouchOutside(false)
+ tvPowerOffClose.setOnClickListener {
+ dismiss()
+ }
+ //语音提示下电重启
+ AIAssist.getInstance(context).speakTTSVoice("优雅停服完成,请操作车辆下电重启")
+ }
+
+}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeResultDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeResultDialog.kt
index dc34c1bdc2..bcebb8df8f 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeResultDialog.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeResultDialog.kt
@@ -11,6 +11,8 @@ import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
import com.mogo.eagle.core.utilcode.util.ResourceUtils
+import com.mogo.eagle.core.utilcode.util.TimeUtils
+import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinSecondFormat
import kotlinx.android.synthetic.main.dialog_ota_upgrade_result.ivUpgradeResult
import kotlinx.android.synthetic.main.dialog_ota_upgrade_result.tvResultClose
import kotlinx.android.synthetic.main.dialog_ota_upgrade_result.tvResultContent
@@ -43,16 +45,18 @@ class OTAUpgradeResultDialog(context: Context) :
//升级成功
ivUpgradeResult.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_ota_upgrade_success))
tvResultContent.text = context.resources.getString(R.string.ota_result_success)
- tvResultTip.text = context.resources.getString(R.string.ota_result_success_tip)
+ tvResultTip.text =
+ String.format(context.resources.getString(R.string.ota_result_success_tip),
+ TimeUtils.millis2String(System.currentTimeMillis()+60000,getHourMinSecondFormat()))
//消息盒子和语音提示升级成功结果
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.OTA,
OTAMsg(
- "成功", "车辆部署任务执行结果", "车辆部署任务执行成功,请重启车辆")
+ "成功", "车辆部署任务执行结果", "任务下载完成,一分钟后操作车辆下电重启")
)
)
- AIAssist.getInstance(context).speakTTSVoice("车辆部署任务执行成功,请重启车辆")
+ AIAssist.getInstance(context).speakTTSVoice("任务下载完成,一分钟后操作车辆下电重启")
}else{
//升级失败
ivUpgradeResult.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_ota_upgrade_fail))
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_power_off_finish.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_power_off_finish.xml
new file mode 100644
index 0000000000..d3833005b0
--- /dev/null
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_power_off_finish.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml
index e2a7d5ac30..15413fdf70 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml
@@ -267,11 +267,13 @@
稍后升级
资源下载中
OTA升级结果图片示例
- ⻋辆部署任务执⾏成功
+ ⻋辆部署任务下载完成
⻋辆部署任务执⾏失败
- 请重启⻋辆
+ 已自动发起优雅停服,%s后可操作车辆下电重启
请联系管理员
关闭
+ 车辆优雅停服完成
+ 请操作车辆下电重启
FSM美化模式状态下异常标识
diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt
index 1a2a59ded4..93e84c86f8 100644
--- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt
+++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt
@@ -337,9 +337,15 @@ interface IMoGoHmiProvider :IProvider{
/**
* 展示OTA升级结果弹窗
+ * @param isShow 是否展示
* @param result true升级成功 false升级失败
*/
- fun showOTAResultDialog(result: Boolean)
+ fun showOTAResultDialog(isShow: Boolean,result: Boolean)
+
+ /**
+ * OTA升级完成且优雅停服完成、需要车辆下电的时候车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作
+ */
+ fun showOTAPowerOffFinishDialog()
/**
* 展示数据落盘拷贝成功对话框
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
index 15376239ce..c03078f0af 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
@@ -490,10 +490,18 @@ object CallerHmiManager {
/**
* 展示OTA升级结果弹窗
+ * @param isShow 是否展示
* @param result true升级成功 false升级失败
*/
- fun showOTAResultDialog(result: Boolean){
- hmiProviderApi?.showOTAResultDialog(result)
+ fun showOTAResultDialog(isShow: Boolean,result: Boolean){
+ hmiProviderApi?.showOTAResultDialog(isShow,result)
+ }
+
+ /**
+ * OTA升级完成且优雅停服完成、需要车辆下电的时候车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作
+ */
+ fun showOTAPowerOffFinishDialog(){
+ hmiProviderApi?.showOTAPowerOffFinishDialog()
}
/**