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
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. SeeARM_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.
-
int32_t mpsl_lib_init(void)