API for initializing and disabling the SoftDevice.
More...
|
typedef uint32_t(* | softdevice_evt_schedule_func_t )(void) |
| Type of function for passing events from the stack handler module to the scheduler.
|
|
typedef void(* | sys_evt_handler_t )(uint32_t evt_id) |
| Application System (SOC) event handler type.
|
|
API for initializing and disabling the SoftDevice.
This API contains the functions and defines exposed by the lib_softdevice_handler. For more information on the library and how the application should use it, please refer lib_softdevice_handler.
- Note
- Use the USE_SCHEDULER parameter of the SOFTDEVICE_HANDLER_INIT() macro to select if the Scheduler is to be used or not.
-
Even if the scheduler is not used, softdevice_handler.h will include app_scheduler.h. So when compiling, app_scheduler.h must be available in one of the compiler include paths.
#define SOFTDEVICE_HANDLER_INIT |
( |
|
CLOCK_SOURCE, |
|
|
|
USE_SCHEDULER |
|
) |
| |
Value:do \
{ \
static uint32_t EVT_BUFFER[
CEIL_DIV(MAX( \
), \
sizeof(uint32_t))]; \
uint32_t ERR_CODE; \
EVT_BUFFER, \
sizeof(EVT_BUFFER), \
(USE_SCHEDULER) ? softdevice_evt_schedule : NULL); \
APP_ERROR_CHECK(ERR_CODE); \
} while (0)
Macro for initializing the stack event handler.
It will handle dimensioning and allocation of the memory buffer required for reading events from the stack, making sure the buffer is correctly aligned. It will also connect the stack event handler to the scheduler (if specified).
- Parameters
-
[in] | CLOCK_SOURCE | Low frequency clock source and accuracy (type nrf_clock_lfclksrc_t, see sd_softdevice_enable() for details). |
[in] | USE_SCHEDULER | TRUE if the application is using the event scheduler, FALSE otherwise. |
- Note
- Since this macro allocates a buffer, it must only be called once (it is OK to call it several times as long as it is from the same location, that is to do a reinitialization).
#define SOFTDEVICE_SCHED_EVT_SIZE 0 |
Size of button events being passed through the scheduler (is to be used for computing the maximum size of scheduler events). For SoftDevice events, this size is 0, since the events are being pulled in the event handler.
#define SYS_EVT_MSG_BUF_SIZE sizeof(uint32_t) |
Size of System (SOC) event message buffer.
Function for initializing the stack handler module.
Enables the SoftDevice and the stack event interrupt handler.
- Note
- This function must be called before calling any function in the SoftDevice API.
-
Normally initialization should be done using the SOFTDEVICE_HANDLER_INIT() macro, as that will both allocate the event buffer, and also align the buffer correctly.
- Parameters
-
[in] | clock_source | Low frequency clock source to be used by the SoftDevice. |
[in] | p_evt_buffer | Buffer for holding one stack event. Since heap is not being used, this buffer must be provided by the application. The buffer must be large enough to hold the biggest stack event the application is supposed to handle. The buffer must be aligned to a 4 byte boundary. This parameter is unused if neither BLE nor ANT stack support is required. |
[in] | evt_buffer_size | Size of SoftDevice event buffer. This parameter is unused if BLE stack support is not required. |
[in] | evt_schedule_func | Function for passing events to the scheduler. Point to ble_ant_stack_evt_schedule() to connect to the scheduler. Set to NULL to make the stack handler module call the event handler directly from the stack event interrupt handler. |
- Return values
-
NRF_SUCCESS | Successful initialization. |
NRF_ERROR_INVALID_PARAM | Invalid parameter (buffer not aligned to a 4 byte boundary) or NULL. |
uint32_t softdevice_handler_sd_disable |
( |
void |
| ) |
|
Function for disabling the SoftDevice.
This function will disable the SoftDevice. It will also update the internal state of this module.
Function for registering for System (SOC) events.
The application should use this function to register for receiving System (SOC) events from the SoftDevice. If the application does not call this function, then any System (SOC) events that may be generated by the SoftDevice will NOT be fetched. Once the application has registered for the events, it is not possible to possible to cancel the registration. However, it is possible to register a different function for handling the events at any point of time.
- Parameters
-
[in] | sys_evt_handler | Function to be called for each received System (SOC) event. |
- Return values
-
NRF_SUCCESS | Successful registration. |
NRF_ERROR_NULL | Null pointer provided as input. |