Atmel Software Framework

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vCoRoutineSchedule

croutine.

h

 void vCoRoutineSchedule( void );

Run a co-routine.

vCoRoutineSchedule() executes the highest priority co-routine that is able to run. The co-routine will execute until it either blocks, yields or is preempted by a task. Co-routines execute cooperatively so one co-routine cannot be preempted by another, but can be preempted by a task.

If an application comprises of both tasks and co-routines then vCoRoutineSchedule should be called from the idle task (in an idle task hook).

Example usage:

This idle task hook will schedule a co-routine each time it is called.
The rest of the idle task will execute between co-routine calls.
 void vApplicationIdleHook( void )
 {
    vCoRoutineSchedule();
 }
Alternatively, if you do not require any other part of the idle task to
execute, the idle task hook can call vCoRoutineScheduler() within an
infinite loop.
 void vApplicationIdleHook( void )
 {
    for( ;; )
    {
        vCoRoutineSchedule();
    }
 }