Техническая спецификация
Обзор архитектуры
Заголовок раздела «Обзор архитектуры»Приложение создано с использованием Flutter и задействует фреймворк управления состоянием Riverpod. Оно взаимодействует с оборудованием ELRS через RESTful API, предоставляемый встроенным модулем WiFi устройства, обеспечивая связь с низкой задержкой и синхронизацию состояния в реальном времени.
Уровень данных
Заголовок раздела «Уровень данных»Конечные точки API
Заголовок раздела «Конечные точки API»Система взаимодействует с оборудованием, используя следующие HTTP конечные точки:
| Метод | Конечная точка | Описание |
|---|---|---|
GET | /config | Получает текущую конфигурацию устройства в формате JSON. |
POST | /options.json | Обновляет изменяе��ые параметры выполнения (SSID, Password и т.д.). |
POST | /config | Обновляет основные параметры оборудования и привязки PWM. |
POST | /reboot | Запускает аппаратный сброс для применения изменений. |
Схема JSON
Заголовок раздела «Схема 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 сопоставляет индекс регулируемого домена 900 МГц, используемый в API, с его удобочитаемой меткой:
| ID | Метка | Описание |
|---|---|---|
| 0 | AU915 | Австралия/Новая Зеландия 915 МГц |
| 1 | FCC915 | Северная Америка 915 МГц |
| 2 | EU868 | Европа 868 МГц |
| 3 | IN866 | Индия 866 МГц |
| 4 | AU433 | Австралия 433 МГц |
| 5 | EU433 | Европа 433 МГц |
| 6 | US433 | Северная Америка 433 МГц |
| 7 | US433-Wide | Северная Америка Широкий 433 МГц |
Уровень сохранения данных
Заголовок раздела «Уровень сохранения данных»Система реализует двухслойную стратегию сохранения данных:
SharedPreferences: Используется черезPersistenceServiceдля нечувствительных данных, таких как WiFi SSID и общие настройки приложения.FlutterSecureStorage: Используется для чувствительных данных, включая Binding Phrases и WiFi Passwords, обеспечивая шифрование на уровне ОС.