Skip to content

遥控器与操控App接口控制文档

字段内容
文档编号ICD-06-V0.2
版本V0.2
状态草稿
作者产品团队
日期2026-04-16
审核人[TBD]
接口双方遥控器系统 (RC) ↔ 操控App系统 (APP)

修订记录

版本日期修订人修订内容
V0.12026-04-14产品团队初稿
V0.22026-04-16产品团队架构澄清修订,遥控器采用薄固件+厚App架构;删除AIDL/RC Service,简化为驱动接口

1. 概述

1.1 目的

本文档定义遥控器硬件与操控App之间的接口。本遥控器采用"薄固件+厚App"架构——固件仅负责硬件驱动,App直接持有全部业务协议(MAVLink、视频流、任务管理)。因此,本ICD定义的是App与底层驱动/硬件之间的接口,而非传统的"固件服务API"。

1.2 接口范围

遥控器与操控App之间的接口包括:

  • AR8131驱动接口:虚拟网卡设备,App通过标准socket通信(方案B)
  • 摇杆/按键输入接口:标准Linux Input Event,App通过Android InputEvent API读取
  • 系统服务接口:最小集——固件版本、屏幕亮度、风扇状态等
  • 升级配置接口:App与固件之间的版本管理

架构说明:App不通过AIDL/Binder向RC固件请求飞行数据。App直接通过网卡与飞控进行MAVLink UDP通信,直接接收RTP视频流。RC固件不解析MAVLink,不解码视频,不中转数据。

1.3 关联文档

文档编号文档名称
SUB-RC-V0.1遥控器系统PRD
SUB-APP-V0.1操控App系统PRD
ICD-02-V0.2无线数据链路接口规格
PRD-MASTER-V0.1总体产品需求文档

1.4 术语定义

术语定义
AR8131酷芯微图数传芯片,Host侧映射为虚拟网卡
Linux Input EventLinux内核标准输入事件机制(/dev/input/eventX)
HALHardware Abstraction Layer,硬件抽象层
APKAndroid应用程序包

2. 运行环境

2.1 主方案:内置Android

编号参数规格说明
ICD-06-I-001运行方案App 以 APK 形式安装在遥控器内置 Android 定制系统上
ICD-06-I-002Android 版本≥ Android 12 [TBD-需系统架构师确认]需支持目标 API Level
ICD-06-I-003通信方式App通过标准Linux/Android接口访问硬件(网卡、输入设备、sysfs)无需AIDL/Binder中间层
ICD-06-I-004App 安装路径/system/app/ 或 /data/app/预装或用户安装
ICD-06-I-005硬件权限App 需获取:存储、网络、位置、USB 等系统权限通过 Android 权限机制管理

2.2 备选方案:外接手机/平板

编号参数规格说明
ICD-06-I-010有线连接USB-C,USB 3.0 协议,支持 OTG遥控器作为 USB 设备或主机 [TBD]
ICD-06-I-011无线连接Wi-Fi Direct,5 GHz 频段优先减少与遥控器2.4G链路的干扰
ICD-06-I-012数据协议自定义 TCP/UDP 协议 over USB/Wi-Fi [TBD]需定义应用层协议

注意:V0.1版本以内置Android方案为主,外接方案作为备选。


3. 驱动接口

3.1 架构总览

┌──────────────────────────────────────────────┐
│                操控 App (APK)                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ MAVLink  │  │ 视频流    │  │ 任务管理  │   │
│  │ 协议栈    │  │ RTP解码   │  │ 航线规划  │   │
│  └─────┬────┘  └─────┬────┘  └──────────┘   │
│        │ UDP socket   │ RTP socket            │
│        └──────┬───────┘                       │
│               │ 标准网卡接口                    │
├───────────────┼──────────────────────────────┤
│          Linux 内核 / Android HAL              │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │ AR8131   │  │ 摇杆ADC  │  │ GPIO     │   │
│  │ 网卡驱动  │  │ Input驱动 │  │ 按键驱动  │   │
│  └──────────┘  └──────────┘  └──────────┘   │
├──────────────────────────────────────────────┤
│              遥控器硬件                         │
└──────────────────────────────────────────────┘

3.2 AR8131驱动接口(App视角)

编号参数规格说明
ICD-06-D-001虚拟网卡设备名usb0eth1 [TBD]App通过标准Android NetworkInterface访问
ICD-06-D-002网络配置静态IP,遥控器端 192.168.144.2,飞控端 192.168.144.1 [TBD]点对点链路
ICD-06-D-003网关192.168.144.1 [TBD]
ICD-06-D-004驱动状态查询sysfs: /sys/class/net/<dev>/operstateup = 链路已建立
ICD-06-D-005信号强度读取sysfs: /sys/class/net/<dev>/device/rssi [TBD]App定期轮询或通过ioctl读取
ICD-06-D-006链路状态通知Android NetworkCallback / Linux netlink链路建立/断开事件

App通过此网卡发送MAVLink UDP(端口14550)和接收RTP视频流,与直接使用SIYI以太网口完全一致。

3.3 摇杆/按键输入接口(标准Linux Input Event)

3.3.1 摇杆输入

编号参数规格说明
ICD-06-J-001设备路径/dev/input/eventX通过设备名或VID/PID匹配
ICD-06-J-002设备类型EV_ABS(绝对轴)标准Linux Joystick
ICD-06-J-003右摇杆-横滚ABS_X,范围 0-4095 [TBD]ADC分辨率12bit
ICD-06-J-004右摇杆-俯仰ABS_Y,范围 0-4095 [TBD]
ICD-06-J-005左摇杆-油门ABS_Z,范围 0-4095 [TBD]
ICD-06-J-006左摇杆-航向ABS_RZ,范围 0-4095 [TBD]
ICD-06-J-007左拨轮ABS_THROTTLE,范围 0-4095 [TBD]喷洒流量调节
ICD-06-J-008右拨轮ABS_RUDDER,范围 0-4095 [TBD]云台俯仰角
ICD-06-J-009App读取方式Android InputDevice API / InputEvent标准Android Joystick API

3.3.2 按键输入

编号按键Linux Key Code说明
ICD-06-K-001紧急停机键KEY_STOP (128) [TBD]P0优先级,App收到后立即发送MAVLink紧急停机
ICD-06-K-002一键返航键KEY_HOME (102) [TBD]App发送MAVLink RTH指令
ICD-06-K-003喷洒开关键KEY_F1 (59) [TBD]切换喷洒开/关
ICD-06-K-004飞行挡位开关三段开关,映射为3个Key Code [TBD]手动/姿态/GPS
ICD-06-K-005自定义功能键C1KEY_F5 (63) [TBD]用户可在App中自定义功能
ICD-06-K-006自定义功能键C2KEY_F6 (64) [TBD]用户可在App中自定义功能
ICD-06-K-007App读取方式Android KeyEvent / onKeyDown/onKeyUp标准Android按键事件

3.4 系统服务接口(最小集)

编号接口方式说明
ICD-06-S-001固件版本查询getprop ro.rc.firmware.version 或 sysfsApp启动时读取,用于兼容性检查
ICD-06-S-002屏幕亮度控制Android Settings.System.SCREEN_BRIGHTNESS标准Android API
ICD-06-S-003风扇转速查询sysfs: /sys/class/thermal/cooling_deviceX/cur_state [TBD]户外高温场景监控
ICD-06-S-004遥控器电池电量Android BatteryManager API标准Android API
ICD-06-S-005遥控器温度sysfs: /sys/class/thermal/thermal_zoneX/temp过温告警

4. 升级与配置

4.1 App 版本管理

编号功能说明
ICD-06-U-001App 版本检查App 启动时检查是否有新版本(需遥控器联网)
ICD-06-U-002App 在线升级通过 Wi-Fi 网络下载 APK 并安装更新
ICD-06-U-003App 离线升级通过 microSD 卡或 USB 传入 APK 安装
ICD-06-U-004App 与固件版本兼容性App 启动时通过 getprop 读取固件版本,校验兼容性

4.2 固件升级(App触发)

编号功能说明
ICD-06-U-010AR8131固件升级App通过USB/sysfs通道将固件写入AR8131 [TBD]
ICD-06-U-011飞行器固件升级App通过MAVLink协议直接向飞控传输固件包(FTP over MAVLink)
ICD-06-U-012升级进度AR8131升级通过sysfs读取进度;飞控升级通过MAVLink回报进度

4.3 参数配置

编号同步方向说明
ICD-06-C-001App → 飞控App直接通过MAVLink PARAM_SET发送参数至飞控(不经RC固件中转)
ICD-06-C-002飞控 → App飞控通过MAVLink PARAM_VALUE回传参数,App直接接收
ICD-06-C-003App → 遥控器硬件屏幕亮度、音量等通过标准Android API设置

5. 事件通知机制

说明:原AIDL回调机制不再适用。App通过以下标准Android/Linux机制接收事件。

事件类型获取方式说明
飞行器连接/断连Android NetworkCallback(网卡状态)+ MAVLink心跳超时App自行判断
飞行模式切换MAVLink HEARTBEAT解析App直接从MAVLink流中读取
电池告警MAVLink SYS_STATUS解析App层逻辑
信号强度变化定期轮询AR8131驱动sysfs接口App层逻辑
障碍物告警MAVLink自定义消息解析App层逻辑
按键事件Android KeyEvent回调(onKeyDown/onKeyUp)标准Android机制
摇杆输入Android InputEvent(onGenericMotionEvent)标准Android机制
遥控器电池/温度Android BatteryManager / thermal sysfs标准Android API

6. 待决事项 (TBD)

编号事项描述责任人期望决定日期
TBD-ICD06-001最终确认运行方案(内置Android vs 外接手机/平板)系统架构师2025-05
TBD-ICD06-002Android 版本和目标 API Level 确认系统架构师2025-05
TBD-ICD06-003AR8131虚拟网卡设备名、IP段确认驱动工程师2025-05
TBD-ICD06-004摇杆ADC轴映射和Key Code分配确认驱动+App团队2025-05
TBD-ICD06-005AR8131固件升级通道方案驱动工程师2025-06
TBD-ICD06-006AR8131 RSSI/SNR sysfs路径确认驱动工程师2025-05

菲航户外事业部产品知识库