TREL - Plataforma
En este módulo, se incluye la abstracción de la plataforma para Thread Radio Encapsulation Link (TREL) mediante DNS-SD y UDP/IPv6.
Resumen
Typedefs |
|
---|---|
otPlatTrelPeerInfo
|
typedefstruct otPlatTrelPeerInfo
Esta estructura representa una información de intercambio de tráfico TREL descubierto mediante la exploración de DNS-SD en el nombre del servicio "_trel._udp". |
Functions |
|
---|---|
otPlatTrelDisable(otInstance *aInstance)
|
void
Esta función inhabilita la capa de la plataforma TREL.
|
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
|
void
Esta función 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 la información de un par de TREL descubierto.
|
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
|
void
Esta función 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
Esta función registra un servicio nuevo que se anunciará mediante DNS-SD [RFC6763].
|
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
|
void
Esta función solicita que se envíe un paquete TREL UDP a un destino determinado.
|
Structs |
|
---|---|
OtPlatTrelPeerInfo |
Esta estructura representa una información de intercambio de tráfico TREL descubierto mediante la exploración de DNS-SD en el nombre del servicio "_trel._udp". |
Typedefs
otPlatTrelPeerInfo
struct otPlatTrelPeerInfo otPlatTrelPeerInfo
Esta estructura representa una información de intercambio de tráfico TREL descubierto mediante la exploración de DNS-SD en el nombre del servicio "_trel._udp".
Functions
OtPlatTrelDisable
void otPlatTrelDisable( otInstance *aInstance )
Esta función inhabilita la capa de la plataforma TREL.
Después de esta llamada, la capa de la plataforma DEBE detener la exploración de DNS-SD en el nombre del servicio (dejar de anunciar el servicio de TREL DNS-SD) y otPlatTrelRegisterService()
DEBE cerrar el socket UDP que se usa para recibir los mensajes de TREL.
[in] aInstance La instancia de OpenThread
OtPlatTrelEnable
void otPlatTrelEnable( otInstance *aInstance, uint16_t *aUdpPort )
Esta función 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 de TREL de los 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 mostrar en aUdpPort
. El socket también está vinculado a interfaces de red en las que se admitirá TREL. El socket y el puerto elegido deben permanecer válidos mientras TREL está habilitado.
2) La capa de la plataforma DEBE iniciar una navegación DNS-SD continua en el nombre del servicio (para descubrir otros dispositivos que admiten TREL) dentro del nombre del servicio. La exploración en curso producirá dos tipos diferentes de eventos: "add" events y "remove" Cuando se inicia la navegación, se debería producir un evento "&addt" para cada par de TREL que esté actualmente en la red. Cuando un par TREL se desconecta, se debe producir un evento "Quitar". Sin embargo, no se pueden quitar los eventos. Cuando se detecta una instancia de servicio de TREL, se debe iniciar una nueva consulta en curso de DNS-SD para un registro AAAA en el nombre de host que se indica en el registro SRV de la instancia descubierta. Si se descubren varias direcciones IPv6 de host para un par, se debe informar uno con el alcance más alto 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 par descubierta mediante la devolución de llamada otPlatTrelHandleDiscoveredPeerInfo()
. Esta devolución de llamada DEBE invocarse cuando se detecta un nuevo par, cuando hay un cambio en una entrada existente (p.ej., un nuevo registro TXT o un nuevo número de puerto o dirección IPv6 nueva), o cuando se quita el par.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
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 la información de un par de TREL descubierto.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
OtPlatTrelHandleReceived
void otPlatTrelHandleReceived( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength )
Esta función es una devolución de llamada de la plataforma para notificar sobre un paquete TREL UDP recibido.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
otPlatTrelRegisterService
void otPlatTrelRegisterService( otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength )
Esta función registra un servicio nuevo que se anunciará mediante DNS-SD [RFC6763].
El nombre del servicio es &tt;_trel._udp". La plataforma debe usar su propio nombre de host, que, cuando se combine con el nombre del servicio y el nombre de dominio local de DNS-SD, generará el nombre completo de la instancia del servicio, por ejemplo, "example-host._trel._udp.local."
El dominio en el que aparece el nombre de la instancia de servicio será mDNS (local) para mDNS y será el dominio que se use para el registro del servicio en el caso de un servicio de DNS-SD local que no sea de DNS.
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 persiste después de que se muestra esta función. La capa de la plataforma NO DEBE mantener el puntero y, en su lugar, copia el contenido si es necesario.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
OtPlatTrelSend
void otPlatTrelSend( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr )
Esta función solicita que se envíe un paquete TREL UDP a un destino determinado.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
Recursos
Los temas de referencia de la API de OpenThread se originan en el código fuente, disponible en GitHub. Para obtener más información o colaborar con nuestra documentación, consulta Recursos.