Arquitetura Técnica
ELRS Mobile não é apenas um web-wrapper; é uma implementação nativa em Dart do pipeline de compilação e configuração do ExpressLRS.
Montagem Unificada de Firmware
Em vez de depender de um compilador remoto na nuvem, o aplicativo constrói dinamicamente binários localmente no seu dispositivo. Ao fazer o flash em alvos ESP32/ESP8285, o FirmwareAssembler executa uma sequência precisa de modificação em nível de bit:
Extrai o firmware genérico base do arquivo firmware.zip em cache.
Remove o preenchimento base procurando pela assinatura do byte mágico ESP 0xE9.
Extrai pinagens de destino específicas e configuração de tempo de execução de hardware.json.
Compacta o Nome do Produto (128b), Nome Lua (16b), options.json (512b) e hardware.json (2048b) diretamente no fluxo binário.
Compacta o payload final em um fluxo .gz se exigido pela plataforma de destino (por exemplo, ESP8285 legacy).
Lógica Periférica
Seção intitulada “Lógica Periférica”Injetor de Domínio Regulatório
Seção intitulada “Injetor de Domínio Regulatório”O aplicativo lida com precisão com as complexas diferenças entre as bandas de frequência. Para dispositivos de 900MHz/Dual-Band, ele injeta ativamente o domínio escolhido (por exemplo, FCC, EU868) no payload JSON compilado. Para alvos padrão de 2.4GHz, ele utiliza um flag booleano para rotear silenciosamente o processo de extração para as pastas de firmware base padrão FCC/ ou LBT/ europeu durante a montagem.
Cache e Sincronização de Firmware
Seção intitulada “Cache e Sincronização de Firmware”O flash offline é possível através de um robusto sistema de cache local. Quando um usuário baixa uma versão através do Gerenciador de Firmware, o FirmwareCacheService puxa o firmware.zip genérico e o hardware.zip específico do dispositivo diretamente do Artifactory do ExpressLRS. Esses arquivos são gerenciados e armazenados localmente no dispositivo, garantindo que a montagem e o flash possam ocorrer instantaneamente em campo sem qualquer conexão ativa com a internet.
Ligação de Rede Nativa
Sistemas operacionais móveis (especialmente Android e iOS) despriorizam conexões Wi-Fi que não têm acesso à internet, roteando o tráfego silenciosamente pela rede celular. Isso impede que aplicativos padrão alcancem o hardware ELRS em 10.0.0.1.
O ELRS Mobile resolve isso através do NativeNetworkService. Quando uma conexão de hardware é detectada, o aplicativo invoca um MethodChannel específico da plataforma para vincular todo o processo Flutter à interface Wi-Fi no nível do kernel do sistema operacional. Isso garante que todo o tráfego HTTP e mDNS seja roteado corretamente para o hardware, independentemente do status da rede celular.