Skip to content

File croutine.h

FileList > FreeRTOS > include > croutine.h

Go to the source code of this file.

  • #include "list.h"

Classes

Type Name
struct corCoRoutineControlBlock

Public Types

Type Name
typedef struct corCoRoutineControlBlock CRCB_t
typedef void * CoRoutineHandle_t
typedef void(* crCOROUTINE_CODE

Public Functions

Type Name
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)

Macros

Type Name
define crDELAY (xHandle, xTicksToDelay)
define crEND () }
define crQUEUE_RECEIVE (xHandle, pxQueue, pvBuffer, xTicksToWait, pxResult)
define crQUEUE_RECEIVE_FROM_ISR (pxQueue, pvBuffer, pxCoRoutineWoken) xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) )
define crQUEUE_SEND (xHandle, pxQueue, pvItemToQueue, xTicksToWait, pxResult)
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:

Public Types Documentation

typedef CRCB_t

typedef struct corCoRoutineControlBlock CRCB_t;

typedef CoRoutineHandle_t

typedef void* CoRoutineHandle_t;

typedef crCOROUTINE_CODE

typedef void(* crCOROUTINE_CODE) (CoRoutineHandle_t, UBaseType_t);

Public Functions Documentation

function vCoRoutineAddToDelayedList

void vCoRoutineAddToDelayedList (
    TickType_t xTicksToDelay,
    List_t * pxEventList
) 

function vCoRoutineSchedule

void vCoRoutineSchedule (
    void
) 

function xCoRoutineCreate

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

function xCoRoutineRemoveFromEventList

BaseType_t xCoRoutineRemoveFromEventList (
    const List_t * pxEventList
) 

Macro Definition Documentation

define crDELAY

#define crDELAY (
    xHandle,
    xTicksToDelay
) if( ( xTicksToDelay ) > 0 )                                                           \
    {                                                                                   \
        vCoRoutineAddToDelayedList( ( xTicksToDelay ), NULL );                          \
    }                                                                                   \
    crSET_STATE0( ( xHandle ) );

define crEND

#define crEND (

) }

define crQUEUE_RECEIVE

#define crQUEUE_RECEIVE (
    xHandle,
    pxQueue,
    pvBuffer,
    xTicksToWait,
    pxResult
) {                                                                                     \
    *( 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;                                                         \
    }                                                                                   \
}

define crQUEUE_RECEIVE_FROM_ISR

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

define crQUEUE_SEND

#define crQUEUE_SEND (
    xHandle,
    pxQueue,
    pvItemToQueue,
    xTicksToWait,
    pxResult
) {                                                                                     \
    *( 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;                                                             \
    }                                                                                   \
}

define crQUEUE_SEND_FROM_ISR

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

define crSET_STATE0

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

define crSET_STATE1

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

define crSTART

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

The documentation for this class was generated from the following file fw/rbcx-coprocessor/lib/FreeRTOS/include/croutine.h