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

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

Принцип проектування

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

Система взаємодіє з обладнанням, використовуючи наступні HTTP-кінцеві точки:

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

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

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

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

ElrsMappings.domains900 мапує індекс регуляторної доменної зони 900 МГц, що використовується в API, до його зручної для читання позначки:

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

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

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