nRF51 SDK - S120 SoftDevice
|
The scheduler is used for transferring execution from the interrupt context to the main context. More...
Macros | |
#define | APP_SCHED_EVENT_HEADER_SIZE 8 |
#define | APP_SCHED_BUF_SIZE(EVENT_SIZE, QUEUE_SIZE) (((EVENT_SIZE) + APP_SCHED_EVENT_HEADER_SIZE) * ((QUEUE_SIZE) + 1)) |
Compute number of bytes required to hold the scheduler buffer. More... | |
#define | APP_SCHED_INIT(EVENT_SIZE, QUEUE_SIZE) |
Macro for initializing the event scheduler. More... | |
Typedefs | |
typedef void(* | app_sched_event_handler_t )(void *p_event_data, uint16_t event_size) |
Scheduler event handler type. | |
Functions | |
uint32_t | app_sched_init (uint16_t max_event_size, uint16_t queue_size, void *p_evt_buffer) |
Function for initializing the Scheduler. More... | |
void | app_sched_execute (void) |
Function for executing all scheduled events. More... | |
uint32_t | app_sched_event_put (void *p_event_data, uint16_t event_size, app_sched_event_handler_t handler) |
Function for scheduling an event. More... | |
The scheduler is used for transferring execution from the interrupt context to the main context.
See ble_sdk_apps_seq_diagrams for sequence diagrams illustrating the flow of events when using the Scheduler.
For an example usage of the scheduler, please see the implementations of ble_sdk_app_hids_mouse and ble_sdk_app_hids_keyboard.
#define APP_SCHED_BUF_SIZE | ( | EVENT_SIZE, | |
QUEUE_SIZE | |||
) | (((EVENT_SIZE) + APP_SCHED_EVENT_HEADER_SIZE) * ((QUEUE_SIZE) + 1)) |
Compute number of bytes required to hold the scheduler buffer.
[in] | EVENT_SIZE | Maximum size of events to be passed through the scheduler. |
[in] | QUEUE_SIZE | Number of entries in scheduler queue (i.e. the maximum number of events that can be scheduled for execution). |
#define APP_SCHED_EVENT_HEADER_SIZE 8 |
Size of app_scheduler.event_header_t (only for use inside APP_SCHED_BUF_SIZE()).
#define APP_SCHED_INIT | ( | EVENT_SIZE, | |
QUEUE_SIZE | |||
) |
Macro for initializing the event scheduler.
It will also handle dimensioning and allocation of the memory buffer required by the scheduler, making sure the buffer is correctly aligned.
[in] | EVENT_SIZE | Maximum size of events to be passed through the scheduler. |
[in] | QUEUE_SIZE | Number of entries in scheduler queue (i.e. the maximum number of events that can be scheduled for execution). |
uint32_t app_sched_event_put | ( | void * | p_event_data, |
uint16_t | event_size, | ||
app_sched_event_handler_t | handler | ||
) |
Function for scheduling an event.
Puts an event into the event queue.
[in] | p_event_data | Pointer to event data to be scheduled. |
[in] | p_event_size | Size of event data to be scheduled. |
[in] | handler | Event handler to receive the event. |
void app_sched_execute | ( | void | ) |
Function for executing all scheduled events.
This function must be called from within the main loop. It will execute all events scheduled since the last time it was called.
uint32_t app_sched_init | ( | uint16_t | max_event_size, |
uint16_t | queue_size, | ||
void * | p_evt_buffer | ||
) |
Function for initializing the Scheduler.
It must be called before entering the main loop.
[in] | max_event_size | Maximum size of events to be passed through the scheduler. |
[in] | queue_size | Number of entries in scheduler queue (i.e. the maximum number of events that can be scheduled for execution). |
[in] | p_event_buffer | Pointer to memory buffer for holding the scheduler queue. It must be dimensioned using the APP_SCHED_BUFFER_SIZE() macro. The buffer must be aligned to a 4 byte boundary. |
NRF_SUCCESS | Successful initialization. |
NRF_ERROR_INVALID_PARAM | Invalid parameter (buffer not aligned to a 4 byte boundary). |