Skip to main content

OTA升级管理器

class OTAUpgradeManger

描述: 升级管理类

    class OTAUpgradeManger : IOTAUpgradeManager {

companion object {

private const val CLASS_NAME = "[OTAUpgradeManger]"
const val TAG = Constants.MSDK_UPGRADE

//重试次数
private const val RETRY_MAX_COUNTS = 5

//设备信息最大数量
private const val GET_DEVICE_INFO_MAX_COUNTS = 20

fun getInstance(): IOTAUpgradeManager {
return Holder.instance
}
}

private object Holder {
val instance = OTAUpgradeManger()
}

/**
* app type
*/
var mAppType: String = "Enterprise"

//APP 升级对象
private var appUpgradeBean: CheckResponseBean? = null

// 设备升级对象
private val deviceUpdateBeanMap = HashMap<String, CheckResponseBean.Data>()

//监听器
private val mListeners = CopyOnWriteArrayList<UpgradeVersionListener>()

private val mHandler = Handler(Looper.getMainLooper())

//用于升级状态上报给后台
private var cacheRegisterProductBean: RegisterProsRequestBean? = null


private val isDetectingApp = AtomicReference(false)
private val isDetectingDevice = AtomicReference(false)
}

method addUpgradeVersionListener

fun addUpgradeVersionListener(l: OTAUpgradeManger.UpgradeVersionListener)

描述: 注册升级相关监听器

输入参数: l: 监听器OTAUpgradeManger.UpgradeVersionListener

输出参数: 无。

相关参数: OTAUpgradeManger.UpgradeVersionListener。

method removeUpgradeVersionListener

fun removeUpgradeVersionListener(l: OTAUpgradeManger.UpgradeVersionListener)

描述: 取消注册升级相关监听器

输入参数: l: 监听器OTAUpgradeManger.UpgradeVersionListener

输出参数: 无。

相关参数: 没有OTAUpgradeManger.UpgradeVersionListener。

method getAppType

fun getAppType():String

描述: 获取App类型

输入参数: 无。

输出参数: 应用类型[String]

相关参数: String

method detectAppUpdateInfo

fun detectAppUpdateInfo(manual: Boolean? = false)

描述: 检查APP升级信息

输入参数: manual:是否用户手动触发[Boolean]

输出参数: 无。

相关参数: Boolean

method detectDeviceUpdateInfo

fun detectDeviceUpdateInfo()

描述: 检查飞机。遥控器升级信息

输入参数: 无。

输出参数: 无。

相关参数: 无。

method isAppNeedUpdate

fun isAppNeedUpdate(): Boolean

描述: APP是否要升级

输入参数: 无。

输出参数: 是否需要升级[Boolean]

相关参数: Boolean

method isRCNeedUpdate

fun isRCNeedUpdate(): Boolean

描述: 遥控器是否要升级

输入参数: 无。

输出参数: 是否需要升级[Boolean]

相关参数: Boolean

method isDroneNeedUpdate

fun isDroneNeedUpdate(deviceId:Int? = null):Boolean

描述: 指定或有飞机升级

输入参数: deviceId:设备Id[Int]

输出参数: 是否需要升级[Boolean]

相关参数: Boolean

method getAppUpdateInfo

fun getAppUpdateInfo(): CheckResponseBean?

描述: 获取APP的升级信息

输入参数: 无。

输出参数: 应用升级信息[CheckResponseBean]

相关参数: CheckResponseBean

method getDeviceUpdateInfo

 fun getDeviceUpdateInfo(): HashMap<String, CheckResponseBean.Data>

描述: 获取遥控器和飞机的升级信息

输入参数: 无。

输出参数: 遥控器和飞机的升级信息[HashMap]

相关参数: HashMap,CheckResponseBean

method switchUpgradeMode

fun switchUpgradeMode(enter: Boolean)

描述: 开启或者关闭飞机升级模式,针对飞机升级,提升上传OTA文件带宽,通过UpgradeVersionListener 回调切换是否成功

输入参数: enter: 开或者关

输出参数: 无。

相关参数: 没有任何。

method downloadFile

    fun downloadFile(url: String, fileName: String, downloadCallback: FileTransmitListener<File>): S3DownloadInterceptor 

描述: 从 url 下载文件

输入参数: url:该特定文件的 url fileName:要下载的文件名 downloadCallback:通过对象下载回调

输出参数: 下载异常返回

相关参数: 没有任何。

method downloadAppFile

    fun downloadAppFile(url: String, fileName: String, downloadCallback: FileTransmitListener<File>): S3DownloadInterceptor 

描述: 从 url 下载应用程序文件

输入参数: url:该特定文件的 url fileName:要下载的文件名 downloadCallback:通过对象下载回调

输出参数: 无。

相关参数: 没有任何。

method reportUpgrade

    fun reportUpgrade(
status: UpgradeResultEnum,
upgradeTaskId: Int,
sn: String,
description: String? = "",
)

描述: 上报服务器升级状态

输入参数: status:升级状态[UpgradeResultEnum] upgradeTaskId:升级任务Id[Int] sn:SN码[String] description:描述[String]

输出参数: 无。

相关参数: 无。

method registerRemoterAutoUpgradeListener

fun registerRemoterAutoUpgradeListener(listener: RemoterAutoUpgradeWrapper.RemoterAutoUpgradeListener)

描述: 监听遥控器自升级状态,主要是通过插入SDCard升级离线包

输入参数: listener: 状态接口 RemoterAutoUpgradeWrapper.RemoterAutoUpgradeListener

输出参数: 无。

相关参数: RemoterAutoUpgradeWrapper.RemoterAutoUpgradeListener。

method unRegisterRemoterAutoUpgradeListener

fun unRegisterRemoterAutoUpgradeListener()

描述: 取消遥控器自升级监听

输入参数:

输出参数: 无。

相关参数: 没有任何。

method registerDeviceRecoveryListener

fun registerDeviceRecoveryListener(listener: DeviceRecoveryWrapper.DeviceRecoveryListener)

描述: 无人机各模块软件版本一致性校验监听

输入参数:

listener:监听器DeviceRecoveryWrapper.DeviceRecoveryListener,通过监听器回调判断版本是否一致,版本恢复进度及结果

输出参数: 无。

相关参数: DeviceRecoveryWrapper.DeviceRecoveryListener。

method unRegisterDeviceRecoveryListener

fun unRegisterDeviceRecoveryListener()

描述: 取消无人机各模块软件版本一致性校验监听

输入参数:

输出参数:

相关参数:

method startDroneComponentRecover

fun startDroneComponentRecover(deviceId:Int)

描述: 开始模块软件版本恢复,通过DeviceRecoveryListener监听恢复状态

输入参数:

deviceId:设备的deviceId,通过设备方法getDeviceNumber()获取

输出参数:

相关参数:

        //升级版本信息上报
interface UpgradeVersionListener {

/**
* APP升级通知
*/
fun onAppUpgrade(manual:Boolean, needUpgrade: Boolean, bean: CheckResponseBean?){}

/**
* 设备升级通知
*/
fun onDeviceUpgrade(beanMap: HashMap<String, CheckResponseBean.Data>){}

/**
* 进入升级模式是否成功
*/
fun onEnterUpgradeMode(success: Boolean){}

/**
* 退出升级模式是否成功
*/
fun onExitUpgradeMode(success: Boolean){}
}