Skip to main content

设备管理类

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:无人机设备基础对象

输出参数: 无。

相关参数: 无。