Přeskočit na obsah

Technická specifikace

Princip návrhu

Aplikace je postavena pomocí Flutter a využívá framework pro správu stavu **Riverpod**. Komunikuje s hardwarem ELRS prostřednictvím RESTful API vystaveného palubním WiFi modulem zařízení, což zajišťuje nízkou latenci komunikace a synchronizaci stavu v reálném čase.

Systém komunikuje s hardwarem pomocí následujících HTTP koncových bodů:

MetodaKoncový bodPopis
GET/configNačítá aktuální konfiguraci zařízení ve formátu JSON.
POST/options.jsonAktualizuje modifikovatelné možnosti za běhu (SSID, Heslo atd.).
POST/configAktualizuje základní hardwarové parametry a mapování PWM.
POST/rebootSpouští hardwarový reset pro aplikaci změn.

Model RuntimeConfig využívá strukturu ELRS 4.x, která rozděluje parametry do tří primárních uzlů:

  • settings: Pouze pro čtení – identifikátory hardwaru a řetězce verzí.
  • options: Modifikovatelné uživatelské preference a síťové přihlašovací údaje.
  • config: Nízkoúrovňové konfigurace hardwaru (Protocols, PWM Arrays).

Příklad JSON struktury:

{
"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}
]
}
}

Systém využívá reaktivní architekturu:

  • ConfigViewModel: Spravuje živý stav připojení, logiku heartbeat a detekci IP adres.
  • DeviceEditorViewModel: Udržuje koncept stavu konfigurace zařízení, což umožňuje vícestupňové úpravy s finální logikou “uložit/zrušit”.
  • FlashingController: Orchestuje stahování firmwaru, lokální binární záplatování a proces nahrávání XH-over-HTTP.

Následující tabulky definují mapování mezi celočíselnými identifikátory používanými v API a jejich lidsky čitelnými ekvivalenty.

IDPopisekPopis
0AU915Austrálie/Nový Zéland 915MHz
1FCC915Severní Amerika 915MHz
2EU868Evropa 868MHz
3IN866Indie 866MHz
4AU433Austrálie 433MHz
5EU433Evropa 433MHz
6US433Severní Amerika 433MHz
7US433-WideSeverní Amerika širokopásmové 433MHz

Určuje, jak je vazební fráze uložena v zařízení.

  • 0: Persistentní: Uloženo do flash paměti (standardní).
  • 1: Volatilní: Smazáno po vypnutí/zapnutí.
  • 2: Vratné: Používáno pro zapůjčené vybavení.
  • 3: Administrované: Používáno v prostředí s více piloty.

Systém implementuje dvoufázovou strategii perzistence:

  • SharedPreferences: Využíváno prostřednictvím PersistenceService pro nesenzitivní data, jako jsou WiFi SSID a obecné preference aplikace.
  • FlutterSecureStorage: Používáno pro citlivá data, včetně vazebních frází a hesel WiFi, což zajišťuje šifrování na úrovni OS.