技术规格
该应用程序使用 Flutter 构建,并利用 Riverpod 状态管理框架。它通过设备板载 WiFi 模块公开的 RESTful API 与 ELRS 硬件交互,确保低延迟通信和实时状态同步。
API 端点
Section titled “API 端点”系统使用以下 HTTP 端点与硬件通信:
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /config | 以 JSON 格式检索当前设备配置。 |
POST | /options.json | 更新可修改的运行时选项(SSID、密码等)。 |
POST | /config | 更新核心硬件参数和 PWM 映射。 |
POST | /reboot | 触发硬件重置以应用更改。 |
JSON 模式
Section titled “JSON 模式”RuntimeConfig 模型利用 ELRS 4.x 结构,将参数分为三个主要节点:
settings:只读硬件标识符和版本字符串。options:可修改的用户偏好和网络凭据。config:低级硬件配置(协议,PWM 数组)。
JSON 结构示例:
{ "product_name": "Test RX", "settings": { "version": "1.0.0", "module-type": "RX" }, "options": { "bindPhrase": "example", "wifi-ssid": "SSID", "domain": 1 }, "config": { "serial-protocol": 0, "pwm": [ {"channel": 0, "mode": 5} ] }}系统采用响应式架构:
ConfigViewModel:管理实时连接状态、心跳逻辑和 IP 发现。FlashingController:协调固件下载、本地二进制修补和 XH-over-HTTP 上传过程。
ElrsMappings.domains900 将 API 中使用的 900 MHz 监管域索引映射到其人类可读的标签:
| ID | 标签 | 描述 |
|---|---|---|
| 0 | AU915 | 澳大利亚/新西兰 915MHz |
| 1 | FCC915 | 北美 915MHz |
| 2 | EU868 | 欧洲 868MHz |
| 3 | IN866 | 印度 866MHz |
| 4 | AU433 | 澳大利亚 433MHz |
| 5 | EU433 | 欧洲 433MHz |
| 6 | US433 | 北美 433MHz |
| 7 | US433-Wide | 北美宽频 433MHz |
系统实现双层持久化策略:
SharedPreferences:通过PersistenceService用于存储非敏感数据,例如 WiFi SSID 和一般应用程序偏好设置。FlutterSecureStorage:用于存储敏感数据,包括绑定短语和 WiFi 密码,确保操作系统级别的加密。