Technische Specificatie
Architectuur Overzicht
Section titled “Architectuur Overzicht”De applicatie is gebouwd met Flutter en maakt gebruik van het Riverpod state management framework. Het communiceert met ELRS hardware via een RESTful API die wordt aangeboden door de ingebouwde WiFi-module van het apparaat, wat zorgt voor communicatie met lage latentie en real-time statussynchronisatie.
Gegevenslaag
Section titled “Gegevenslaag”API-eindpunten
Section titled “API-eindpunten”Het systeem communiceert met de hardware via de volgende HTTP-eindpunten:
| Methode | Eindpunt | Beschrijving |
|---|---|---|
GET | /config | Haalt de huidige apparaatconfiguratie op in JSON-formaat. |
POST | /options.json | Werkt aanpasbare runtime-opties bij (WiFi SSID, Wachtwoord, enz.). |
POST | /config | Werkt de kernhardwareparameters en PWM-toewijzingen bij. |
POST | /reboot | Activeert een hardware-reset om wijzigingen toe te passen. |
JSON-schema
Section titled “JSON-schema”Het RuntimeConfig-model maakt gebruik van de ELRS 4.x-structuur, die parameters in drie primaire knooppunten scheidt:
settings: Alleen-lezen hardware-identificatoren en versie-strings.options: Aanpasbare gebruikersvoorkeuren en netwerkreferenties.config: Laag-niveau hardwareconfiguraties (Protocollen, PWM-arrays).
Voorbeeld van de JSON-structuur:
{ "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} ] }}Statusbeheer
Section titled “Statusbeheer”Het systeem maakt gebruik van een reactieve architectuur:
ConfigViewModel: Beheert de live verbindingsstatus, heartbeat-logica en IP-detectie.DeviceEditorViewModel: Bevat de conceptstatus van de configuratie van een apparaat, waardoor bewerkingen in meerdere stappen mogelijk zijn met uiteindelijke “opslaan/annuleren”-logica.FlashingController: Coördineert firmware-downloads, lokale binaire patching en het XH-over-HTTP uploadproces.
Toewijzingslaag
Section titled “Toewijzingslaag”De volgende tabellen definiëren de toewijzing tussen integer-identificatoren die in de API worden gebruikt en hun menselijk leesbare equivalenten.
Regelgevende domeinen
Section titled “Regelgevende domeinen”| ID | Label | Beschrijving |
|---|---|---|
| 0 | AU915 | Australië/Nieuw-Zeeland 915MHz |
| 1 | FCC915 | Noord-Amerikaans 915MHz |
| 2 | EU868 | Europees 868MHz |
| 3 | IN866 | Indiaas 866MHz |
| 4 | AU433 | Australië 433MHz |
| 5 | EU433 | Europees 433MHz |
| 6 | US433 | Noord-Amerikaans 433MHz |
| 7 | US433-Wide | Noord-Amerikaans breed 433MHz |
Geavanceerde toewijzingen
Section titled “Geavanceerde toewijzingen”VBind (Bindingsopslag)
Section titled “VBind (Bindingsopslag)”Bepaalt hoe de bindingszin op het apparaat wordt opgeslagen.
- 0: Persistent: Opgeslagen in flashgeheugen (standaard).
- 1: Vluchtig: Gewist bij het uitschakelen en weer inschakelen.
- 2: Retourneerbaar: Gebruikt voor uitleenapparatuur.
- 3: Beheerd: Gebruikt in multi-piloot vlootomgevingen.
Persistentielaag
Section titled “Persistentielaag”Het systeem implementeert een tweelaagse persistentiestrategie:
SharedPreferences: Gebruikt viaPersistenceServicevoor niet-gevoelige gegevens zoals WiFi SSIDs en algemene app-voorkeuren.FlutterSecureStorage: Gebruikt voor gevoelige gegevens, waaronder bindingszinnen en WiFi-wachtwoorden, om versleuteling op OS-niveau te garanderen.