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