Технічна специфікація
Огляд архітектури
Section titled “Огляд архітектури”Застосунок побудовано за допомогою Flutter і використовує фреймворк керування станом Riverpod. Він взаємодіє з обладнанням ELRS через RESTful API, що надається вбудованим WiFi модулем пристрою, забезпечуючи зв'язок з низькою затримкою та синхронізацію стану в реальному часі.
Рівень даних
Section titled “Рівень даних”Точки доступу API
Section titled “Точки доступу API”Система зв’язується з обладнанням за допомогою наступних HTTP точок доступу:
| Метод | Endpoint | Опис |
|---|---|---|
GET | /config | Отримує поточну конфігурацію пристрою у форматі JSON. |
POST | /options.json | Оновлює змінні параметри виконання (WiFi SSID, Password тощо). |
POST | /config | Оновлює основні апаратні параметри та відображення PWM. |
POST | /reboot | Ініціює апаратне скидання для застосування змін. |
JSON Схема
Section titled “JSON Схема”Модель RuntimeConfig використовує структуру ELRS 4.x, яка розділяє параметри на три основні вузли:
settings: Ідентифікатори обладнання та рядки версій, доступні лише для читання.options: Змінні користувацькі налаштування та мережеві облікові дані.config: Низькорівневі конфігурації обладнання (Protocols, PWM Arrays).
Приклад структури 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} ] }}Керування станом
Section titled “Керування станом”Система використовує реактивну архітектуру:
ConfigViewModel: Керує станом живого з’єднання, логікою “серцебиття” та виявленням IP.DeviceEditorViewModel: Зберігає чернетковий стан конфігурації пристрою, уможливлюючи багатоетапне редагування з логікою остаточного “збереження/скасування”.FlashingController: Організовує завантаження прошивки, локальне патчування бінарних файлів та процес завантаження XH-over-HTTP.
Рівень відображення
Section titled “Рівень відображення”Наведені нижче таблиці визначають відповідність між цілочисловими ідентифікаторами, що використовуються в API, та їх людсько-зрозумілими еквівалентами.
Регулятивні домени
Section titled “Регулятивні домени”| 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МГц |
Р��зширені відображення
Section titled “Р��зширені відображення”VBind (Зберігання прив’язки)
Section titled “VBind (Зберігання прив’язки)”Визначає, як фраза прив’язки зберігається на пристрої.
- 0: Постійне: Зберігається у флеш-пам’яті (стандартно).
- 1: Енергозалежне: Очищається при відключенні живлення.
- 2: Поворотне: Використовується для орендованого обладнання.
- 3: Адміністроване: Використовується в середовищах флоту з кількома пілотами.
Рівень сталості
Section titled “Рівень сталості”Система реалізує двошарову стратегію збереження даних:
SharedPreferences: Використовується черезPersistenceServiceдля нечутливих даних, таких як WiFi SSID та загальні налаштування застосунку.FlutterSecureStorage: Використовується для конфіденційних даних, включаючи Binding Phrases та WiFi Passwords, забезпечуючи шифрування на рівні ОС.