渠道经理

此模块包含频道管理器的函数。

总结

启用频道管理器功能 (OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE) 后,此模块中的函数将可供使用。频道管理器仅适用于 FTD build。

函数

otChannelManagerGetAutoChannelSelectionEnabled(otInstance *aInstance)
bool
指明是否已启用自动频道选择功能。
otChannelManagerGetAutoChannelSelectionInterval(otInstance *aInstance)
uint32_t
获取自动频道选择功能使用的时间段间隔(以秒为单位)。
otChannelManagerGetCcaFailureRateThreshold(otInstance *aInstance)
uint16_t
获取 CCA 失败率阈值。
otChannelManagerGetDelay(otInstance *aInstance)
uint16_t
获取频道管理器对频道更改使用的延迟时间(以秒为单位)。
otChannelManagerGetFavoredChannels(otInstance *aInstance)
uint32_t
获取偏爱的频道掩码。
otChannelManagerGetRequestedChannel(otInstance *aInstance)
uint8_t
获取上次成功调用 otChannelManagerRequestChannelChange() 的频道
otChannelManagerGetSupportedChannels(otInstance *aInstance)
uint32_t
获取支持的通道掩码。
otChannelManagerRequestChannelChange(otInstance *aInstance, uint8_t aChannel)
void
请求更改 Thread 网络通道。
otChannelManagerRequestChannelSelect(otInstance *aInstance, bool aSkipQualityCheck)
ChannelManager 检查并选择新频道并开始更改频道的请求。
otChannelManagerSetAutoChannelSelectionEnabled(otInstance *aInstance, bool aEnabled)
void
启用或停用自动频道选择功能。
otChannelManagerSetAutoChannelSelectionInterval(otInstance *aInstance, uint32_t aInterval)
设置自动频道选择功能使用的时间段(以秒为单位)。
otChannelManagerSetCcaFailureRateThreshold(otInstance *aInstance, uint16_t aThreshold)
void
设置 CCA 失败率阈值。
otChannelManagerSetDelay(otInstance *aInstance, uint16_t aDelay)
设置用于频道更改的延迟时间(以秒为单位)。
otChannelManagerSetFavoredChannels(otInstance *aInstance, uint32_t aChannelMask)
void
设置首选通道掩码。
otChannelManagerSetSupportedChannels(otInstance *aInstance, uint32_t aChannelMask)
void
设置支持的通道掩码。

函数

otChannelManagerGetAutoChannelSelectionEnabled

bool otChannelManagerGetAutoChannelSelectionEnabled(
  otInstance *aInstance
)

指明是否已启用自动频道选择功能。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
如果已启用,则为 TRUE,如果已停用,则为 FALSE。

otChannelManagerGetAutoChannelSelectionInterval

uint32_t otChannelManagerGetAutoChannelSelectionInterval(
  otInstance *aInstance
)

获取自动频道选择功能使用的时间段间隔(以秒为单位)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
间隔时间(以秒为单位)。

otChannelManagerGetCcaFailureRateThreshold

uint16_t otChannelManagerGetCcaFailureRateThreshold(
  otInstance *aInstance
)

获取 CCA 失败率阈值。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
CCA 失败率阈值。值 0 映射到 0%,映射 0xffff 映射到 100%。

otChannelManagerGetDelay

uint16_t otChannelManagerGetDelay(
  otInstance *aInstance
)

获取频道管理器对频道更改使用的延迟时间(以秒为单位)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
频道更改的延迟时间(以秒为单位)。

otChannelManagerGetFavoredChannels

uint32_t otChannelManagerGetFavoredChannels(
  otInstance *aInstance
)

获取偏爱的频道掩码。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
常用频道作为位掩码。

otChannelManagerGetRequestedChannel

uint8_t otChannelManagerGetRequestedChannel(
  otInstance *aInstance
)

获取上次成功调用 otChannelManagerRequestChannelChange() 的频道

详情
返回
上次请求的频道,或者如果还没有频道更改请求,则为 0。

otChannelManagerGetSupportedChannels

uint32_t otChannelManagerGetSupportedChannels(
  otInstance *aInstance
)

获取支持的通道掩码。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
支持的频道作为位掩码。

otChannelManagerRequestChannelChange

void otChannelManagerRequestChannelChange(
  otInstance *aInstance,
  uint8_t aChannel
)

请求更改 Thread 网络通道。

网络会在指定延迟后切换到指定通道(请参阅 otChannelManagerSetDelay())。通道更新通过更新待处理操作数据集来执行。

后续通话将取消之前请求的渠道变更。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aChannel
Thread 网络的新通道。

otChannelManagerRequestChannelSelect

otError otChannelManagerRequestChannelSelect(
  otInstance *aInstance,
  bool aSkipQualityCheck
)

ChannelManager 检查并选择新频道并开始更改频道的请求。

与必须将频道作为参数的 otChannelManagerRequestChannelChange() 不同,此函数要求 ChannelManager 根据选择的频道质量信息本身选择频道。

调用后,频道管理员会执行以下 3 个步骤:

1) ChannelManager 表示更改频道是否有用。如果 aSkipQualityCheck 设为 true(强制生成一个频道选择并跳过质量检查),系统会跳过此检查。此步骤使用设备上收集的链接质量指标(例如 CCA 失败率、每个邻居的帧和消息错误率等),确定当前频道质量是否达到合理的频道变更级别。

2) 如果通过了第一步,ChannelManager 会选择可能更好的频道。它会使用 ChannelMonitor 模块收集的通道质量数据。这一步需要使用支持和收藏的频道。(请参阅 otChannelManagerSetSupportedChannels()otChannelManagerSetFavoredChannels())。

3) 如果新选择的频道与当前频道不同,ChannelManager 会请求/启动频道更改流程(在内部调用 RequestChannelChange())。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aSkipQualityCheck
指示是否应跳过质量检查(第 1 步)。
返回值
OT_ERROR_NONE
已成功选择频道。
OT_ERROR_NOT_FOUND
支持的频道掩码为空,因此无法选择频道。

otChannelManagerSetAutoChannelSelectionEnabled

void otChannelManagerSetAutoChannelSelectionEnabled(
  otInstance *aInstance,
  bool aEnabled
)

启用或停用自动频道选择功能。

启用后,ChannelManager 将定期调用 RequestChannelSelect(false)。时间段间隔可以通过 SetAutoChannelSelectionInterval() 设置。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aEnabled
指明是启用还是停用此功能。

otChannelManagerSetAutoChannelSelectionInterval

otError otChannelManagerSetAutoChannelSelectionInterval(
  otInstance *aInstance,
  uint32_t aInterval
)

设置自动频道选择功能使用的时间段(以秒为单位)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aInterval
间隔时间(以秒为单位)。
返回值
OT_ERROR_NONE
间隔设置成功。
OT_ERROR_INVALID_ARGS
aInterval 无效(零)。

otChannelManagerSetCcaFailureRateThreshold

void otChannelManagerSetCcaFailureRateThreshold(
  otInstance *aInstance,
  uint16_t aThreshold
)

设置 CCA 失败率阈值。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aThreshold
CCA 失败率阈值。值 0 映射到 0%,映射 0xffff 映射到 100%。

otChannelManagerSetDelay

otError otChannelManagerSetDelay(
  otInstance *aInstance,
  uint16_t aDelay
)

设置用于频道更改的延迟时间(以秒为单位)。

该延迟最好最好长于 Thread 网络内所有睡觉设备使用的最大数据轮询时间间隔。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aDelay
延迟(以秒为单位)。
返回值
OT_ERROR_NONE
已成功更新延迟。
OT_ERROR_INVALID_ARGS
指定的延迟时间 aDelay 过短。

otChannelManagerSetFavoredChannels

void otChannelManagerSetFavoredChannels(
  otInstance *aInstance,
  uint32_t aChannelMask
)

设置首选通道掩码。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aChannelMask
通道掩码。

otChannelManagerSetSupportedChannels

void otChannelManagerSetSupportedChannels(
  otInstance *aInstance,
  uint32_t aChannelMask
)

设置支持的通道掩码。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aChannelMask
通道掩码。

资源

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