Техническая архитектура
ELRS Mobile — это не просто web-wrapper; это нативная реализация Dart для конвейера компиляции и конфигурации ExpressLRS.
Единая сборка прошивки
Вместо того чтобы полагаться на удаленный облачный компилятор, приложение динамически собирает бинарные файлы локально на вашем устройстве. При прошивке ESP32/ESP8285 устройств FirmwareAssembler выполняет точную последовательность модификаций на битовом уровне:
Извлекает базовую универсальную прошивку из кэшированного архива firmware.zip.
Обрезает базовое заполнение путем поиска сигнатуры магического байта ESP 0xE9.
Извлекает специфичные для целевого устройства распиновки и конфигурацию времени выполнения из hardware.json.
Упаковывает в байты Product Name (128b), Lua Name (16b), options.json (512b) и hardware.json (2048b) непосредственно в бинарный поток.
Сжимает конечную полезную нагрузку в поток .gz, если это требуется целевой платформой (например, ESP8285 legacy).
Периферийная логика
Заголовок раздела «Периферийная логика»Инжектор регуляторного домена
Заголовок раздела «Инжектор регуляторного домена»Приложение точно обрабатывает сложные различия между частотными диапазонами. Для устройств 900MHz/Dual-Band оно активно внедряет выбранный вами домен (например, FCC, EU868) в скомпилированную полезную нагрузку JSON. Для стандартных целей 2.4GHz оно использует булевый флаг для скрытой маршрутизации процесса извлечения либо в папки базовой прошивки стандартного FCC/, либо европейского LBT/ во время сборки.
Кэширование и синхронизация прошивки
Заголовок раздела «Кэширование и синхронизация прошивки»Автономная прошивка становится возможной благодаря надежной локальной системе кэширования. Когда пользователь загружает релиз через Firmware Manager, FirmwareCacheService извлекает универсальный firmware.zip и специфичный для устройства hardware.zip непосредственно из ExpressLRS Artifactory. Эти архивы управляются и хранятся локально на устройстве, обеспечивая мгновенную сборку и прошивку в полевых условиях без активного подключения к Интернету.
Нативная привязка к сети
Мобильные операционные системы (особенно Android и iOS) снижают приоритет Wi-Fi соединений, не имеющих доступа к Интернету, безмолвно перенаправляя трафик через сотовую сеть. Это не позволяет стандартным приложениям достигать оборудования ELRS по адресу 10.0.0.1.
ELRS Mobile решает эту проблему с помощью NativeNetworkService. Когда обнаруживается аппаратное соединение, приложение вызывает специфичный для платформы MethodChannel для привязки всего процесса Flutter к интерфейсу Wi-Fi на уровне ядра ОС. Это гарантирует, что весь HTTP и mDNS трафик правильно маршрутизируется к оборудованию, независимо от состояния сотовой связи.