| nRF5 SDK v12.0.0 |

Choose documentation: | nRF5 SDK | S130 SoftDevice API | S132 SoftDevice API | S212 SoftDevice API | S332 SoftDevice API

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Schedule handling library

The scheduler is used for transferring execution from the interrupt context to the main context.

# Requirements:

## Logic in main context:

- Define an event handler for each type of event expected.
- Initialize the scheduler by calling the APP_SCHED_INIT() macro before entering the application main loop.
- Call app_sched_execute() from the main loop each time the application wakes up because of an event (typically when sd_app_evt_wait() returns).

## Logic in interrupt context:

- In the interrupt handler, call app_sched_event_put() with the appropriate data and event handler. This will insert an event into the scheduler's queue. The app_sched_execute() function will pull this event and call its handler in the main context.

For an example usage of the scheduler, see the implementations of HID Mouse Application and HID Keyboard Application.

The high level design of the scheduler

# Applications using the Scheduler

Sequence diagrams illustrating the flow of events for various scenarios in the example applications when using the Scheduler.

Figure 1: Receiving an event from the ble stack causing a service event

Figure 2: The battery timer expires

# Applications not using the Scheduler

Sequence diagrams illustrating the flow of events for various scenarios in the example applications when not using the Scheduler.

Figure 3: Receiving an event from the ble stack causing a service event

Figure 4: The battery timer expires