设备管理类
class DeviceManager
描述: 设备管理
class DeviceManager private constructor() : IDeviceManager, OnDeviceChangedListener,
IProtoConnectListener {
companion object {
private const val CLASS_NAME = "[DeviceManager]"
private const val TAG = Constants.MSDK_PROTO_TAG
/**
* 此处定义的最大重试连接数
*/
private const val MAX_RETRY_COUNT = 3
/**
* 设备管理类
*/
private var deviceManager: IDeviceManager = DeviceManager()
/**
* 断联时间间隔
*/
var mDisconnectTimeInterval = 0L
/**
* 对频完成时间(单位:ms)
*/
var costTime = 0
/**
* 具有上下文的已定义设备管理器类的初始化方法
* @param context 活动上下文
*/
fun init(context: Context) {
deviceManager.init(context)
}
/**
* 获取当前设备管理器类对象
* @return 设备管理器对象
*/
fun getDeviceManager(): IDeviceManager {
return deviceManager
}
/**
* 获取与远程控制器连接的无人机设备数据对象类
* @return 从无人机连接第一台设备
*/
fun getFirstDroneDevice(): IAutelDroneDevice? {
return deviceManager.getFirstDroneDevice()
}
}
/**
* 主线程的协程范围
*/
private val coroutineScope = CoroutineScope(Dispatchers.Main)
/**
* 可用的无人机监听器列表
*/
private var droneListenerList = mutableListOf<IAutelDroneListener>()
/**
* 可用无人机列表
*/
private var droneDeviceList = mutableListOf<IAutelDroneDevice>()
/**
* 可用遥控器列表
*/
private var remoteDeviceList = mutableListOf<IAutelRemoteDevice>()
/**
* 可用的远程升级设备列表
*/
private var remoteUpgradeDeviceList = mutableListOf<IBaseDevice>()
/**
* 可用的无人机升级设备列表
*/
private var droneUpgradeDeviceList = mutableListOf<IBaseDevice>()
/**
* 可用嵌套设备列表
*/
private var nestDeviceList = mutableListOf<IAutelNestDevice>()
/**
* 此处定义的开关模式设备列表
*/
private var switchModeDeviceList = mutableListOf<IBaseDevice>()
/**
* 定义是否启动状态
*/
private var isInit = false
private val RETRY_MAX_COUNTS = 10
/**
* 飞机断联的时间
*/
private var mDisconnectTime = 0L
/**
* 重试次数,只有获取系统初始化数据成功,才通知app已连接
*/
private var retryCount = MAX_RETRY_COUNT
/**
* 上下文对象
*/
private var mContext: Context? = null
}
method createRemoterDevice
private fun createRemoterDevice()
描述: 添加遥控器设备
输入参数: 无。
输出参数: 无。
相关参数: 无。
method listenMatchCostTime
private fun listenMatchCostTime()
描述: 监听对频完成时间,SkyLink测试使用
输入参数: 无。
输出参数: 无。
相关参数: 无。
method startRemoteUploadAndTimeSync
private fun startRemoteUploadAndTimeSync()
描述: 开启遥控器定频上报和遥控时间同步
输入参数: 无。
输出参数: 无。
相关参数: 无。
method rcTimeSync
private fun rcTimeSync()
描述: RC和APP时间进行同步
输入参数: 无。
输出参数: 无。
相关参数: 无。
method getTimeZoneOffset
private fun getTimeZoneOffset(): Int
描述: 获取当前时区相对于零时区的偏移小时数
输入参数: 无。
输出参数: 将偏移值转换成小时数
相关参数: 无。
method createDroneDevice
private fun createDroneDevice()
描述: 添加飞机设备
输入参数: 无。
输出参数: 无。
相关参数: 无。
method removeDroneDevice
private fun removeDroneDevice(device: IAutelDroneDevice)
描述: 移除飞机设备
输入参数: device:要移除的无人机设备对象
输出参数: 无。
相关参数: 无。
method getInitData
private fun getInitData(device: IAutelDroneDevice, retryCount: Int = RETRY_MAX_COUNTS)
描述: 启动无人机设备的初始化数据
输入参数: device:设备无人机对象
输出参数: 无。
相关参数: 无。
method iniCameraInfo
private fun iniCameraInfo(device: IAutelDroneDevice, retryCount: Int = RETRY_MAX_COUNTS)
描述: 相机能力集初始化
输入参数: device: 已连接的飞机信息 retryCount: 获取相机信息重试次数
输出参数: 无。
相关参数: 无。
method test
fun test()
描述: 性能测试使用
输入参数: 无。
输出参数: 无。
相关参数: 无。
method getDroneDeviceInfo
private fun getDroneDeviceInfo(device: IAutelDroneDevice, retryCount: Int = RETRY_MAX_COUNTS) {
描述: 获取无人机设备所有信息
输入参数: device:无人机设备对象 retryCount:重试计数器
输出参数: 无。
相关参数: 无。
method getCameraAbilityVersion
private fun getCameraAbilityVersion(model: String, retryCount: Int = RETRY_MAX_COUNTS)
描述: 获取相机能力集版本号
输入参数: model: 相机型号
输出参数: 无。
method initLocalAssetGson
private fun initLocalAssetGson()
描述: 直接解析本地Asset数据
输入参数: 无。
输出参数: 无。
相关参数: 无。
method downloadCameraAbilityFile
private fun downloadCameraAbilityFile(
model: String,
version: String,
oldVersion: String?,
sourcePath: String,
retryCount: Int = RETRY_MAX_COUNTS
)
描述: 下载能力集文件
输入参数: model: 相机型号 version: 能力集版本号 oldVersion: 本地版本号 sourcePath: 下载路径 sourcePath:json文件的路径
输出参数: 无。
相关参数: 无。
method parseAndInformApp
fun private fun parseAndInformApp(file: File, model: String, version: String)
描述: 解析相机能力集文件并通知app
输入参数: file: camera json file model: 相机型号 version: 能力集版本号
输出参数: 无。
相关参数: 无。
method setTimeZone
private fun setTimeZone(device: IAutelDroneDevice, retryCount: Int = RETRY_MAX_COUNTS)
描述: 同步系统时间给飞控
输入参数: device:无人机设备对象
输出参数: 无。
相关参数: 无。
method listenCameraStatusMsg
private fun listenCameraStatusMsg(aircraftDevice: IBaseDevice)
描述: 监听无人机摄像头状态
输入参数: aircraftDevice:无人机设备基础对象
输出参数: 无。
相关参数: 无。