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:
Wyodrębnia bazowe, ogólne oprogramowanie układowe ze zarchiwizowanej pamięci podręcznej `firmware.zip`.
Przycina bazowe wypełnienie, szukając sygnatury magicznego bajtu ESP `0xE9`.
Wyodrębnia specyficzne dla celu pinouty i konfigurację czasu wykonania z `hardware.json`.
Pakuje nazwy produktów (128b), nazwę Lua (16b), `options.json` (512b) i `hardware.json` (2048b) bezpośrednio do strumienia binarnego.
Kompresuje ostateczny ładunek do strumienia `.gz`, jeśli jest to wymagane przez platformę docelową (np. ESP8285 legacy).
Logika peryferyjna
Dział zatytułowany „Logika peryferyjna”Iniektor domeny regulacyjnej
Dział zatytułowany „Iniektor domeny regulacyjnej”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.