openthread_sys

Function otChannelManagerRequestCslChannelSelect

Source
pub unsafe extern "C" fn otChannelManagerRequestCslChannelSelect(
    aInstance: *mut otInstance,
    aSkipQualityCheck: bool,
) -> otError
Expand description

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

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.

@param[in] aInstance A pointer to an OpenThread instance. @param[in] aSkipQualityCheck Indicates whether the quality check (step 1) should be skipped.

@retval OT_ERROR_NONE Channel selection finished successfully. @retval OT_ERROR_NOT_FOUND Supported channel mask is empty, therefore could not select a channel.