Pular para o conteúdo

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:

1

Extrai o firmware genérico base do arquivo firmware.zip em cache.

2

Remove o preenchimento base procurando pela assinatura do byte mágico ESP 0xE9.

3

Extrai pinagens de destino específicas e configuração de tempo de execução de hardware.json.

4

Compacta o Nome do Produto (128b), Nome Lua (16b), options.json (512b) e hardware.json (2048b) diretamente no fluxo binário.

5

Compacta o payload final em um fluxo .gz se exigido pela plataforma de destino (por exemplo, ESP8285 legacy).

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.

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.