跳转到内容

技术规格

设计原则

该应用程序使用 Flutter 构建,并利用 Riverpod 状态管理框架。它通过设备板载 WiFi 模块公开的 RESTful API 与 ELRS 硬件交互,确保低延迟通信和实时状态同步。

系统使用以下 HTTP 端点与硬件通信:

方法端点描述
GET/config以 JSON 格式检索当前设备配置。
POST/options.json更新可修改的运行时选项(SSID、密码等)。
POST/config更新核心硬件参数和 PWM 映射。
POST/reboot触发硬件重置以应用更改。

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标签描述
0AU915澳大利亚/新西兰 915MHz
1FCC915北美 915MHz
2EU868欧洲 868MHz
3IN866印度 866MHz
4AU433澳大利亚 433MHz
5EU433欧洲 433MHz
6US433北美 433MHz
7US433-Wide北美宽频 433MHz

系统实现双层持久化策略:

  • SharedPreferences:通过 PersistenceService 用于存储非敏感数据,例如 WiFi SSID 和一般应用程序偏好设置。
  • FlutterSecureStorage:用于存储敏感数据,包括绑定短语和 WiFi 密码,确保操作系统级别的加密。