[6.9.0]OTA升级
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user