频道监控

此模块包含频道监控功能的函数。

总结

启用频道监控功能 (OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE) 后,此模块中的函数将可供使用。

频道监控功能会定期监控所有频道,以帮助确定更清洁的频道(干扰较小的频道)。

当频道监控功能处于启用状态时,系统会执行零时长的能量扫描,系统会将 RSSI 样本与预定义的 RSSI 阈值进行比较。作为频道质量的指示因素,频道监控模块会维护并提供高于指定样本窗口(称为频道占用率)内阈值的 RSSI 样本的平均比率/百分比。

函数

otChannelMonitorGetChannelOccupancy(otInstance *aInstance, uint8_t aChannel)
uint16_t
获取指定频道的当前入住人数。
otChannelMonitorGetRssiThreshold(otInstance *aInstance)
int8_t
获取频道监控 RSSI 阈值(以 dBm 为单位)。
otChannelMonitorGetSampleCount(otInstance *aInstance)
uint32_t
获取频道监控 RSSI 样本总数(按渠道划分)。
otChannelMonitorGetSampleInterval(otInstance *aInstance)
uint32_t
获取频道监控采样间隔(以毫秒为单位)。
otChannelMonitorGetSampleWindow(otInstance *aInstance)
uint32_t
获取频道监控平均样本时长(样本数量)。
otChannelMonitorIsEnabled(otInstance *aInstance)
bool
指示通道监控操作是否已启用并运行。
otChannelMonitorSetEnabled(otInstance *aInstance, bool aEnabled)
启用或停用“频道监控”操作。

函数

otChannelMonitorGetChannelOccupancy

uint16_t otChannelMonitorGetChannelOccupancy(
  otInstance *aInstance,
  uint8_t aChannel
)

获取指定频道的当前入住人数。

频道占用率值表示高于 RSSI 阈值的 RSSI 样本的平均比率/百分比(“不良”RSSI 样本)。

对于第一个“样本窗口”样本,平均值以实际百分比(即“不良”样本数量与样本总数的比率)保持不变。在“窗口”样本之后,平均值会采用指数加权移动平均值。实际上,这意味着在最新的 kSampleWindow 个样本中,平均而言代表的都是最多最后 3 * window 个样本,并且其权重最高。

最大值 0xffff 表示所有 RSSI 样本都高于 RSSI 阈值(例如,100% 的样本是“不良”)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aChannel
获取链接占用情况的频道。
返回
给定频道当前的入住人数。

otChannelMonitorGetRssiThreshold

int8_t otChannelMonitorGetRssiThreshold(
  otInstance *aInstance
)

获取频道监控 RSSI 阈值(以 dBm 为单位)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
RSSI 阈值(以 dBm 为单位)。

otChannelMonitorGetSampleCount

uint32_t otChannelMonitorGetSampleCount(
  otInstance *aInstance
)

获取频道监控 RSSI 样本总数(按渠道划分)。

计数是指每个频道自频道开始以来(自启用 Thread 网络接口以来)每个频道的样本总数。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
到目前为止,每个渠道获得的 RSSI 样本总数。

otChannelMonitorGetSampleInterval

uint32_t otChannelMonitorGetSampleInterval(
  otInstance *aInstance
)

获取频道监控采样间隔(以毫秒为单位)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
频道监控采样间隔(以毫秒为单位)。

otChannelMonitorGetSampleWindow

uint32_t otChannelMonitorGetSampleWindow(
  otInstance *aInstance
)

获取频道监控平均样本时长(样本数量)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
平均样本窗口。

OTChannelMonitorIsEnabled

bool otChannelMonitorIsEnabled(
  otInstance *aInstance
)

指示通道监控操作是否已启用并运行。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回
如果已启用渠道监控操作,则为 TRUE,否则为 FALSE。

otChannelMonitorSetEnabled

otError otChannelMonitorSetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

启用或停用“频道监控”操作。

操作开始后,之前收集的所有数据都会被清除。不过,操作停用后,之前收集的数据仍会有效并可读取。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aEnabled
值为 TRUE 时启用/启动频道监控操作,值为 FALSE 时可停用/停止频道监控操作。
返回值
OT_ERROR_NONE
频道监控状态已成功更改
OT_ERROR_ALREADY
渠道监控已处于同一状态。

资源

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