OpenIPC开源FPV之重要源码包
1. 源由
OpenIPC FPV设备,在软件层面,其体现功能的重要软件包的梳理,有助于更好的理解工作原理。
从软件部署的思路去考虑,我们将设备的软件大块的进行简单切割:
- 设备引导代码:uboot
- 操作系统代码:Linux
- 基础文件系统:FileSystem(含基础功能代码)
- 功能执行代码:Application
前面《OpenIPC开源IPC之工程框架》已经整体上介绍上面四大块内容整合工具Buildroot
。
本章将重点放在Application
上,期望通过梳理,将天空端和地面端的具体功能实现与源代码一一对应,以便更好的去维护和开发后续功能。
2. 分析
首先,从功能颗粒度的角度进行基本分析。
2.1 功能角度
- 天空端
- 摄像视频采集
- 视频数据发送
- MAVLink数据采集
- MAVLink数据发送
- 地面端
- 视频数据接收
- 摄像视频播放
- MAVLink数据接收
- OSD图层渲染
2.2 数据角度
- 视频流
摄像视频采集 --> 视频数据发送 --> 视频数据接收 --> 摄像视频播放
- MAVLink数据流
MAVLink数据采集 --> MAVLink数据发送 --> MAVLink数据接收 --> OSD图层渲染
3. 软件包
通过功能角度和数据角度分析,寻找对应软件包的方式关联的脚本或者代码证据,将整个流程串联起来。
3.1 wfb-ng
3.1.1 目标板配置
BR2_PACKAGE_WIFIBROADCAST=y
3.1.2 软件版配置
WIFIBROADCAST_VERSION = 24.08
3.1.3 视频数据发送 & 接收
start_drone_wfb() {
wfb_tx -p "$stream" -u "$udp_port" -R "$rcv_buf" -K "$keydir/$unit.key" -B "$bandwidth" \
-M "$mcs_index" -S "$stbc" -L "$ldpc" -G "$guard_interval" -k "$fec_k" -n "$fec_n" \
-T "$pool_timeout" -i "$link_id" -f "$frame_type" -C 8000 "$wlan" > /dev/null &
}
start_gs_wfb() {
wfb_rx -c "$udp_addr" -u "$udp_port" -p "$stream" -K "$keydir/$unit.key" -i "$link_id" "$wlan" > /dev/null &
}
3.2 datalink
3.2.1 目标板配置
BR2_PACKAGE_DATALINK=y