Aller au contenu

Spécification Technique

Principe de conception

L'application est développée avec Flutter et utilise le framework de gestion d'état **Riverpod**. Elle interagit avec le matériel ELRS via une API RESTful exposée par le module WiFi embarqué de l'appareil, garantissant une communication à faible latence et une synchronisation d'état en temps réel.

Le système communique avec le matériel en utilisant les points d’extrémité HTTP suivants :

MéthodeEndpointDescription
GET/configRécupère la configuration actuelle de l’appareil au format JSON.
POST/options.jsonMet à jour les options d’exécution modifiables (SSID, Mot de passe, etc.).
POST/configMet à jour les paramètres matériels fondamentaux et les mappages PWM.
POST/rebootDéclenche une réinitialisation matérielle pour appliquer les modifications.

Le modèle RuntimeConfig utilise la structure ELRS 4.x, qui sépare les paramètres en trois nœuds principaux :

  • settings : Identifiants mat��riels en lecture seule et chaînes de version.
  • options : Préférences utilisateur modifiables et identifiants réseau.
  • config : Configurations matérielles de bas niveau (protocoles, matrices PWM).

Exemple de structure JSON :

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

Le système utilise une architecture réactive :

  • ConfigViewModel : Gère l’état de connexion en direct, la logique de battement de cœur et la découverte d’IP.
  • FlashingController : Orchestre les téléchargements de micrologiciels, le patching binaire local et le processus de téléversement XH-over-HTTP.

ElrsMappings.domains900 mappe l’index du domaine réglementaire 900 MHz utilisé dans l’API à son étiquette lisible par l’homme :

IDÉtiquetteDescription
0AU915Australie/Nouvelle-Zélande 915MHz
1FCC915Amérique du Nord 915MHz
2EU868Europe 868MHz
3IN866Inde 866MHz
4AU433Australie 433MHz
5EU433Europe 433MHz
6US433Amérique du Nord 433MHz
7US433-WideAmérique du Nord Large 433MHz

Le système met en œuvre une stratégie de persistance à double couche :

  • SharedPreferences : Utilisé via PersistenceService pour les données non sensibles telles que les SSID WiFi et les préférences générales de l’application.
  • FlutterSecureStorage : Utilisé pour les données sensibles, y compris les phrases de liaison et les mots de passe WiFi, assurant le chiffrement au niveau du système d’exploitation.