[6.9.0]OTA升级

This commit is contained in:
xuxinchao
2024-12-12 19:14:55 +08:00
parent 9d00f79ad9
commit 96a31f2981
16 changed files with 314 additions and 103 deletions

View File

@@ -7,5 +7,13 @@ object OTAUpgradeConfig {
@JvmField
var otaToken: String = ""
//冷启动是否完成(包括成功/失败),默认未完成
@JvmField
var coldStartCompleted: Boolean = false
//是否处于自驾状态(包含自驾和平行驾驶),默认不处于自驾状态
@JvmField
var autopilotStatus: Boolean = false
//是否有订单 true有订单 false没有订单
@JvmField
var inOrder: Boolean = false
}

View File

@@ -2,6 +2,7 @@ package com.zhjt.mogo_core_function_devatools.ota
import android.content.Context
import android.util.Log
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.deva.ota.OtaUpgradeInfo
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.datacenter.IDataCenterBizListener
@@ -11,6 +12,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizListener
import com.mogo.eagle.core.function.call.devatools.CallerOTAManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import org.json.JSONArray
import org.json.JSONObject
import system_master.SsmInfo
@@ -23,11 +26,13 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
const val TAG = "OTAUpgradeManager"
fun init(context: Context){
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerDataCenterBizListener.addListener(TAG,this)
CallerOTAManager.addListener(TAG,this)
//查询OTA状态
CallerAutoPilotControlManager.sendSsmFuncOtaStatusQuery(OTAUpgradeConfig.otaToken)
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerDataCenterBizListener.addListener(TAG,this)
CallerOTAManager.addListener(TAG,this)
//查询OTA状态
CallerAutoPilotControlManager.sendSsmFuncOtaStatusQuery(OTAUpgradeConfig.otaToken)
}
}
/**
@@ -40,7 +45,15 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
*/
override fun onAutopilotStatusResponse(state: Int) {
super.onAutopilotStatusResponse(state)
if(state == 2 || state == 7){
if(!OTAUpgradeConfig.autopilotStatus){
OTAUpgradeConfig.autopilotStatus = true
}
}else{
if(OTAUpgradeConfig.autopilotStatus){
OTAUpgradeConfig.autopilotStatus = false
}
}
}
/**
@@ -49,7 +62,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
*/
override fun invokeOrderStatus(inOrder: Boolean) {
super.invokeOrderStatus(inOrder)
OTAUpgradeConfig.inOrder = inOrder
}
/**
@@ -63,8 +76,20 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
if(request.otaToken.isNotEmpty()){
if(OTAUpgradeConfig.otaToken != request.otaToken){
OTAUpgradeConfig.otaToken = request.otaToken
//触发升级提示
CallerHmiManager.showOTAUpgradeDialog()
//冷启动已完成(包括成功/失败),且驾驶状态为非自驾状态,且当前无订单进行强提示,否则为弱提示
if(OTAUpgradeConfig.coldStartCompleted && !OTAUpgradeConfig.autopilotStatus
&& !OTAUpgradeConfig.inOrder){
//触发强提示升级
CallerHmiManager.showOTAUpgradeDialog(true)
}else{
//触发弱提示升级
//冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级,
// 并toast提示“收到车辆部署任务请在车辆空闲时发起升级”
CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.DELAY)
ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级")
//展示OTA升级提示
CallerHmiManager.showOTAUpgradeTipView(true)
}
}else{
//展示OTA升级提示
CallerHmiManager.showOTAUpgradeTipView(true)
@@ -141,7 +166,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
if(OTAUpgradeConfig.otaToken != status.otaInfo.otaToken){
OTAUpgradeConfig.otaToken = status.otaInfo.otaToken
//触发升级提示
CallerHmiManager.showOTAUpgradeDialog()
CallerHmiManager.showOTAUpgradeDialog(true)
}else{
//展示OTA升级提示
CallerHmiManager.showOTAUpgradeTipView(true)
@@ -155,6 +180,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
val otaUpgradeList = ArrayList<OtaUpgradeInfo>()
val productArray = JSONArray(status.otaInfo.productName)
var upgradeComplete = true
var upgradeResult = true //升级结果 true代表成功 false代表失败 默认为升级成功
if(productArray.length() > 0){
for(index in 0 until productArray.length()){
val productInfo = productArray[index] as JSONObject
@@ -188,14 +214,21 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
if(productStatus == 0 || productStatus == 1 || productStatus == 2){
upgradeComplete = false
}
if(productStatus == 4){
upgradeResult = false
}
val otaUpgradeInfo = OtaUpgradeInfo(token, productStatus,failReason,upgradeReason,
taskId,taskItemId,otaType,productName,needRestart,isDelay,curSize,totalSize)
otaUpgradeList.add(otaUpgradeInfo)
}
CallerHmiManager.showOTADownloadStatusDialog(otaUpgradeList)
if(upgradeComplete){
OTAUpgradeConfig.otaToken = ""
CallerHmiManager.showOTAResultDialog(upgradeResult)
}else{
//通知关闭提示升级窗口存在域控也在进行5min倒计时与app存在时间差域控会更早完成倒计时触发升级
// 此时通知app开始升级app收到后即使未完成倒计时也关闭提示弹窗开始展示下载进展
CallerHmiManager.showOTAUpgradeDialog(false)
CallerHmiManager.showOTADownloadStatusDialog(otaUpgradeList)
}
}

View File

@@ -2,7 +2,28 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_margin="@dimen/dp_10">
<TextView
android:id="@+id/tvProductName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:textColor="@color/white"
android:textSize="@dimen/sp_30"
/>
<TextView
android:id="@+id/tvDownloadProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:textColor="@color/white"
android:textSize="@dimen/sp_30"
/>
<ProgressBar
android:id="@+id/pbDownloadProgress"
@@ -10,18 +31,8 @@
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvProductName"
style="?android:attr/progressBarStyleHorizontal"
/>
<TextView
android:id="@+id/tvDownloadStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/pbDownloadProgress"
android:textSize="@dimen/sp_30"
/>
</androidx.constraintlayout.widget.ConstraintLayout>