Google 致力于为黑人社区推动种族平等。查看具体行动

TREL - 平台

此模块包含使用 DNS-SD 和 UDP/IPv6 的线程无线装置封装链接 (TREL) 的平台抽象。

摘要

类型定义符

otPlatTrelPeerInfo typedef
此结构表示使用 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 对等方离线时,都应生成“移除”事件。不过,我们无法保证“移除”事件。发现 TREL 服务实例时,应为已发现实例的 SRV 记录中指定的主机名启动新的 AAAA 记录 DNS-SD 查询。如果发现对等设备的多个主机 IPv6 地址,则必须报告所有地址中范围最高的地址(如果同一范围内有多个地址,则必须随机选择一个)。

TREL 平台必须使用 otPlatTrelHandleDiscoveredPeerInfo() 回调传回发现的对等信息。发现新的对等体、现有条目发生变化(例如新的 TXT 记录或新的端口号或新的 IPv6 地址)或对等体被移除时,必须调用此回调。

详情
参数
[in] aInstance
OpenThread 实例。
[out] aUdpPort
用于按平台层返回所选端口号的指针。

otPlatTrelHandleDiscoveredPeerInfo

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

这是来自平台层的回调函数,用于报告发现的 TREL 对等信息。

详情
参数
[in] aInstance
OpenThread 实例。
[in] aInfo
指向 TREL 对等信息的指针。

otPlatTrelHandleReceived

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

此函数是一个来自平台的回调,用于通知已收到的 TREL UDP 数据包。

详情
参数
[in] aInstance
OpenThread 实例结构。
[in] aBuffer
包含收到的 UDP 载荷的缓冲区。
[in] aLength
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 为“本地”,如果是使用非 mDNS 本地 DNS-SD 服务,则为用于服务注册的任何网域。

对此函数的后续调用将更新之前的服务。它用于更新 TXT 记录数据和/或端口号。

此函数返回后,aTxtData 缓冲区不会保留。平台层不得保留指针,而应根据需要复制内容。

详情
参数
[in] aInstance
OpenThread 实例。
[in] aPort
要添加到所通告服务的 SRV 记录中的端口号。
[in] aTxtData
指向要包含在所通告的服务中的 TXT 记录数据(已编码)的指针。
[in] aTxtLength
aTxtData 的长度(字节数)。

otPlatTrelSend

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

此函数请求将 TREL UDP 数据包发送到指定目的地。

详情
参数
[in] aInstance
OpenThread 实例结构。
[in] aUdpPayload
指向 UDP 载荷的指针。
[in] aUdpPayloadLen
载荷长度(字节数)。
[in] aDestSockAddr
目的地套接字地址。

资源

OpenThread API 参考主题源自源代码,可在 GitHub 上找到。 如需了解详情或为我们的文档做贡献,请参阅资源