Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

TREL - Piattaforma

Questo modulo include l'astrazione della piattaforma per Thread Radio Encapsulation Link (TREL) utilizzando DNS-SD e UDP/IPv6.

Riepilogo

Typedef

otPlatTrelPeerInfo typedef
Questa struttura rappresenta un'informazione TREL peer rilevata usando il servizio DNS-SD per il servizio "_trel._udp".

Functions

otPlatTrelDisable(otInstance *aInstance)
void
Questa funzione disattiva il livello piattaforma TREL.
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
void
Questa funzione inizializza e abilita il livello della piattaforma TREL.
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
void
Questa è una funzione di callback dal livello della piattaforma per segnalare le informazioni peer trovate per TREL.
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
void
Questa funzione è un callback dalla piattaforma per avvisare di un pacchetto TREL UDP ricevuto.
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
void
Questa funzione registra un nuovo servizio da pubblicizzare tramite DNS-SD [RFC6763].
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
void
Questa funzione richiede l'invio di un pacchetto TREL UDP a una determinata destinazione.

Punti ristoro

otPlatTrelPeerInfo

Questa struttura rappresenta un'informazione TREL peer rilevata usando il servizio DNS-SD per il servizio "_trel._udp".

Typedef

otPlatTrelPeerInfo

struct otPlatTrelPeerInfo otPlatTrelPeerInfo

Questa struttura rappresenta le informazioni peer TREL rilevate mediante la navigazione DNS-SD del nome del servizio "_trel._udp".

Functions

otPlatTrelDisable

void otPlatTrelDisable(
  otInstance *aInstance
)

Questa funzione disattiva il livello piattaforma TREL.

Dopo questa chiamata, il livello della piattaforma DEVE interrompere la navigazione DNS-SD sul nome del servizio "_trel._udp", interrompere la pubblicità del servizio TREL DNS-SD (da otPlatTrelRegisterService()) e DEVE chiudere il socket UDP utilizzato per ricevere i messaggi TREL.

[in] aInstance l'istanza OpenThread.

otPlatTrelEnable

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

Questa funzione inizializza e abilita il livello della piattaforma TREL.

In questa chiamata, il livello della piattaforma DEVE eseguire le seguenti operazioni:

1) Il livello della piattaforma TREL DEVE aprire un socket UDP per ascoltare e ricevere i messaggi TREL dai peer. Il socket è associato a un numero di porta temporaneo scelto dal livello della piattaforma. Il numero di porta DEVE essere restituito in aUdpPort. Il socket è anche associato alle interfacce di rete su cui deve essere supportato il TREL. Il socket e la porta selezionati devono rimanere validi mentre TREL è abilitato.

2) Il livello della piattaforma DEVE avviare una navigazione DNS-SD in corso sul nome del servizio "_trel._udp" all'interno del dominio di navigazione locale per scoprire altri dispositivi che supportano TREL. L'esplorazione in corso produrrà due diversi tipi di eventi: eventi di "aggiunta" e eventi di "rimozione". Quando la navigazione viene avviata, dovrebbe generare un evento "add" per ogni peer TREL attualmente presente sulla rete. Ogni volta che un peer TREL passa alla modalità offline, dovrebbe essere generato un evento di rimozione. Tuttavia, gli eventi di rimozione non sono garantiti. Quando viene rilevata un'istanza di servizio TREL, è necessario avviare una nuova query DNS-SD in corso per un record AAAA sul nome host indicato nel record SRV dell'istanza rilevata. Se vengono rilevati più indirizzi IPv6 host per un peer, ne viene indicato uno con l'ambito più elevato tra tutti gli indirizzi (se esistono più indirizzi nello stesso ambito, uno deve essere selezionato in modo casuale).

La piattaforma TREL DEVE segnalare le informazioni peer rilevate tramite il callback otPlatTrelHandleDiscoveredPeerInfo(). Questo callback DEVE essere richiamato quando viene rilevato un nuovo peer, quando si verifica una modifica in una voce esistente (ad esempio un nuovo record TXT o nuovo numero di porta o nuovo indirizzo IPv6) o quando il peer viene rimosso.

Dettagli
Parametri
[in] aInstance
L'istanza OpenThread.
[out] aUdpPort
Un puntatore per restituire il numero di porta selezionato in base al livello della piattaforma.

otPlatTrelHandleDiscoveredPeerInfo

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

Questa è una funzione di callback dal livello della piattaforma per segnalare le informazioni peer trovate per TREL.

Dettagli
Parametri
[in] aInstance
L'istanza OpenThread.
[in] aInfo
Un suggerimento relativo alle informazioni sui peer TREL.

OtPlatTrelHandle Ricevuta

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

Questa funzione è un callback dalla piattaforma per avvisare di un pacchetto TREL UDP ricevuto.

Dettagli
Parametri
[in] aInstance
Struttura dell'istanza OpenThread.
[in] aBuffer
Un buffer contenente il payload UDP ricevuto.
[in] aLength
Lunghezza del payload UDP (numero di byte).

otPlatTrelRegisterService

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

Questa funzione registra un nuovo servizio da pubblicizzare tramite DNS-SD [RFC6763].

Il nome del servizio è "_trel._udp". La piattaforma deve utilizzare il proprio nome host, che, se combinato con il nome del servizio e il nome di dominio DNS-SD locale, produce il nome completo dell'istanza di servizio, ad esempio "example-host._trel._udp.local.".

Il dominio in cui appare il nome dell'istanza di servizio sarà "locale" per mDNS e sarà qualsiasi dominio utilizzato per la registrazione del servizio in caso di un servizio DNS-SD locale non mDNS.

Una chiamata successiva a questa funzione aggiorna il servizio precedente. Viene utilizzato per aggiornare i dati del record TXT e/o il numero di porta.

Il buffer aTxtData non viene mantenuto dopo il ritorno da questa funzione. Il livello della piattaforma NON DEVE conservare il puntatore e copiare i contenuti, se necessario.

Dettagli
Parametri
[in] aInstance
L'istanza OpenThread.
[in] aPort
Il numero di porta da includere nel record SRV del servizio pubblicizzato.
[in] aTxtData
Un puntatore ai dati del record TXT (codificati) da includere nel servizio pubblicizzato.
[in] aTxtLength
La lunghezza di aTxtData (numero di byte).

otPlatTrelInvia

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

Questa funzione richiede l'invio di un pacchetto TREL UDP a una determinata destinazione.

Dettagli
Parametri
[in] aInstance
Struttura dell'istanza OpenThread.
[in] aUdpPayload
Un puntatore al payload UDP.
[in] aUdpPayloadLen
La lunghezza del payload (numero di byte).
[in] aDestSockAddr
L'indirizzo del socket di destinazione.

Risorse

Gli argomenti di riferimento dell'API OpenThread provengono dal codice sorgente, disponibile su GitHub. Per ulteriori informazioni, o per contribuire alla nostra documentazione, consulta la pagina Risorse.