TREL - 平台
此模块包含使用 DNS-SD 和 UDP/IPv6 的线程无线装置封装链接 (TREL) 的平台抽象。
摘要
类型定义符 |
|
---|---|
otPlatTrelPeerInfo
|
typedefstruct otPlatTrelPeerInfo
表示使用 DNS-SD 浏览针对服务名称“_trel._udp”发现的 TREL 对等方信息。 |
函数 |
|
---|---|
otPlatTrelDisable(otInstance *aInstance)
|
void
停用 TREL 平台层。
|
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
|
void
初始化并启用 TREL 平台层。
|
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
|
void
这是来自平台层的回调函数,用于报告发现的 TREL 对等方信息。
|
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
|
void
是平台发出的回调,用于通知已收到 TREL UDP 数据包。
|
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
|
void
注册要使用 DNS-SD [RFC6763] 通告的新服务。
|
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
|
void
请求发送到指定目标的 TREL UDP 数据包。
|
结构体 |
|
---|---|
otPlatTrelPeerInfo |
表示使用 DNS-SD 浏览针对服务名称“_trel._udp”发现的 TREL 对等方信息。 |
类型定义符
otPlatTrelPeerInfo
struct otPlatTrelPeerInfo otPlatTrelPeerInfo
表示使用 DNS-SD 浏览针对服务名称“_trel._udp”发现的 TREL 对等方信息。
函数
otPlatTrelDisable
void otPlatTrelDisable( otInstance *aInstance )
停用 TREL 平台层。
此调用之后,平台层必须停止服务名称“_trel._udp”上的 DNS-SD 浏览,停止通告 TREL DNS-SD 服务(来自 otPlatTrelRegisterService()
),并必须关闭用于接收 TREL 消息的 UDP 套接字。
[输入] aInstance:OpenThread 实例。
otPlatTrelEnable
void otPlatTrelEnable( otInstance *aInstance, uint16_t *aUdpPort )
初始化并启用 TREL 平台层。
进行此调用后,平台层必须执行以下操作:
1) TREL 平台层必须打开 UDP 套接字来监听和接收来自对等方的 TREL 消息。套接字绑定到平台层选择的临时端口号。必须在 aUdpPort
中返回端口号。套接字还绑定到支持 TREL 的网络接口。启用 TREL 时,套接字和所选端口应保持有效。
2) 平台层必须对本地浏览网域中的服务名称“_trel._udp”启动持续的 DNS-SD 浏览,以发现支持 TREL 的其他设备。持续浏览会生成两种不同类型的事件:“添加”事件和“移除”事件。浏览启动时,它应该为网络上当前存在的每个 TREL 对等方生成一个“add”事件。每当 TREL 对等网络离线时,都应生成“remove”事件。不过,我们无法保证“remove”事件一定能生效。发现 TREL 服务实例后,应在所发现实例的 SRV 记录中指明的主机名上启动针对 AAAA 记录的新持续 DNS-SD 查询。如果发现对等端的多个主机 IPv6 地址,则必须报告所有地址中范围最大的一个(如果同一范围内有多个地址,必须随机选择一个)。
TREL 平台必须使用 otPlatTrelHandleDiscoveredPeerInfo()
回调发回发现的对等设备信息。当发现新的对等设备、现有条目(例如,新的 TXT 记录、新端口号或新的 IPv6 地址)发生更改时,或当对等设备被移除时,必须调用此回调。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otPlatTrelHandleDiscoveredPeerInfo
void otPlatTrelHandleDiscoveredPeerInfo( otInstance *aInstance, const otPlatTrelPeerInfo *aInfo )
这是来自平台层的回调函数,用于报告发现的 TREL 对等方信息。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otPlatTrelHandleReceived
void otPlatTrelHandleReceived( otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength )
是平台发出的回调,用于通知已收到 TREL UDP 数据包。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
otPlatTrelRegisterService
void otPlatTrelRegisterService( otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength )
注册要使用 DNS-SD [RFC6763] 通告的新服务。
服务名称为“_trel._udp”。平台应使用自己的主机名,将该主机名与服务名称和本地 DNS-SD 域名结合使用,即可生成完整的服务实例名称,例如“example-host._trel._udp.local”。
对于 mDNS,服务实例名称所在的网域将是“local”;如果是非 mDNS 本地 DNS-SD 服务,则将是用于服务注册的任何网域。
对此函数的后续调用会更新前一个服务。用于更新 TXT 记录数据和/或端口号。
aTxtData
缓冲区在从此函数返回后不会持久保留。平台层不得保留指针,而是根据需要复制内容。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
otPlatTrelSend
void otPlatTrelSend( otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr )
请求发送到指定目标的 TREL UDP 数据包。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
资源
OpenThread API 参考文档源自 GitHub 上提供的源代码。如需了解详情,或者为我们的文档做贡献,请参阅资源。