Teknisk specifikation
Arkitekturöversikt
Section titled “Arkitekturöversikt”Applikationen är byggd med Flutter och använder **Riverpod** ramverket för tillståndshantering. Den interagerar med ELRS-hårdvara via ett RESTful API som exponeras av enhetens inbyggda WiFi-modul, vilket säkerställer kommunikation med låg latens och synkronisering av tillstånd i realtid.
Datalager
Section titled “Datalager”API-slutpunkter
Section titled “API-slutpunkter”Systemet kommunicerar med hårdvaran med följande HTTP-slutpunkter:
| Metod | Slutpunkt | Beskrivning |
|---|---|---|
GET | /config | Hämtar aktuell enhetskonfiguration i JSON-format. |
POST | /options.json | Uppdaterar ändringsbara körtidsalternativ (SSID, Password, etc.). |
POST | /config | Uppdaterar kärnhårdvaruparametrar och PWM-mappningar. |
POST | /reboot | Utlöser en hårdvaruåterställning för att tillämpa ändringar. |
JSON-schema
Section titled “JSON-schema”RuntimeConfig-modellen utnyttjar ELRS 4.x-strukturen, som separerar parametrar i tre primära noder:
settings: Skrivskyddade hårdvaruidentifierare och versionssträngar.options: Ändringsbara användarpreferenser och nätverksuppgifter.config: Lågnivå hårdvarukonfigurationer (protokoll, PWM-arrayer).
Exempel på JSON-struktur:
{ "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} ] }}Tillståndshantering
Section titled “Tillståndshantering”Systemet använder en reaktiv arkitektur:
ConfigViewModel: Hanterar live-anslutningsstatus, heartbeat-logik och IP-upptäckt.FlashingController: Orkestrerar nedladdning av firmware, lokal binär patchning och XH-over-HTTP uppladdningsprocessen.
Mappningslager
Section titled “Mappningslager”ElrsMappings.domains900 mappar det 900 MHz regleringsdomänindex som används i API:et till dess mänskligt läsbara etikett:
| ID | Etikett | Beskrivning |
|---|---|---|
| 0 | AU915 | Australien/Nya Zeeland 915MHz |
| 1 | FCC915 | Nordamerika 915MHz |
| 2 | EU868 | Europa 868MHz |
| 3 | IN866 | Indien 866MHz |
| 4 | AU433 | Australien 433MHz |
| 5 | EU433 | Europa 433MHz |
| 6 | US433 | Nordamerika 433MHz |
| 7 | US433-Wide | Nordamerika Bred 433MHz |
Beständighetslager
Section titled “Beständighetslager”Systemet implementerar en strategi för beständighet i två lager:
SharedPreferences: Används viaPersistenceServiceför icke-känslig data som WiFi SSID och allmänna appinställningar.FlutterSecureStorage: Används för känslig data, inklusive bindningsfraser och WiFi-lösenord, vilket säkerställer kryptering på OS-nivå.