Aller au contenu

Architecture Technique

ELRS Mobile n’est pas seulement un web-wrapper ; c’est une implémentation native en Dart du pipeline de compilation et de configuration ExpressLRS.

Assemblage Unifié du Firmware

Au lieu de s'appuyer sur un compilateur cloud distant, l'application construit dynamiquement les binaires localement sur votre appareil. Lors du flashage des cibles ESP32/ESP8285, le `FirmwareAssembler` exécute une séquence précise de modification au niveau du bit :

1

Extrait le firmware générique de base de l'archive `firmware.zip` mise en cache.

2

Élague le remplissage de base en recherchant la signature du byte magique ESP `0xE9`.

3

Extrait les broches spécifiques de la cible et la configuration d'exécution à partir de `hardware.json`.

4

Compresse en octets le Nom du Produit (128b), le Nom Lua (16b), `options.json` (512b) et `hardware.json` (2048b) directement dans le flux binaire.

5

Compresse la charge utile finale dans un flux `.gz` si requis par la plateforme cible (ex. ESP8285 legacy).

L’application gère avec précision les différences complexes entre les bandes de fréquences. Pour les appareils 900MHz/Dual-Band, elle injecte activement le domaine choisi (ex. FCC, EU868) dans la charge utile JSON compilée. Pour les cibles 2.4GHz standard, elle utilise un drapeau booléen pour acheminer silencieusement le processus d’extraction vers les dossiers de firmware de base FCC/ standard ou LBT/ européen pendant l’assemblage.

Le flashage hors ligne est rendu possible grâce à un système de mise en cache local robuste. Lorsqu’un utilisateur télécharge une version via le Gestionnaire de Firmware, le FirmwareCacheService extrait le firmware.zip générique et le hardware.zip spécifique à l’appareil directement depuis l’ExpressLRS Artifactory. Ces archives sont gérées et stockées localement sur l’appareil, garantissant que l’assemblage et le flashage peuvent avoir lieu instantanément sur le terrain sans aucune connexion internet active.


Liaison Réseau Native

Les systèmes d'exploitation mobiles (notamment Android et iOS) déprioriseront les connexions Wi-Fi qui n'ont pas d'accès à Internet, acheminant silencieusement le trafic via le réseau cellulaire à la place. Cela empêche les applications standard d'atteindre le matériel ELRS à `10.0.0.1`.

ELRS Mobile résout ce problème via le `NativeNetworkService`. Lorsqu'une connexion matérielle est détectée, l'application invoque un `MethodChannel` spécifique à la plateforme pour lier l'ensemble du processus Flutter à l'interface Wi-Fi au niveau du noyau du système d'exploitation. Cela garantit que tout le trafic HTTP et mDNS est acheminé correctement vers le matériel, quelle que soit l'état cellulaire.