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 typedef
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
[in] aInstance
A instância do OpenThread.
[out] aUdpPort
Um ponteiro para retornar o número da porta selecionado por camada de plataforma.

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
[in] aInstance
A instância do OpenThread.
[in] aInfo
Um ponteiro para as informações do peering TREL.

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
[in] aInstance
A estrutura da instância do OpenThread.
[in] aBuffer
Um buffer contendo o payload UDP recebido.
[in] aLength
Comprimento do payload UDP (número de bytes).

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
[in] aInstance
A instância do OpenThread.
[in] aPort
O número da porta a ser incluído no registro SRV do serviço anunciado.
[in] aTxtData
Um indicador para os dados do registro TXT (codificados) a serem incluídos no serviço anunciado.
[in] aTxtLength
O comprimento de aTxtData (número de bytes).

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
[in] aInstance
A estrutura da instância do OpenThread.
[in] aUdpPayload
Um ponteiro para o payload UDP.
[in] aUdpPayloadLen
O comprimento do payload (número de bytes).
[in] aDestSockAddr
O endereço do soquete de destino.

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.