Hoppa till innehåll

技术规格

Det här innehållet är inte tillgängligt på ditt språk än.

设计原则

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

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

方法端点描述
GET/config以 JSON 格式检索当前设备配置。
POST/options.json更新可修改的运行时选项(例如 WiFi SSID、Password 等)。
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 发现。
  • DeviceEditorViewModel:包含设备配置的草稿状态,支持多步编辑和最终的“保存/取消”逻辑。
  • FlashingController:协调固件下载、本地二进制修补和 XH-over-HTTP 上传过程。

下表定义了 API 中使用的整数标识符及其人类可读等效项之间的映射。

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

决定绑定短语在设备上的存储方式。

  • 0: Persistent:保存到闪存(标准)。
  • 1: Volatile:断电后清除。
  • 2: Returnable:用于借用设备。
  • 3: Administered:用于多飞行员机队环境。

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

  • SharedPreferences:通过 PersistenceService 用于非敏感数据,例如 WiFi SSIDs 和一般应用偏好设置。
  • FlutterSecureStorage:用于敏感数据,包括 Binding Phrases 和 WiFi Passwords,确保操作系统级别的加密。