Przejdź do głównej zawartości

Architektura Techniczna

ELRS Mobile to nie tylko web-wrapper; to natywna implementacja w Dart potoku kompilacji i konfiguracji ExpressLRS.

Zunifikowane składanie oprogramowania układowego

Zamiast polegać na zdalnym kompilatorze chmurowym, aplikacja dynamicznie buduje binaria lokalnie na Twoim urządzeniu. Podczas flashowania celów ESP32/ESP8285, `FirmwareAssembler` wykonuje precyzyjną sekwencję modyfikacji na poziomie bitowym:

1

Wyodrębnia bazowe, ogólne oprogramowanie układowe ze zarchiwizowanej pamięci podręcznej `firmware.zip`.

2

Przycina bazowe wypełnienie, szukając sygnatury magicznego bajtu ESP `0xE9`.

3

Wyodrębnia specyficzne dla celu pinouty i konfigurację czasu wykonania z `hardware.json`.

4

Pakuje nazwy produktów (128b), nazwę Lua (16b), `options.json` (512b) i `hardware.json` (2048b) bezpośrednio do strumienia binarnego.

5

Kompresuje ostateczny ładunek do strumienia `.gz`, jeśli jest to wymagane przez platformę docelową (np. ESP8285 legacy).

Aplikacja precyzyjnie radzi sobie ze złożonymi różnicami między pasmami częstotliwości. W przypadku urządzeń 900MHz/Dual-Band, aktywnie wstrzykuje wybraną domenę (np. FCC, EU868) do skompilowanego ładunku JSON. Dla standardowych celów 2.4GHz, wykorzystuje flagę boolean, aby cicho przekierować proces ekstrakcji do standardowych folderów oprogramowania układowego FCC/ lub europejskich LBT/ podczas montażu.

Buforowanie i synchronizacja oprogramowania układowego

Dział zatytułowany „Buforowanie i synchronizacja oprogramowania układowego”

Flashowanie offline jest możliwe dzięki solidnemu lokalnemu systemowi buforowania. Gdy użytkownik pobiera wydanie za pośrednictwem Firmware Managera, FirmwareCacheService pobiera ogólne firmware.zip i specyficzne dla urządzenia hardware.zip bezpośrednio z ExpressLRS Artifactory. Archiwa te są zarządzane i przechowywane lokalnie na urządzeniu, zapewniając natychmiastowe montaż i flashowanie w terenie, bez aktywnego połączenia internetowego.


Natywne wiązanie sieciowe

Mobilne systemy operacyjne (zwłaszcza Android i iOS) obniżają priorytet połączeń Wi-Fi bez dostępu do internetu, cicho kierując ruch przez sieć komórkową. Zapobiega to dostępowi standardowych aplikacji do sprzętu ELRS pod adresem `10.0.0.1`.

ELRS Mobile rozwiązuje ten problem za pomocą `NativeNetworkService`. Gdy wykryte zostanie połączenie ze sprzętem, aplikacja wywołuje specyficzny dla platformy `MethodChannel`, aby powiązać cały proces Flutter z interfejsem Wi-Fi na poziomie jądra systemu operacyjnego. Zapewnia to, że cały ruch HTTP i mDNS jest poprawnie kierowany do sprzętu, niezależnie od statusu połączenia komórkowego.