TREL - Plataforma

Este módulo incluye la abstracción de plataforma para Thread Radio encapsulation Link (TREL) con DNS-SD y UDP/IPv6.

Resumen

Typedefs

otPlatTrelPeerInfo typedef
Representa una información de par de TREL que se descubrió mediante la navegación de DNS-SD en el nombre de servicio "_trel._udp".

remotas

otPlatTrelDisable(otInstance *aInstance)
void
Inhabilita la capa de la plataforma TREL.
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
void
Inicializa y habilita la capa de la plataforma TREL.
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
void
Esta es una función de devolución de llamada de la capa de la plataforma para informar una información de pares de TREL descubierto.
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
void
Es una devolución de llamada de la plataforma para notificar sobre un paquete TREL UDP recibido.
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
void
Registra un nuevo servicio para anunciar con DNS-SD [RFC6763].
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
void
Solicita que se envíe un paquete UDP de TREL a un destino determinado.

Structs

otPlatTrelPeerInfo

Representa una información de par de TREL que se descubrió mediante la navegación de DNS-SD en el nombre de servicio "_trel._udp".

Typedefs

otPlatTrelPeerInfo

struct otPlatTrelPeerInfo otPlatTrelPeerInfo

Representa una información de par de TREL que se descubrió mediante la navegación de DNS-SD en el nombre de servicio "_trel._udp".

remotas

otPlatTrelDisable

void otPlatTrelDisable(
  otInstance *aInstance
)

Inhabilita la capa de la plataforma TREL.

Después de esta llamada, la capa de la plataforma DEBE detener la navegación de DNS-SD en el nombre de servicio "_trel._udp", dejar de anunciar el servicio DNS-SD de TREL (de otPlatTrelRegisterService()) y DEBE cerrar el socket UDP utilizado para recibir los mensajes TREL.

[in] aInstance La instancia de OpenThread.

otPlatTrelEnable

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

Inicializa y habilita la capa de la plataforma TREL.

Después de esta llamada, la capa de la plataforma DEBE realizar lo siguiente:

1) La capa de la plataforma TREL DEBE abrir un socket UDP para escuchar y recibir mensajes TREL de pares. El socket está vinculado a un número de puerto efímero que elige la capa de la plataforma. El número de puerto se DEBE devolver en aUdpPort. El socket también está vinculado a las interfaces de red en las que se admitirá TREL. El socket y el puerto elegido deben seguir siendo válidos mientras TREL está habilitado.

2) La capa de la plataforma DEBE iniciar una navegación de DNS-SD en curso en el nombre del servicio "_trel._udp" dentro del dominio de navegación local para descubrir otros dispositivos compatibles con TREL. La navegación continua producirá dos tipos de eventos diferentes: eventos "agregar" y eventos "quitar". Cuando se inicia la navegación, debe producir un evento "add" para cada par TREL actualmente presente en la red. Cada vez que un par de TREL se desconecta, se debe producir un evento "remove". Sin embargo, los eventos de eliminación no están garantizados. Cuando se descubre una instancia de servicio de TREL, se debe iniciar una nueva consulta de DNS-SD en curso para un registro AAAA en el nombre de host indicado en el registro SRV de la instancia descubierta. Si se descubren varias direcciones IPv6 de host para un par, se DEBE informar una con el mayor alcance entre todas las direcciones (si hay varias direcciones en el mismo alcance, se debe seleccionar una al azar).

La plataforma TREL DEBE indicar la información de pares descubierta mediante la devolución de llamada otPlatTrelHandleDiscoveredPeerInfo(). Esta devolución de llamada DEBE invocarse cuando se detecta un par nuevo, cuando se produce un cambio en una entrada existente (p.ej., un registro TXT nuevo, un número de puerto nuevo o una dirección IPv6 nueva) o cuando se quita el par.

Detalles
Parámetros
[in] aInstance
La instancia de OpenThread.
[out] aUdpPort
Un puntero para mostrar el número de puerto seleccionado por capa de la plataforma.

otPlatTrelHandleDiscoveredPeerInfo

void otPlatTrelHandleDiscoveredPeerInfo(
  otInstance *aInstance,
  const otPlatTrelPeerInfo *aInfo
)

Esta es una función de devolución de llamada de la capa de la plataforma para informar una información de pares de TREL descubierto.

Detalles
Parámetros
[in] aInstance
La instancia de OpenThread.
[in] aInfo
Un puntero para la información de pares de TREL.

otPlatTrelHandleReceived

void otPlatTrelHandleReceived(
  otInstance *aInstance,
  uint8_t *aBuffer,
  uint16_t aLength
)

Es una devolución de llamada de la plataforma para notificar sobre un paquete TREL UDP recibido.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aBuffer
Un búfer que contiene la carga útil UDP recibida.
[in] aLength
Longitud de la carga útil de UDP (cantidad de bytes).

otPlatTrelRegisterService

void otPlatTrelRegisterService(
  otInstance *aInstance,
  uint16_t aPort,
  const uint8_t *aTxtData,
  uint8_t aTxtLength
)

Registra un nuevo servicio para anunciar con DNS-SD [RFC6763].

El nombre del servicio es "_trel._udp". La plataforma debe usar su propio nombre de host, el cual, combinado con el nombre del servicio y el nombre de dominio DNS-SD local, producirá el nombre completo de la instancia de servicio, por ejemplo, "example-host._trel._udp.local.".

El dominio bajo el que aparece el nombre de la instancia de servicio será "local" para mDNS y será el dominio que se use para el registro del servicio en el caso de un servicio DNS-SD local que no sea mDNS.

Una llamada posterior a esta función actualiza el servicio anterior. Se usa para actualizar los datos del registro TXT o el número de puerto.

El búfer aTxtData no se conserva después de la devolución de esta función. La capa de la plataforma NO DEBE mantener el puntero y, en su lugar, copiar el contenido si es necesario.

Detalles
Parámetros
[in] aInstance
La instancia de OpenThread.
[in] aPort
El número de puerto que se debe incluir en el registro SRV del servicio anunciado.
[in] aTxtData
Un puntero para los datos del registro TXT (codificados) que se incluirán en el servicio anunciado.
[in] aTxtLength
La longitud de aTxtData (cantidad de bytes).

otPlatTrelSend

void otPlatTrelSend(
  otInstance *aInstance,
  const uint8_t *aUdpPayload,
  uint16_t aUdpPayloadLen,
  const otSockAddr *aDestSockAddr
)

Solicita que se envíe un paquete UDP de TREL a un destino determinado.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aUdpPayload
Un puntero para la carga útil UDP.
[in] aUdpPayloadLen
La longitud de la carga útil (cantidad de bytes).
[in] aDestSockAddr
La dirección del socket de destino.

Recursos

Los temas de referencia de la API de OpenThread se originan a partir del código fuente, disponible en GitHub. Para obtener más información o contribuir a nuestra documentación, consulta Recursos.