Você vai ter este zilhão de rádios num espaço físico muito pequeno? Qual a distribuição? Por que isto é fundamental pra bolar a solução.
As aplicações de rádio mais complexas hoje, quando estão em um ambiente com muito ruído ou muitos "players", automaticamente configuram pra usar vários canais, etc., o que aumenta a chance de sucesso na troca de dados, mas tudo tem um limite. Por outro lado, se eles ficaram espalhados por uma área grande, o esquema é usar alguma arquitetura mesh mesmo. Só que tudo é um tradeoff, numa rede mesh tradicional vc troca aumento na probabilidade de sucesso em transmitir dados a uma distância superior, por latência. As vezes é isto que vc quer, e tem casos extremos em que usar store-and-forward (armazenar localmente os pacotes lidos mas destinados a outro device, e tentar reenviar por um tempo mais ou menos longo) , por ex. quando a "densidade demográfica" é muito baixa, ou quando os dispositivos são móveis, etc., acaba sendo tua única saída, e dependendo da aplicação isto não serve. Dependendo da aplicação (perda de pacotes relativamente tolerável, mas intolerante à latência ou ao jitter), qualquer solução mesh fica difícil de implementar.
O fato é que em rádio nada existe de graça, toda arquitetura genérica (pau pra toda obra) acaba sendo ineficiente em certos casos, e toda arquitetura muito específica acaba não funcionando bem quando colocada numa situação muito diferente da que foi projetada. Seria interessante pensar nas funções necessárias como um todo antes de escolher a abordagem.
Projetei um esquema usando um rádio 802.15.4 (aquele mrfj 2440, se lembro bem), o bacana é que ele tinha uns recursos legais, como a tua aplicação poder solicitar ou não, por pacote, que o outro lado enviasse um acnowledgement do recebimento, verificação do checksum, detecção de colisão [vários rádios falando ao mesmo tempo] e retransmissão automática, tudo feito pelo próprio rádio, o que além de baixar a latência, te libera de implementar isto.
A aplicação funcionava bem em bancada, e fiz alguns testes de campo, porém o cliente - depois de tudo bem adiantado - decidiu que iria querer transmitir quantidades absurdas de dados - mesmo eu tendo explicado que isto não era o foco inicial da aplicação. Legal me contar isto nesta etapa do projeto. Eu fiz uma conta rápida na calculadora e falei pra ele "olha, mesmo que eu comprima os dados em 10:1, o que não dá pra garantir, ainda vai levar tipo 4 horas pra transmitir isso aí, se não tivermos muitas perdas de pacote". O resultado é o que cliente surtou e o projeto está na gaveta faz mais de ano. Se recusa a fazer a reengenharia do processo, toda vez que falo com ele, troca de assunto. Coisas da vida
