TREL – Gleis
Dieses Modul enthält die Plattformabstraktion für Thread Radio Encapsulation Link (TREL) mit DNS-SD und UDP/IPv6.
Zusammenfassung
Typedefs |
|
---|---|
otPlatTrelPeerInfo
|
typedefstruct otPlatTrelPeerInfo
Stellt eine TREL-Peer-Info dar, die mithilfe des DNS-SD-Browsers beim Dienstnamen „_trel._udp“ erkannt wurde. |
Funktionen |
|
---|---|
otPlatTrelDisable(otInstance *aInstance)
|
void
Deaktiviert die TREL-Plattformebene.
|
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
|
void
Initialisiert und aktiviert die TREL-Plattformebene.
|
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
|
void
Dies ist eine Callback-Funktion von der Plattformebene, mit der erkannte TREL-Peer-Informationen gemeldet werden.
|
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
|
void
Ist ein Callback von der Plattform, um über ein empfangenes TREL UDP-Paket zu informieren.
|
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
|
void
Registriert einen neuen Dienst, der mit DNS-SD [RFC6763] beworben werden soll.
|
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
|
void
Fordert an, dass ein TREL-UDP-Paket an ein bestimmtes Ziel gesendet werden soll.
|
Strukturen |
|
---|---|
otPlatTrelPeerInfo |
Stellt eine TREL-Peer-Info dar, die mithilfe des DNS-SD-Browsers beim Dienstnamen „_trel._udp“ erkannt wurde. |
Typedefs
otPlatTrelPeerInfo
struct otPlatTrelPeerInfo otPlatTrelPeerInfo
Stellt eine TREL-Peer-Info dar, die mithilfe des DNS-SD-Browsers beim Dienstnamen „_trel._udp“ erkannt wurde.
Funktionen
otPlatTrelDisable
void otPlatTrelDisable( otInstance *aInstance )
Deaktiviert die TREL-Plattformebene.
Nach diesem Aufruf MUSS die Plattformebene die DNS-SD-Suche für den Dienstnamen „_trel._udp“ beenden, das Bewerben des TREL DNS-SD-Dienstes (von otPlatTrelRegisterService()
) beenden und den UDP-Socket schließen, der zum Empfangen von TREL-Nachrichten verwendet wird.
[in] aInstance Die OpenThread-Instanz.
otPlatTrelEnable
void otPlatTrelEnable( otInstance *aInstance, uint16_t *aUdpPort )
Initialisiert und aktiviert die TREL-Plattformebene.
Bei diesem Aufruf MUSS auf der Plattformebene Folgendes ausgeführt werden:
1) Die TREL-Plattformebene MUSS einen UDP-Socket öffnen, um TREL-Nachrichten von Peers zu überwachen und zu empfangen. Der Socket ist an eine sitzungsspezifische Portnummer gebunden, die von der Plattformebene ausgewählt wurde. Die Portnummer MUSS in aUdpPort
zurückgegeben werden. Der Socket ist außerdem an Netzwerkschnittstellen gebunden, auf denen TREL unterstützt werden soll. Der Socket und der ausgewählte Port sollten gültig bleiben, während TREL aktiviert ist.
2) Plattformebene MÜSSEN einen laufenden DNS-SD-Suchlauf für den Dienstnamen „_trel._udp“ innerhalb der lokalen Browserdomain initiieren, um andere Geräte zu finden, die TREL unterstützen. Beim fortlaufenden Suchen werden zwei verschiedene Arten von Ereignissen erzeugt: „add“-Ereignisse und „remove“-Ereignisse. Wenn der Suchvorgang gestartet wird, sollte für jeden derzeit im Netzwerk vorhandenen TREL-Peer ein Ereignis vom Typ „add“ erzeugt werden. Wenn ein TREL-Peer offline geht, sollte ein "remove"-Ereignis ausgelöst werden. „remove“-Ereignisse werden jedoch nicht garantiert. Wenn eine TREL-Dienstinstanz erkannt wird, sollte eine neue laufende DNS-SD-Abfrage nach einem AAAA-Eintrag unter dem Hostnamen gestartet werden, der im SRV-Eintrag der erkannten Instanz angegeben ist. Wenn für einen Peer mehrere Host-IPv6-Adressen erkannt werden, MUSS eine mit dem höchsten Bereich unter allen Adressen gemeldet werden. Wenn mehrere Adressen im selben Bereich vorhanden sind, muss eine davon nach dem Zufallsprinzip ausgewählt werden.
Die TREL-Plattform MÜSSEN die erkannten Peer-Informationen mit dem otPlatTrelHandleDiscoveredPeerInfo()
-Callback zurückgeben. Dieser Callback MUSS aufgerufen werden, wenn ein neuer Peer erkannt wird, wenn sich an einem vorhandenen Eintrag eine Änderung ergibt (z.B. ein neuer TXT-Eintrag, eine neue Portnummer oder eine neue IPv6-Adresse) oder wenn der Peer entfernt wird.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
otPlatTrelHandleDiscoveredPeerInfo
void otPlatTrelHandleDiscoveredPeerInfo( otInstance *aInstance, const otPlatTrelPeerInfo *aInfo )
Dies ist eine Callback-Funktion von der Plattformebene, mit der erkannte TREL-Peer-Informationen gemeldet werden.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
otPlatTrelHandleReceived
void otPlatTrelHandleReceived( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength )
Ist ein Callback von der Plattform, um über ein empfangenes TREL UDP-Paket zu informieren.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
otPlatTrelRegisterService
void otPlatTrelRegisterService( otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength )
Registriert einen neuen Dienst, der mit DNS-SD [RFC6763] beworben werden soll.
Der Dienstname lautet „_trel._udp“. Für die Plattform sollte ein eigener Hostname verwendet werden, der in Kombination mit dem Dienstnamen und dem lokalen DNS-SD-Domainnamen den vollständigen Dienstinstanznamen ergibt, zum Beispiel "example-host._trel._udp.local.".
Die Domain, unter der der Name der Serviceinstanz angezeigt wird, ist für mDNS „lokal“. Im Fall eines lokalen DNS-SD-Dienstes ohne mDNS ist die Domain die Domain, die für die Dienstregistrierung verwendet wird.
Durch einen nachfolgenden Aufruf dieser Funktion wird der vorherige Dienst aktualisiert. Sie wird verwendet, um die Daten des TXT-Eintrags und/oder die Portnummer zu aktualisieren.
Der Puffer aTxtData
wird nach der Rückgabe von dieser Funktion nicht beibehalten. Die Plattformebene DARF NICHT den Zeiger beibehalten und stattdessen den Inhalt bei Bedarf kopieren.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
otPlatTrelSend
void otPlatTrelSend( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr )
Fordert an, dass ein TREL-UDP-Paket an ein bestimmtes Ziel gesendet werden soll.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
Ressourcen
OpenThread API-Referenzthemen stammen aus dem Quellcode, der auf GitHub verfügbar ist. Weitere Informationen finden Sie unter Ressourcen. Dort können Sie auch einen Beitrag zu unserer Dokumentation leisten.