Technische Spezifikation
Architekturübersicht
Abschnitt betitelt „Architekturübersicht“Die Anwendung basiert auf Flutter und nutzt das Riverpod State-Management-Framework. Sie interagiert mit der ELRS-Hardware über eine RESTful API, die vom integrierten WiFi-Modul des Geräts bereitgestellt wird, um eine Kommunikation mit geringer Latenz und Echtzeit-Statussynchronisierung zu gewährleisten.
Datenschicht
Abschnitt betitelt „Datenschicht“API-Endpunkte
Abschnitt betitelt „API-Endpunkte“Das System kommuniziert mit der Hardware über die folgenden HTTP-Endpunkte:
| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET | /config | Ruft die aktuelle Gerätekonfiguration im JSON-Format ab. |
POST | /options.json | Aktualisiert änderbare Laufzeitoptionen (SSID, Passwort usw.). |
POST | /config | Aktualisiert grundlegende Hardwareparameter und PWM-Zuordnungen. |
POST | /reboot | Löst einen Hardware-Reset aus, um Änderungen anzuwenden. |
JSON-Schema
Abschnitt betitelt „JSON-Schema“Das RuntimeConfig-Modell nutzt die ELRS 4.x-Struktur, die Parameter in drei primäre Knoten unterteilt:
settings: Schreibgeschützte Hardware-Identifikatoren und Versionszeichenfolgen.options: Änderbare Benutzereinstellungen und Netzwerkanmeldeinformationen.config: Low-Level-Hardwarekonfigurationen (Protokolle, PWM-Arrays).
Beispiel für eine 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} ] }}Zustandsverwaltung
Abschnitt betitelt „Zustandsverwaltung“Das System verwendet eine reaktive Architektur:
ConfigViewModel: Verwaltet den Live-Verbindungsstatus, die Heartbeat-Logik und die IP-Erkennung.FlashingController: Orchestriert Firmware-Downloads, lokale Binär-Patching und den XH-over-HTTP-Upload-Prozess.
Zuordnungsschicht
Abschnitt betitelt „Zuordnungsschicht“ElrsMappings.domains900 ordnet den in der API verwendeten 900 MHz Regulierungsbereichsindex seinem menschenlesbaren Label zu:
| ID | Label | Beschreibung |
|---|---|---|
| 0 | AU915 | Australien/Neuseeland 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 Wide 433MHz |
Persistenzschicht
Abschnitt betitelt „Persistenzschicht“Das System implementiert eine zweischichtige Persistenzstrategie:
SharedPreferences: Wird überPersistenceServicefür nicht-sensible Daten wie WiFi SSIDs und allgemeine App-Einstellungen verwendet.FlutterSecureStorage: Wird für sensible Daten, einschließlich Binding Phrases und WiFi-Passwörter, verwendet, um die Verschlüsselung auf OS-Ebene zu gewährleisten.