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){}
}