Перейти к содержимому

Техническая архитектура

ELRS Mobile — это не просто web-wrapper; это нативная реализация Dart для конвейера компиляции и конфигурации ExpressLRS.

Единая сборка прошивки

Вместо того чтобы полагаться на удаленный облачный компилятор, приложение динамически собирает бинарные файлы локально на вашем устройстве. При прошивке ESP32/ESP8285 устройств FirmwareAssembler выполняет точную последовательность модификаций на битовом уровне:

1

Извлекает базовую универсальную прошивку из кэшированного архива firmware.zip.

2

Обрезает базовое заполнение путем поиска сигнатуры магического байта ESP 0xE9.

3

Извлекает специфичные для целевого устройства распиновки и конфигурацию времени выполнения из hardware.json.

4

Упаковывает в байты Product Name (128b), Lua Name (16b), options.json (512b) и hardware.json (2048b) непосредственно в бинарный поток.

5

Сжимает конечную полезную нагрузку в поток .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 трафик правильно маршрутизируется к оборудованию, независимо от состояния сотовой связи.