Channel Manager#

This module includes functions for Channel Manager.

The functions in this module are available when Channel Manager features OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE or OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE are enabled. Channel Manager behavior depends on the device role. It manages the network-wide PAN channel on a Full Thread Device in rx-on-when-idle mode, or with OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE set, selects CSL channel in synchronized rx-off-when-idle mode. On a Minimal Thread Device OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE selects the CSL channel.

Functions#

void
otChannelManagerRequestChannelChange(otInstance *aInstance, uint8_t aChannel)

Requests a Thread network channel change.

uint8_t

Gets the channel from the last successful call to otChannelManagerRequestChannelChange()

uint16_t
otChannelManagerGetDelay(otInstance *aInstance)

Gets the delay (in seconds) used by Channel Manager for a network channel change.

otChannelManagerSetDelay(otInstance *aInstance, uint16_t aDelay)

Sets the delay (in seconds) used for a network channel change.

otChannelManagerRequestChannelSelect(otInstance *aInstance, bool aSkipQualityCheck)

Requests that ChannelManager checks and selects a new channel and starts a channel change.

otChannelManagerRequestCslChannelSelect(otInstance *aInstance, bool aSkipQualityCheck)

Requests that ChannelManager checks and selects a new CSL channel and starts a CSL channel change.

void
otChannelManagerSetAutoChannelSelectionEnabled(otInstance *aInstance, bool aEnabled)

Enables or disables the auto-channel-selection functionality for network channel.

bool

Indicates whether the auto-channel-selection functionality for a network channel is enabled or not.

void
otChannelManagerSetAutoCslChannelSelectionEnabled(otInstance *aInstance, bool aEnabled)

Enables or disables the auto-channel-selection functionality for a CSL channel.

bool

Indicates whether the auto-csl-channel-selection functionality is enabled or not.

otChannelManagerSetAutoChannelSelectionInterval(otInstance *aInstance, uint32_t aInterval)

Sets the period interval (in seconds) used by auto-channel-selection functionality.

uint32_t

Gets the period interval (in seconds) used by auto-channel-selection functionality.

uint32_t

Gets the supported channel mask.

void
otChannelManagerSetSupportedChannels(otInstance *aInstance, uint32_t aChannelMask)

Sets the supported channel mask.

uint32_t
otChannelManagerGetFavoredChannels(otInstance *aInstance)

Gets the favored channel mask.

void
otChannelManagerSetFavoredChannels(otInstance *aInstance, uint32_t aChannelMask)

Sets the favored channel mask.

uint16_t

Gets the CCA failure rate threshold.

void
otChannelManagerSetCcaFailureRateThreshold(otInstance *aInstance, uint16_t aThreshold)

Sets the CCA failure rate threshold.

Function Documentation#

otChannelManagerRequestChannelChange#

void otChannelManagerRequestChannelChange (otInstance * aInstance, uint8_t aChannel)

Requests a Thread network channel change.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[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.


Definition at line 73 of file include/openthread/channel_manager.h

otChannelManagerGetRequestedChannel#

uint8_t otChannelManagerGetRequestedChannel (otInstance * aInstance)

Gets the channel from the last successful call to otChannelManagerRequestChannelChange()

Parameters
N/AaInstance

Returns

  • The last requested channel or zero if there has been no channel change request yet.


Definition at line 80 of file include/openthread/channel_manager.h

otChannelManagerGetDelay#

uint16_t otChannelManagerGetDelay (otInstance * aInstance)

Gets the delay (in seconds) used by Channel Manager for a network channel change.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

Only available on FTDs.

Returns

  • The delay (in seconds) for channel change.


Definition at line 91 of file include/openthread/channel_manager.h

otChannelManagerSetDelay#

otError otChannelManagerSetDelay (otInstance * aInstance, uint16_t aDelay)

Sets the delay (in seconds) used for a network channel change.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[in]aDelay

Delay in seconds.

Only available on FTDs. The delay should preferably be longer than the maximum data poll interval used by all Sleepy End Devices within the Thread network.


Definition at line 105 of file include/openthread/channel_manager.h

otChannelManagerRequestChannelSelect#

otError otChannelManagerRequestChannelSelect (otInstance * aInstance, bool aSkipQualityCheck)

Requests that ChannelManager checks and selects a new channel and starts a channel change.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[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()).


Definition at line 134 of file include/openthread/channel_manager.h

otChannelManagerRequestCslChannelSelect#

otError otChannelManagerRequestCslChannelSelect (otInstance * aInstance, bool aSkipQualityCheck)

Requests that ChannelManager checks and selects a new CSL channel and starts a CSL channel change.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[in]aSkipQualityCheck

Indicates whether the quality check (step 1) should be skipped.

Only available with OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE. 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 CSL channel change would be helpful. This check can be skipped if aSkipQualityCheck is set to true (forcing a CSL 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 CSL channel change.

2) If the first step passes, then ChannelManager selects a potentially better CSL 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 CSL channel is different from the current CSL channel, ChannelManager starts the CSL channel change process.


Definition at line 164 of file include/openthread/channel_manager.h

otChannelManagerSetAutoChannelSelectionEnabled#

void otChannelManagerSetAutoChannelSelectionEnabled (otInstance * aInstance, bool aEnabled)

Enables or disables the auto-channel-selection functionality for network channel.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[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 otChannelManagerSetAutoChannelSelectionInterval().


Definition at line 175 of file include/openthread/channel_manager.h

otChannelManagerGetAutoChannelSelectionEnabled#

bool otChannelManagerGetAutoChannelSelectionEnabled (otInstance * aInstance)

Indicates whether the auto-channel-selection functionality for a network channel is enabled or not.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

Returns

  • TRUE if enabled, FALSE if disabled.


Definition at line 184 of file include/openthread/channel_manager.h

otChannelManagerSetAutoCslChannelSelectionEnabled#

void otChannelManagerSetAutoCslChannelSelectionEnabled (otInstance * aInstance, bool aEnabled)

Enables or disables the auto-channel-selection functionality for a CSL channel.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[in]aEnabled

Indicates whether to enable or disable this functionality.

Only available with OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE. When enabled, ChannelManager will periodically invoke a otChannelManagerRequestCslChannelSelect(). The period interval can be set by otChannelManagerSetAutoChannelSelectionInterval().


Definition at line 197 of file include/openthread/channel_manager.h

otChannelManagerGetAutoCslChannelSelectionEnabled#

bool otChannelManagerGetAutoCslChannelSelectionEnabled (otInstance * aInstance)

Indicates whether the auto-csl-channel-selection functionality is enabled or not.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

Only available with OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_CHANNEL_MANAGER_CSL_CHANNEL_SELECT_ENABLE.

Returns

  • TRUE if enabled, FALSE if disabled.


Definition at line 209 of file include/openthread/channel_manager.h

otChannelManagerSetAutoChannelSelectionInterval#

otError otChannelManagerSetAutoChannelSelectionInterval (otInstance * aInstance, uint32_t aInterval)

Sets the period interval (in seconds) used by auto-channel-selection functionality.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[in]aInterval

The interval in seconds.


Definition at line 220 of file include/openthread/channel_manager.h

otChannelManagerGetAutoChannelSelectionInterval#

uint32_t otChannelManagerGetAutoChannelSelectionInterval (otInstance * aInstance)

Gets the period interval (in seconds) used by auto-channel-selection functionality.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

Returns

  • The interval in seconds.


Definition at line 229 of file include/openthread/channel_manager.h

otChannelManagerGetSupportedChannels#

uint32_t otChannelManagerGetSupportedChannels (otInstance * aInstance)

Gets the supported channel mask.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

Returns

  • The supported channels as a bit-mask.


Definition at line 238 of file include/openthread/channel_manager.h

otChannelManagerSetSupportedChannels#

void otChannelManagerSetSupportedChannels (otInstance * aInstance, uint32_t aChannelMask)

Sets the supported channel mask.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[in]aChannelMask

A channel mask.


Definition at line 246 of file include/openthread/channel_manager.h

otChannelManagerGetFavoredChannels#

uint32_t otChannelManagerGetFavoredChannels (otInstance * aInstance)

Gets the favored channel mask.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

Returns

  • The favored channels as a bit-mask.


Definition at line 255 of file include/openthread/channel_manager.h

otChannelManagerSetFavoredChannels#

void otChannelManagerSetFavoredChannels (otInstance * aInstance, uint32_t aChannelMask)

Sets the favored channel mask.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[in]aChannelMask

A channel mask.


Definition at line 263 of file include/openthread/channel_manager.h

otChannelManagerGetCcaFailureRateThreshold#

uint16_t otChannelManagerGetCcaFailureRateThreshold (otInstance * aInstance)

Gets the CCA failure rate threshold.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

Returns

  • The CCA failure rate threshold. Value 0 maps to 0% and 0xffff maps to 100%.


Definition at line 272 of file include/openthread/channel_manager.h

otChannelManagerSetCcaFailureRateThreshold#

void otChannelManagerSetCcaFailureRateThreshold (otInstance * aInstance, uint16_t aThreshold)

Sets the CCA failure rate threshold.

Parameters
[in]aInstance

A pointer to an OpenThread instance.

[in]aThreshold

A CCA failure rate threshold. Value 0 maps to 0% and 0xffff maps to 100%.


Definition at line 280 of file include/openthread/channel_manager.h