Перейти до вмісту

Технічна специфікація

Принцип дизайну

Застосунок побудовано за допомогою Flutter і використовує фреймворк керування станом Riverpod. Він взаємодіє з обладнанням ELRS через RESTful API, що надається вбудованим WiFi модулем пристрою, забезпечуючи зв'язок з низькою затримкою та синхронізацію стану в реальному часі.

Система зв’язується з обладнанням за допомогою наступних HTTP точок доступу:

МетодEndpointОпис
GET/configОтримує поточну конфігурацію пристрою у форматі JSON.
POST/options.jsonОновлює змінні параметри виконання (WiFi SSID, Password тощо).
POST/configОновлює основні апаратні параметри та відображення PWM.
POST/rebootІніціює апаратне скидання для застосування змін.

Модель 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}
]
}
}

Система використовує реактивну архітектуру:

  • ConfigViewModel: Керує станом живого з’єднання, логікою “серцебиття” та виявленням IP.
  • DeviceEditorViewModel: Зберігає чернетковий стан конфігурації пристрою, уможливлюючи багатоетапне редагування з логікою остаточного “збереження/скасування”.
  • FlashingController: Організовує завантаження прошивки, локальне патчування бінарних файлів та процес завантаження XH-over-HTTP.

Наведені нижче таблиці визначають відповідність між цілочисловими ідентифікаторами, що використовуються в API, та їх людсько-зрозумілими еквівалентами.

IDМіткаОпис
0AU915Австралія/Нова Зеландія 915МГц
1FCC915Північна Америка 915МГц
2EU868Європа 868МГц
3IN866Індія 866МГц
4AU433Австралія 433МГц
5EU433Європа 433МГц
6US433Північна Америка 433МГц
7US433-WideПівнічна Америка Широкий 433МГц

Р��зширені відображення

Section titled “Р��зширені відображення”

VBind (Зберігання прив’язки)

Section titled “VBind (Зберігання прив’язки)”

Визначає, як фраза прив’язки зберігається на пристрої.

  • 0: Постійне: Зберігається у флеш-пам’яті (стандартно).
  • 1: Енергозалежне: Очищається при відключенні живлення.
  • 2: Поворотне: Використовується для орендованого обладнання.
  • 3: Адміністроване: Використовується в середовищах флоту з кількома пілотами.

Система реалізує двошарову стратегію збереження даних:

  • SharedPreferences: Використовується через PersistenceService для нечутливих даних, таких як WiFi SSID та загальні налаштування застосунку.
  • FlutterSecureStorage: Використовується для конфіденційних даних, включаючи Binding Phrases та WiFi Passwords, забезпечуючи шифрування на рівні ОС.