TREL - Plataforma
Este módulo inclui a abstração de plataforma para Thread Radio Encapsulation Link (TREL) usando DNS-SD e UDP/IPv6.
Resumo
Typedefs | |
---|---|
otPlatTrelPeerInfo | typedefstruct otPlatTrelPeerInfo Essa estrutura representa uma informação de peer TREL descoberta usando a navegação DNS-SD no nome do serviço "_trel._udp". |
Funções | |
---|---|
otPlatTrelDisable ( otInstance *aInstance) | void Esta função desabilita a camada da plataforma TREL. |
otPlatTrelEnable ( otInstance *aInstance, uint16_t *aUdpPort) | void Esta função inicializa e habilita a camada da plataforma TREL. |
otPlatTrelHandleDiscoveredPeerInfo ( otInstance *aInstance, const otPlatTrelPeerInfo *aInfo) | void Esta é uma função de retorno de chamada da camada de plataforma para relatar uma informação de peer TREL descoberta. |
otPlatTrelHandleReceived ( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength) | void Esta função é um retorno de chamada da plataforma para notificar um pacote TREL UDP recebido. |
otPlatTrelRegisterService ( otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength) | void Esta função registra um novo serviço a ser anunciado usando DNS-SD [RFC6763]. |
otPlatTrelSend ( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr) | void Esta função solicita que um pacote TREL UDP seja enviado para um determinado destino. |
Estruturas | |
---|---|
otPlatTrelPeerInfo | Essa estrutura representa uma informação de peer TREL descoberta usando a navegação DNS-SD no nome do serviço "_trel._udp". |
Typedefs
otPlatTrelPeerInfo
struct otPlatTrelPeerInfo otPlatTrelPeerInfo
Essa estrutura representa uma informação de peer TREL descoberta usando a navegação DNS-SD no nome do serviço "_trel._udp".
Funções
otPlatTrelDisable
void otPlatTrelDisable( otInstance *aInstance )
Esta função desabilita a camada da plataforma TREL.
Após essa chamada, a camada de plataforma DEVE parar o DNS-SD navegar no nome do serviço "_trel._udp", parar de anunciar o serviço TREL DNS-SD (de otPlatTrelRegisterService()
) e DEVE fechar o soquete UDP usado para receber mensagens TREL.
[in] aInstance A instância OpenThread.
otPlatTrelEnable
void otPlatTrelEnable( otInstance *aInstance, uint16_t *aUdpPort )
Esta função inicializa e habilita a camada da plataforma TREL.
Após esta chamada, a camada de plataforma DEVE realizar o seguinte:
1) A camada de plataforma TREL DEVE abrir um soquete UDP para ouvir e receber mensagens TREL de pares. O soquete está vinculado a um número de porta efêmero escolhido pela camada de plataforma. O número da porta DEVE ser retornado em aUdpPort
. O soquete também está vinculado à(s) interface(s) de rede nas quais o TREL deve ser suportado. O soquete e a porta escolhida devem permanecer válidos enquanto o TREL estiver habilitado.
2) A camada de plataforma DEVE iniciar uma navegação DNS-SD contínua no nome do serviço "_trel._udp" dentro do domínio de navegação local para descobrir outros dispositivos que suportem TREL. A navegação contínua produzirá dois tipos diferentes de eventos: eventos de "adicionar" e eventos de "remoção". Quando a navegação é iniciada, ela deve produzir um evento "add" para cada peer TREL atualmente presente na rede. Sempre que um peer TREL fica offline, um evento "remove" deve ser produzido. No entanto, os eventos de "remoção" não são garantidos. Quando uma instância de serviço TREL é descoberta, uma nova consulta DNS-SD em andamento para um registro AAAA deve ser iniciada no nome do host indicado no registro SRV da instância descoberta. Se vários endereços IPv6 de host forem descobertos para um peer, um com maior escopo entre todos os endereços DEVE ser relatado (se houver vários endereços no mesmo escopo, um deve ser selecionado aleatoriamente).
A plataforma TREL DEVE sinalizar de volta as informações do peer descoberto usando o retorno de chamada otPlatTrelHandleDiscoveredPeerInfo()
. Este retorno de chamada DEVE ser invocado quando um novo peer for descoberto, quando houver uma alteração em uma entrada existente (por exemplo, novo registro TXT ou novo número de porta ou novo endereço IPv6), ou quando o peer for removido.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
otPlatTrelHandleDiscoveredPeerInfo
void otPlatTrelHandleDiscoveredPeerInfo( otInstance *aInstance, const otPlatTrelPeerInfo *aInfo )
Esta é uma função de retorno de chamada da camada de plataforma para relatar uma informação de peer TREL descoberta.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
otPlatTrelHandleRecebido
void otPlatTrelHandleReceived( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength )
Esta função é um retorno de chamada da plataforma para notificar um pacote TREL UDP recebido.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
otPlatTrelRegisterService
void otPlatTrelRegisterService( otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength )
Esta função registra um novo serviço a ser anunciado usando DNS-SD [RFC6763].
O nome do serviço é "_trel._udp". A plataforma deve usar seu próprio nome de host, que, quando combinado com o nome do serviço e o nome de domínio DNS-SD local, produzirá o nome completo da instância do serviço, por exemplo, "example-host._trel._udp.local.".
O domínio sob o qual o nome da instância de serviço aparece será 'local' para mDNS e será qualquer domínio usado para registro de serviço no caso de um serviço DNS-SD local não mDNS.
Uma chamada subsequente para essa função atualiza o serviço anterior. É usado para atualizar os dados do registro TXT e/ou o número da porta.
O buffer aTxtData
não é persistido após o retorno desta função. A camada de plataforma NÃO DEVE manter o ponteiro e, em vez disso, copiar o conteúdo, se necessário.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
otPlatTrelSend
void otPlatTrelSend( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr )
Esta função solicita que um pacote TREL UDP seja enviado para um determinado destino.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
Recursos
Os tópicos de referência da API OpenThread se originam do código-fonte, disponível no GitHub . Para obter mais informações ou contribuir com nossa documentação, consulte Recursos .