TREL – Plataforma
Este módulo inclui a abstração da plataforma para o Thread Encapsulation Link (TREL) usando DNS-SD e UDP/IPv6.
Resumo
Typedefs |
|
---|---|
otPlatTrelPeerInfo
|
typedefstruct otPlatTrelPeerInfo
Essa estrutura representa uma informação de peering do TREL descoberto usando a navegação DNS-SD no nome do serviço "_trel._udp". |
Functions |
|
---|---|
otPlatTrelDisable(otInstance *aInstance)
|
void
Essa função desativa a camada da plataforma TREL.
|
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
|
void
Essa função inicializa e ativa a camada da plataforma TREL.
|
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
|
void
Esta é uma função de callback da camada da plataforma para informar sobre uma descoberta de informações de TREL semelhante.
|
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
|
void
Essa função é 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
Essa função registra um novo serviço que será anunciado usando o DNS-SD [RFC6763].
|
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
|
void
Essa função solicita que um pacote TREL UDP seja enviado para um determinado destino.
|
Estruturas |
|
---|---|
otPlatTrelPeerInfo (em inglês) |
Essa estrutura representa uma informação de peering do TREL descoberto 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 peering do TREL descoberto usando a navegação DNS-SD no nome do serviço "_trel._udp".
Functions
OtPlatTrelDisable
void otPlatTrelDisable( otInstance *aInstance )
Essa função desativa a camada da plataforma TREL.
Após essa chamada, a camada da plataforma PRECISA interromper a busca DNS-SD no nome do serviço "_trel._udp" e interromper a publicidade do serviço TREL DNS-SD (de otPlatTrelRegisterService()
) e PRECISA fechar o soquete UDP usado para receber mensagens TREL.
[in] aInstance da instância do OpenThread
OtPlatTrelEnable
void otPlatTrelEnable( otInstance *aInstance, uint16_t *aUdpPort )
Essa função inicializa e ativa a camada da plataforma TREL.
Nessa chamada, a camada da plataforma PRECISA realizar as seguintes ações:
1) A camada da plataforma TREL PRECISA abrir um soquete UDP para fazer isso. O soquete está vinculado a uma porta temporária escolhida pela camada da plataforma. O número da porta PRECISA ser retornado em aUdpPort
. O soquete também está vinculado às interfaces de rede em que o TREL será compatível. 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 do 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: "add" e "remove". Quando a navegação é iniciada, ela deve produzir um evento "add" para cada peering TREL presente na rede. Sempre que um ponto TREL ficar off-line, um evento "remove" deverá ser produzido. No entanto, não é garantido que os eventos "quoquo;remove" Quando uma instância de serviço TREL é descoberta, uma nova consulta DNS-SD em andamento para um registro AAAA precisa 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 par, PRECISAM ser um que tenha o escopo mais alto entre todos os endereços (se houver vários endereços no mesmo escopo, será preciso selecionar um 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 mudança em uma entrada existente (por exemplo, um novo registro TXT, um novo número de porta ou um novo endereço IPv6) ou quando o peering é removido.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OtPlatTrelHandleDiscoveredPeerInfo
void otPlatTrelHandleDiscoveredPeerInfo( otInstance *aInstance, const otPlatTrelPeerInfo *aInfo )
Esta é uma função de callback da camada da plataforma para informar sobre uma descoberta de informações de TREL semelhante.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
otPlatTrelHandleReceived
void otPlatTrelHandleReceived( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength )
Essa função é 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 )
Essa função registra um novo serviço que será anunciado usando o DNS-SD [RFC6763].
O nome do serviço é "_trel._udp". A plataforma deve usar o 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 de serviço, por exemplo, "example-host._trel._udp.local.".
O domínio em que o nome da instância de serviço aparece é "m" e "qualquer um" para o mDNS e será qualquer domínio usado para o registro de serviço no caso de um serviço local de DNS-SD 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 da 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 )
Essa 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 são originados do código-fonte, disponível no GitHub. Para saber mais ou contribuir com nossa documentação, consulte Recursos.