个人使用 DroidPlanner 手机地面站(简称DP),觉得很好用。也想了解其系统构成。就 git 下载了一个,在Android Studio 中编译成功,而后又看了下代码
写下系统分析笔记 ( 我分析的版本是 2.7.6.1 ):
层次型的大系统结构
DP设计中充满的模式和抽象, 包含两个大包 core 和 android (这里是指包 ), 把跟Android 和地图等不相关的抽象到Core模块中, 跟Android系统相关的部分放在Android包中。 也就是说你编译一个非Android设备的地面站,你可以复用Core这部分(但其实apple平板用的object c, win平板用 c#, 还真难把java代码用在非Android平板上,但有这层抽象,可能让系统层次更清晰) ( 在3.0后续版本, core 单独发展成 3DR services, 而 DP android 部分改名叫tower )
‘
Core 包含的模块
Model_Drone
定义Drone的抽象接口,Core 最关键对 Drone 进行了抽象
Drone
定义一个Drone的实现,Drone就代表一个无人机(可以是Rover),有近20个或简单或复杂的Variable ( Altitude, Battery, Calibration, GuidedPoint等 ) ,
这是就是 MVC模式的Model. 当Mavlink 来消息的,调用Varible的set 方法,传来触发 listener ( 多是View) 更新(显示 )
(注意 Variabale 不是Parameters, Parameters只算一个Variable)
Mavlink
此模块并不是Mavlink系统提供者用python脚本自动生成的pacakge ( 那个自动生成的 package在core包之外), 此包在Mavlink自动生成包基础了,定义了 DP 需要的 10多个Mavlink命令以方便调用(Arm, Heartbeat, Modes, 等)
另定义了MavlinkConnection接口(包括一般, Tcp, Udp)
parameters包
定义了 parameter class, 而Drone的 Pa