croutine.h File Reference
`#include "list.h"`
Include dependency graph for croutine.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | corCoRoutineControlBlock

## Macros

#define | crSTART(pxCRCB) switch( ( ( CRCB_t * )( pxCRCB ) )->uxState ) { case 0:
#define | crEND() }
#define | crSET_STATE0(xHandle) ( ( CRCB_t * )( xHandle ) )->uxState = (__LINE__ * 2); return; case (__LINE__ * 2):
#define | crSET_STATE1(xHandle) ( ( CRCB_t * )( xHandle ) )->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1):
#define | crDELAY(xHandle, xTicksToDelay)
#define | crQUEUE_SEND(xHandle, pxQueue, pvItemToQueue, xTicksToWait, pxResult)
#define | crQUEUE_RECEIVE(xHandle, pxQueue, pvBuffer, xTicksToWait, pxResult)
#define | crQUEUE_SEND_FROM_ISR(pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken) xQueueCRSendFromISR( ( pxQueue ), ( pvItemToQueue ), ( xCoRoutinePreviouslyWoken ) )
#define | crQUEUE_RECEIVE_FROM_ISR(pxQueue, pvBuffer, pxCoRoutineWoken) xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) )

## Typedefs

typedef void * | CoRoutineHandle_t
typedef void(* | crCOROUTINE_CODE) (CoRoutineHandle_t, UBaseType_t)
typedef struct corCoRoutineControlBlock | CRCB_t

## Functions

BaseType_t | xCoRoutineCreate (crCOROUTINE_CODE pxCoRoutineCode, UBaseType_t uxPriority, UBaseType_t uxIndex)
void | vCoRoutineSchedule (void)
void | vCoRoutineAddToDelayedList (TickType_t xTicksToDelay, List_t *pxEventList)
BaseType_t | xCoRoutineRemoveFromEventList (const List_t *pxEventList)

## Macro Definition Documentation

## crDELAY

#define crDELAY | ( |  | xHandle,
|  |  | xTicksToDelay
| ) |  |

Value:
if( ( xTicksToDelay ) > 0 ) \
{ \
vCoRoutineAddToDelayedList( ( xTicksToDelay ), NULL ); \
} \
crSET_STATE0( ( xHandle ) );

## crEND

#define crEND | ( |  | ) | }

## crQUEUE_RECEIVE

#define crQUEUE_RECEIVE | ( |  | xHandle,
|  |  | pxQueue,
|  |  | pvBuffer,
|  |  | xTicksToWait,
|  |  | pxResult
| ) |  |

Value:
{ \
*( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), ( xTicksToWait ) ); \
if( *( pxResult ) == errQUEUE_BLOCKED ) \
{ \
crSET_STATE0( ( xHandle ) ); \
*( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), 0 ); \
} \
if( *( pxResult ) == errQUEUE_YIELD ) \
{ \
crSET_STATE1( ( xHandle ) ); \
*( pxResult ) = pdPASS; \
} \
}

## crQUEUE_RECEIVE_FROM_ISR

#define crQUEUE_RECEIVE_FROM_ISR | ( |  | pxQueue,
|  |  | pvBuffer,
|  |  | pxCoRoutineWoken
| ) |  | xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) )

## crQUEUE_SEND

#define crQUEUE_SEND | ( |  | xHandle,
|  |  | pxQueue,
|  |  | pvItemToQueue,
|  |  | xTicksToWait,
|  |  | pxResult
| ) |  |

Value:
{ \
*( pxResult ) = xQueueCRSend( ( pxQueue) , ( pvItemToQueue) , ( xTicksToWait ) ); \
if( *( pxResult ) == errQUEUE_BLOCKED ) \
{ \
crSET_STATE0( ( xHandle ) ); \
*pxResult = xQueueCRSend( ( pxQueue ), ( pvItemToQueue ), 0 ); \
} \
if( *pxResult == errQUEUE_YIELD ) \
{ \
crSET_STATE1( ( xHandle ) ); \
*pxResult = pdPASS; \
} \
}

## crQUEUE_SEND_FROM_ISR

#define crQUEUE_SEND_FROM_ISR | ( |  | pxQueue,
|  |  | pvItemToQueue,
|  |  | xCoRoutinePreviouslyWoken
| ) |  | xQueueCRSendFromISR( ( pxQueue ), ( pvItemToQueue ), ( xCoRoutinePreviouslyWoken ) )

## crSET_STATE0

#define crSET_STATE0 | ( |  | xHandle | ) | ( ( CRCB_t * )( xHandle ) )->uxState = (__LINE__ * 2); return; case (__LINE__ * 2):

## crSET_STATE1

#define crSET_STATE1 | ( |  | xHandle | ) | ( ( CRCB_t * )( xHandle ) )->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1):

## crSTART

#define crSTART | ( |  | pxCRCB | ) | switch( ( ( CRCB_t * )( pxCRCB ) )->uxState ) { case 0:

## Typedef Documentation

## CoRoutineHandle_t

typedef void* CoRoutineHandle_t

## CRCB_t

typedef struct corCoRoutineControlBlock CRCB_t

## crCOROUTINE_CODE

typedef void(* crCOROUTINE_CODE) (CoRoutineHandle_t, UBaseType_t)

## Function Documentation

## vCoRoutineAddToDelayedList()

void vCoRoutineAddToDelayedList | ( | TickType_t | xTicksToDelay,
|  | List_t * | pxEventList
| ) |  |

## vCoRoutineSchedule()

void vCoRoutineSchedule | ( | void |  | ) |

## xCoRoutineCreate()

BaseType_t xCoRoutineCreate | ( | crCOROUTINE_CODE | pxCoRoutineCode,
|  | UBaseType_t | uxPriority,
|  | UBaseType_t | uxIndex
| ) |  |

## xCoRoutineRemoveFromEventList()

BaseType_t xCoRoutineRemoveFromEventList | ( | const List_t * | pxEventList | ) |

errQUEUE_BLOCKED
#define errQUEUE_BLOCKED
Definition: projdefs.h:55
xQueueCRReceive
BaseType_t xQueueCRReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait)
xQueueCRSend
BaseType_t xQueueCRSend(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait)
pdPASS
#define pdPASS
Definition: projdefs.h:48
errQUEUE_YIELD
#define errQUEUE_YIELD
Definition: projdefs.h:56