croutine.h File Reference
#include "list.h"
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
#define crDELAY | ( | xHandle, | |
xTicksToDelay | |||
) |
Value:
if( ( xTicksToDelay ) > 0 ) \
{ \
vCoRoutineAddToDelayedList( ( xTicksToDelay ), NULL ); \
} \
crSET_STATE0( ( xHandle ) );
void vCoRoutineAddToDelayedList(TickType_t xTicksToDelay, List_t *pxEventList)
#define crEND | ( | ) | } |
#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; \
} \
}
BaseType_t xQueueCRReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait)
#define crQUEUE_RECEIVE_FROM_ISR | ( | pxQueue, | |
pvBuffer, | |||
pxCoRoutineWoken | |||
) | xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) ) |
#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; \
} \
}
BaseType_t xQueueCRSend(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait)
#define crQUEUE_SEND_FROM_ISR | ( | pxQueue, | |
pvItemToQueue, | |||
xCoRoutinePreviouslyWoken | |||
) | xQueueCRSendFromISR( ( pxQueue ), ( pvItemToQueue ), ( xCoRoutinePreviouslyWoken ) ) |
#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 crSTART | ( | pxCRCB | ) | switch( ( ( CRCB_t * )( pxCRCB ) )->uxState ) { case 0: |
Typedef Documentation
typedef void* CoRoutineHandle_t |
typedef struct corCoRoutineControlBlock CRCB_t |
typedef void(* crCOROUTINE_CODE) (CoRoutineHandle_t, UBaseType_t) |
Function Documentation
void vCoRoutineAddToDelayedList | ( | TickType_t | xTicksToDelay, |
List_t * | pxEventList | ||
) |
void vCoRoutineSchedule | ( | void | ) |
BaseType_t xCoRoutineCreate | ( | crCOROUTINE_CODE | pxCoRoutineCode, |
UBaseType_t | uxPriority, | ||
UBaseType_t | uxIndex | ||
) |
BaseType_t xCoRoutineRemoveFromEventList | ( | const List_t * | pxEventList | ) |