Channel Manager#
This module includes functions for Channel Manager.
The functions in this module are available when Channel Manager feature (OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE
) is enabled. Channel Manager is available only on an FTD build.
Functions#
Requests a Thread network channel change.
Gets the channel from the last successful call to otChannelManagerRequestChannelChange()
Gets the delay (in seconds) used by Channel Manager for a channel change.
Sets the delay (in seconds) used for a channel change.
Requests that ChannelManager
checks and selects a new channel and starts a channel change.
Enables or disables the auto-channel-selection functionality.
Indicates whether the auto-channel-selection functionality is enabled or not.
Sets the period interval (in seconds) used by auto-channel-selection functionality.
Gets the period interval (in seconds) used by auto-channel-selection functionality.
Gets the supported channel mask.
Sets the supported channel mask.
Gets the favored channel mask.
Sets the favored channel mask.
Gets the CCA failure rate threshold.
Sets the CCA failure rate threshold.
Function Documentation#
otChannelManagerRequestChannelChange#
void otChannelManagerRequestChannelChange (otInstance * aInstance, uint8_t aChannel)
Requests a Thread network channel change.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
uint8_t | [in] | aChannel | The new channel for the Thread network. |
The network switches to the given channel after a specified delay (see otChannelManagerSetDelay()). The channel change is performed by updating the Pending Operational Dataset.
A subsequent call will cancel an ongoing previously requested channel change.
otChannelManagerGetRequestedChannel#
uint8_t otChannelManagerGetRequestedChannel (otInstance * aInstance)
Gets the channel from the last successful call to otChannelManagerRequestChannelChange()
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | N/A | aInstance |
Returns
The last requested channel or zero if there has been no channel change request yet.
otChannelManagerGetDelay#
uint16_t otChannelManagerGetDelay (otInstance * aInstance)
Gets the delay (in seconds) used by Channel Manager for a channel change.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
Returns
The delay (in seconds) for channel change.
otChannelManagerSetDelay#
otError otChannelManagerSetDelay (otInstance * aInstance, uint16_t aDelay)
Sets the delay (in seconds) used for a channel change.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
uint16_t | [in] | aDelay | Delay in seconds. |
The delay should preferably be longer than the maximum data poll interval used by all sleepy-end-devices within the Thread network.
otChannelManagerRequestChannelSelect#
otError otChannelManagerRequestChannelSelect (otInstance * aInstance, bool aSkipQualityCheck)
Requests that ChannelManager
checks and selects a new channel and starts a channel change.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
bool | [in] | aSkipQualityCheck | Indicates whether the quality check (step 1) should be skipped. |
Unlike the otChannelManagerRequestChannelChange()
where the channel must be given as a parameter, this function asks the ChannelManager
to select a channel by itself (based on collected channel quality info).
Once called, the Channel Manager will perform the following 3 steps:
1) ChannelManager
decides if the channel change would be helpful. This check can be skipped if aSkipQualityCheck
is set to true (forcing a channel selection to happen and skipping the quality check). This step uses the collected link quality metrics on the device (such as CCA failure rate, frame and message error rates per neighbor, etc.) to determine if the current channel quality is at the level that justifies a channel change.
2) If the first step passes, then ChannelManager
selects a potentially better channel. It uses the collected channel quality data by ChannelMonitor
module. The supported and favored channels are used at this step. (see otChannelManagerSetSupportedChannels() and otChannelManagerSetFavoredChannels()).
3) If the newly selected channel is different from the current channel, ChannelManager
requests/starts the channel change process (internally invoking a RequestChannelChange()
).
otChannelManagerSetAutoChannelSelectionEnabled#
void otChannelManagerSetAutoChannelSelectionEnabled (otInstance * aInstance, bool aEnabled)
Enables or disables the auto-channel-selection functionality.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
bool | [in] | aEnabled | Indicates whether to enable or disable this functionality. |
When enabled, ChannelManager
will periodically invoke a RequestChannelSelect(false)
. The period interval can be set by SetAutoChannelSelectionInterval()
.
otChannelManagerGetAutoChannelSelectionEnabled#
bool otChannelManagerGetAutoChannelSelectionEnabled (otInstance * aInstance)
Indicates whether the auto-channel-selection functionality is enabled or not.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
Returns
TRUE if enabled, FALSE if disabled.
otChannelManagerSetAutoChannelSelectionInterval#
otError otChannelManagerSetAutoChannelSelectionInterval (otInstance * aInstance, uint32_t aInterval)
Sets the period interval (in seconds) used by auto-channel-selection functionality.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
uint32_t | [in] | aInterval | The interval in seconds. |
otChannelManagerGetAutoChannelSelectionInterval#
uint32_t otChannelManagerGetAutoChannelSelectionInterval (otInstance * aInstance)
Gets the period interval (in seconds) used by auto-channel-selection functionality.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
Returns
The interval in seconds.
otChannelManagerGetSupportedChannels#
uint32_t otChannelManagerGetSupportedChannels (otInstance * aInstance)
Gets the supported channel mask.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
Returns
The supported channels as a bit-mask.
otChannelManagerSetSupportedChannels#
void otChannelManagerSetSupportedChannels (otInstance * aInstance, uint32_t aChannelMask)
Sets the supported channel mask.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
uint32_t | [in] | aChannelMask | A channel mask. |
otChannelManagerGetFavoredChannels#
uint32_t otChannelManagerGetFavoredChannels (otInstance * aInstance)
Gets the favored channel mask.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
Returns
The favored channels as a bit-mask.
otChannelManagerSetFavoredChannels#
void otChannelManagerSetFavoredChannels (otInstance * aInstance, uint32_t aChannelMask)
Sets the favored channel mask.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
uint32_t | [in] | aChannelMask | A channel mask. |
otChannelManagerGetCcaFailureRateThreshold#
uint16_t otChannelManagerGetCcaFailureRateThreshold (otInstance * aInstance)
Gets the CCA failure rate threshold.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
Returns
The CCA failure rate threshold. Value 0 maps to 0% and 0xffff maps to 100%.
otChannelManagerSetCcaFailureRateThreshold#
void otChannelManagerSetCcaFailureRateThreshold (otInstance * aInstance, uint16_t aThreshold)
Sets the CCA failure rate threshold.
Type | Direction | Argument Name | Description |
---|---|---|---|
otInstance * | [in] | aInstance | A pointer to an OpenThread instance. |
uint16_t | [in] | aThreshold | A CCA failure rate threshold. Value 0 maps to 0% and 0xffff maps to 100%. |