Multiprotocol Service Layer library control

The Multiprotocol Service Layer library control methods make it possible to control the initialization and uninitialization of the Multiprotocol Service Layer library and all required interrupt handlers. Uninitializing MPSL allows the application to have full control over the RADIO_IRQn, RTC0_IRQn, and TIMER0_IRQn interrupts.

CONFIG_MPSL_DYNAMIC_INTERRUPTS enables use of dynamic interrupts for MPSL and allows interrupt reconfiguration.

API documentation

Header file: include/mpsl/mpsl_lib.h
group mpsl_lib

Methods for initializing MPSL and required interrupt handlers.

Functions

int32_t mpsl_lib_init(void)

Initialize MPSL and attach interrupt handlers.

This routine initializes MPSL (via mpsl_init) after it has been uninitialized via mpsl_lib_uninit, and attaches all required interrupt handlers.

Note

After successful execution of this method, any existing interrupt handlers will be detached from RADIO_IRQn, RTC0_IRQn, and TIMER0_IRQn.

Return values
  • 0 – MPSL enabled successfully.

  • -NRF_EPERM – Operation is not supported or MPSL is already initialized.

  • -NRF_EINVAL – Invalid parameters supplied to MPSL.

Pre

This method requires CONFIG_MPSL_DYNAMIC_INTERRUPTS to be enabled and MPSL to have been previously uninitialized via mpsl_lib_uninit.

int32_t mpsl_lib_uninit(void)

Uninitialize MPSL and disable interrupt handlers.

This routine uninitializes MPSL (via mpsl_uninit) and disables MPSL interrupts. Uninitializing MPSL stops clocks and scheduler. This will release all peripherals and reduce power usage, allowing the user to override any interrupt handlers used by MPSL.

Note

After successful execution of this method, user-supplied interrupt handlers can be attached to RADIO_IRQn, RTC0_IRQn, and TIMER0_IRQn using irq_connect_dynamic. Care must be taken when developing these handlers, as they will be executed as direct dynamic interrupts. See ARM_IRQ_DIRECT_DYNAMIC_CONNECT for additional documentation. These interrupts will trigger thread re-scheduling upon return.

Return values
  • 0 – MPSL disabled successfully.

  • -NRF_EPERM – Operation is not supported.

Pre

This method requires CONFIG_MPSL_DYNAMIC_INTERRUPTS to be enabled.