TREL - Piattaforma

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

Riepilogo

Typedef

otPlatTrelPeerInfo typedef
Rappresenta le informazioni peer TREL rilevate utilizzando la navigazione DNS-SD per il nome del servizio "_trel._udp".

Funzioni

otPlatTrelDisable(otInstance *aInstance)
void
Disattiva il livello della piattaforma TREL.
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
void
Inizializza e abilita il livello della piattaforma TREL.
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
void
Questa è una funzione di callback del livello piattaforma per segnalare informazioni sulle app peer TREL rilevate.
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
void
È un callback dalla piattaforma per notificare la ricezione di un pacchetto TREL UDP.
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
void
Registra un nuovo servizio da pubblicizzare utilizzando DNS-SD [RFC6763].
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
void
Richiedi l'invio di un pacchetto TREL UDP a una determinata destinazione.

Strutture

otPlatTrelPeerInfo

Rappresenta le informazioni peer TREL rilevate utilizzando la navigazione DNS-SD per il nome del servizio "_trel._udp".

Typedef

otPlatTrelPeerInfo

struct otPlatTrelPeerInfo otPlatTrelPeerInfo

Rappresenta le informazioni peer TREL rilevate utilizzando la navigazione DNS-SD per il nome del servizio "_trel._udp".

Funzioni

otPlatTrelDisable

void otPlatTrelDisable(
  otInstance *aInstance
)

Disattiva il livello della piattaforma TREL.

Dopo questa chiamata, il livello della piattaforma DEVE interrompere la consultazione di DNS-SD sul nome di servizio "_trel._udp", interrompere la pubblicità del servizio DNS-SD TREL (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
)

Inizializza e abilita il livello della piattaforma TREL.

Durante la chiamata, il livello della piattaforma DEVE eseguire quanto segue:

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 è inoltre associato alle interfacce di rete su cui deve essere supportato il TREL. Il socket e la porta scelta devono rimanere validi mentre TREL è abilitato.

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

La piattaforma TREL DEVE segnalare le informazioni relative alle app peer rilevate utilizzando il callback otPlatTrelHandleDiscoveredPeerInfo(). Questo callback DEVE essere attivato quando viene rilevato un nuovo peer, quando si verifica una modifica in una voce esistente (ad es. un nuovo record TXT, un nuovo numero di porta o un 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 per il livello della piattaforma.

otPlatTrelHandleDiscoveredPeerInfo

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

Questa è una funzione di callback del livello piattaforma per segnalare informazioni sulle app peer TREL rilevate.

Dettagli
Parametri
[in] aInstance
L'istanza OpenThread.
[in] aInfo
Un puntatore alle informazioni sulle app peer TREL.

otPlatTrelHandleReceived

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

È un callback dalla piattaforma per notificare la ricezione di un pacchetto TREL UDP.

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

otPlatTrelRegisterService

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

Registra un nuovo servizio da pubblicizzare utilizzando DNS-SD [RFC6763].

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

Il dominio sotto il quale compare il nome dell'istanza di servizio sarà "locale" per mDNS e sarà qualsiasi dominio utilizzato per la registrazione del servizio nel 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 mantenere 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).

otPlatTrelSend

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

Richiedi l'invio di un pacchetto TREL UDP a una determinata destinazione.

Dettagli
Parametri
[in] aInstance
La 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 saperne di più o per contribuire alla nostra documentazione, consulta la sezione Risorse.