Ga naar inhoud

Technische Specificatie

Ontwerpprincipe

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.

Het systeem communiceert met de hardware via de volgende HTTP-eindpunten:

MethodeEindpuntBeschrijving
GET/configHaalt de huidige apparaatconfiguratie op in JSON-formaat.
POST/options.jsonWerkt aanpasbare runtime-opties bij (WiFi SSID, Wachtwoord, enz.).
POST/configWerkt de kernhardwareparameters en PWM-toewijzingen bij.
POST/rebootActiveert een hardware-reset om wijzigingen toe te passen.

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

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.

De volgende tabellen definiëren de toewijzing tussen integer-identificatoren die in de API worden gebruikt en hun menselijk leesbare equivalenten.

IDLabelBeschrijving
0AU915Australië/Nieuw-Zeeland 915MHz
1FCC915Noord-Amerikaans 915MHz
2EU868Europees 868MHz
3IN866Indiaas 866MHz
4AU433Australië 433MHz
5EU433Europees 433MHz
6US433Noord-Amerikaans 433MHz
7US433-WideNoord-Amerikaans breed 433MHz

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.

Het systeem implementeert een tweelaagse persistentiestrategie:

  • SharedPreferences: Gebruikt via PersistenceService voor 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.