TREL: plataforma
Este módulo inclui a abstração da plataforma para link de encapsulamento de rádio Thread (TREL, na sigla em inglês) usando DNS-SD e UDP/IPv6.
Resumo
Typedefs |
|
---|---|
otPlatTrelPeerInfo
|
typedefstruct otPlatTrelPeerInfo
Representa uma informação de peering TREL descoberta usando a navegação DNS-SD no nome do serviço "_trel._udp". |
remotas |
|
---|---|
otPlatTrelDisable(otInstance *aInstance)
|
void
Desativa a camada de plataforma TREL.
|
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
|
void
Inicializa e ativa a camada de plataforma TREL.
|
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
|
void
Essa é uma função de callback da camada da plataforma para relatar uma informação de peering TREL descoberta.
|
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
|
void
É um callback da plataforma para notificar sobre um pacote TREL UDP recebido.
|
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
|
void
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
Solicita que um pacote TREL UDP seja enviado a um determinado destino.
|
Estruturas |
|
---|---|
otPlatTrelPeerInfo |
Representa uma informação de peering TREL descoberta usando a navegação DNS-SD no nome do serviço "_trel._udp". |
Typedefs
otPlatTrelPeerInfo
struct otPlatTrelPeerInfo otPlatTrelPeerInfo
Representa uma informação de peering TREL descoberta usando a navegação DNS-SD no nome do serviço "_trel._udp".
remotas
otPlatTrelDisable
void otPlatTrelDisable( otInstance *aInstance )
Desativa a camada de plataforma TREL.
Após essa chamada, a camada de plataforma PRECISA interromper a navegação DNS-SD no nome de serviço "_trel._udp", parar de anunciar o serviço DNS-SD TREL (de otPlatTrelRegisterService()
) e PRECISAR fechar o soquete UDP usado para receber mensagens TREL.
[in] aInstance A instância do OpenThread.
otPlatTrelEnable
void otPlatTrelEnable( otInstance *aInstance, uint16_t *aUdpPort )
Inicializa e ativa a camada de plataforma TREL.
Nessa chamada, a camada de plataforma PRECISA realizar o seguinte:
1) A camada de plataforma TREL PRECISA abrir um soquete UDP para detectar e receber mensagens TREL de pares. O soquete está vinculado a um número de porta temporário escolhido pela camada de plataforma. O número da porta PRECISA ser retornado em aUdpPort
. O soquete também está vinculado a interfaces de rede com suporte ao TREL. O soquete e a porta escolhida precisam permanecer válidos enquanto o TREL estiver ativado.
2) A camada de plataforma PRECISA iniciar uma navegação DNS-SD em andamento no nome de serviço "_trel._udp" no domínio de navegação local para descobrir outros dispositivos compatíveis com TREL. A navegação em andamento produzirá dois tipos diferentes de eventos: "adicionar" e "remover". Quando a navegação é iniciada, ela precisa produzir um evento "add" para cada peering TREL presente na rede. Sempre que um peering TREL fica off-line, é necessário produzir um evento "remover". No entanto, eventos "remove" não são garantidos. Quando uma instância de serviço TREL é descoberta, é preciso iniciar uma nova consulta DNS-SD em andamento para um registro AAAA no nome do host indicado no registro SRV da instância descoberta. Se vários endereços IPv6 do host forem descobertos para um par, um deles com o maior escopo entre todos os endereços PRECISA ser informado. Se houver vários endereços IPv6 no mesmo escopo, um deles deverá ser selecionado aleatoriamente.
A plataforma TREL PRECISA sinalizar as informações de peering descobertas usando o callback otPlatTrelHandleDiscoveredPeerInfo()
. Esse callback PRECISA ser invocado quando um novo peering é descoberto, quando há uma alteração em uma entrada atual (por exemplo, um novo registro TXT ou um novo número de porta ou novo endereço IPv6) ou quando o peering é removido.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
otPlatTrelHandleDiscoveredPeerInfo
void otPlatTrelHandleDiscoveredPeerInfo( otInstance *aInstance, const otPlatTrelPeerInfo *aInfo )
Essa é uma função de callback da camada da plataforma para relatar uma informação de peering TREL descoberta.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
otPlatTrelHandleReceived
void otPlatTrelHandleReceived( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength )
É um callback da plataforma para notificar sobre um pacote TREL UDP recebido.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
otPlatTrelRegisterService
void otPlatTrelRegisterService( otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength )
Registra um novo serviço a ser anunciado usando DNS-SD [RFC6763].
O nome do serviço é "_trel._udp". A plataforma deve usar o próprio nome do 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 em que o nome da instância de serviço aparece será "local" para o mDNS e será qualquer domínio usado para o registro de serviço no caso de um serviço DNS-SD local que não seja mDNS.
Uma chamada subsequente para essa função atualiza o serviço anterior. Ele é usado para atualizar os dados do registro TXT e/ou o número da porta.
O buffer aTxtData
não é mantido após o retorno dessa função. A camada de plataforma NÃO pode manter o ponteiro e 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 )
Solicita que um pacote TREL UDP seja enviado a um determinado destino.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
Recursos
Os tópicos de Referência da API OpenThread são originados do código-fonte, disponível no GitHub. Para mais informações ou para contribuir com nossa documentação, consulte Recursos.