mirror of
https://github.com/0xFEEDC0DE64/arduino-esp32.git
synced 2025-06-30 04:21:00 +02:00
IDF master b86fe0c66c
This commit is contained in:
@ -90,7 +90,6 @@
|
||||
#define portNUM_PROCESSORS 1
|
||||
#endif
|
||||
|
||||
#define configASSERT_2 0
|
||||
#define portUSING_MPU_WRAPPERS 0
|
||||
#define configUSE_MUTEX 1
|
||||
|
||||
@ -206,7 +205,6 @@
|
||||
#define configGENERATE_RUN_TIME_STATS 1 /* Used by vTaskGetRunTimeStats() */
|
||||
#endif
|
||||
|
||||
#define configUSE_TRACE_FACILITY_2 0
|
||||
#define configBENCHMARK 0
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
#define configIDLE_SHOULD_YIELD 0
|
||||
@ -306,4 +304,9 @@ extern void vPortCleanUpTCB ( void *pxTCB );
|
||||
|
||||
#define configTASK_NOTIFICATION_ARRAY_ENTRIES 1
|
||||
|
||||
// backward compatibility for 4.4
|
||||
#define xTaskRemoveFromUnorderedEventList vTaskRemoveFromUnorderedEventList
|
||||
|
||||
#define configNUM_CORES portNUM_PROCESSORS
|
||||
|
||||
#endif /* FREERTOS_CONFIG_H */
|
||||
|
@ -64,7 +64,7 @@
|
||||
* used to create a synchronisation point between multiple tasks (a
|
||||
* 'rendezvous').
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup EventGroup EventGroup
|
||||
* @endcond
|
||||
*/
|
||||
@ -78,7 +78,7 @@
|
||||
* xEventGroupCreate() returns an EventGroupHandle_t variable that can then
|
||||
* be used as a parameter to other event group functions.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup EventGroupHandle_t EventGroupHandle_t
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -94,7 +94,7 @@ typedef struct EventGroupDef_t * EventGroupHandle_t;
|
||||
* number of bits it holds is set by configUSE_16_BIT_TICKS (16 bits if set to 1,
|
||||
* 32 bits if set to 0.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup EventBits_t EventBits_t
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -102,7 +102,7 @@ typedef struct EventGroupDef_t * EventGroupHandle_t;
|
||||
typedef TickType_t EventBits_t;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* EventGroupHandle_t xEventGroupCreate( void );
|
||||
@ -152,7 +152,7 @@ typedef TickType_t EventBits_t;
|
||||
* // The event group was created.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupCreate xEventGroupCreate
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -162,7 +162,7 @@ typedef TickType_t EventBits_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* EventGroupHandle_t xEventGroupCreateStatic( EventGroupHandle_t * pxEventGroupBuffer );
|
||||
@ -217,7 +217,7 @@ typedef TickType_t EventBits_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
|
||||
@ -307,7 +307,7 @@ typedef TickType_t EventBits_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupWaitBits xEventGroupWaitBits
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -319,7 +319,7 @@ EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
|
||||
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear );
|
||||
@ -372,7 +372,7 @@ EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupClearBits xEventGroupClearBits
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -381,7 +381,7 @@ EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup,
|
||||
const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* BaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );
|
||||
@ -432,7 +432,7 @@ EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup,
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupClearBitsFromISR xEventGroupClearBitsFromISR
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -446,7 +446,7 @@ EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup,
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );
|
||||
@ -516,7 +516,7 @@ EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup,
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupSetBits xEventGroupSetBits
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -525,7 +525,7 @@ EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,
|
||||
const EventBits_t uxBitsToSet ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken );
|
||||
@ -595,7 +595,7 @@ EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupSetBitsFromISR xEventGroupSetBitsFromISR
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -610,7 +610,7 @@ EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
|
||||
@ -732,7 +732,7 @@ EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,
|
||||
* }
|
||||
*
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupSync xEventGroupSync
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -744,7 +744,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
|
||||
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* EventBits_t xEventGroupGetBits( EventGroupHandle_t xEventGroup );
|
||||
@ -758,7 +758,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
|
||||
*
|
||||
* @return The event group bits at the time xEventGroupGetBits() was called.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupGetBits xEventGroupGetBits
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -766,7 +766,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
|
||||
#define xEventGroupGetBits( xEventGroup ) xEventGroupClearBits( xEventGroup, 0 )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup );
|
||||
@ -779,7 +779,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
|
||||
*
|
||||
* @return The event group bits at the time xEventGroupGetBitsFromISR() was called.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xEventGroupGetBitsFromISR xEventGroupGetBitsFromISR
|
||||
* @endcond
|
||||
* \ingroup EventGroup
|
||||
@ -787,7 +787,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
|
||||
EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* event_groups.h
|
||||
* @code{c}
|
||||
* void xEventGroupDelete( EventGroupHandle_t xEventGroup );
|
||||
@ -802,7 +802,7 @@ EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEG
|
||||
*/
|
||||
void vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
|
||||
/* For internal use only. */
|
||||
void vEventGroupSetBitsCallback( void * pvEventGroup,
|
||||
|
@ -85,7 +85,7 @@ typedef void * MessageBufferHandle_t;
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -139,7 +139,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* }
|
||||
*
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferCreate xMessageBufferCreate
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -148,7 +148,7 @@ typedef void * MessageBufferHandle_t;
|
||||
( MessageBufferHandle_t ) xStreamBufferGenericCreate( xBufferSizeBytes, ( size_t ) 0, pdTRUE )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -210,7 +210,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* }
|
||||
*
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferCreateStatic xMessageBufferCreateStatic
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -219,7 +219,7 @@ typedef void * MessageBufferHandle_t;
|
||||
( MessageBufferHandle_t ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, 0, pdTRUE, pucMessageBufferStorageArea, pxStaticMessageBuffer )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -314,7 +314,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferSend xMessageBufferSend
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -323,7 +323,7 @@ typedef void * MessageBufferHandle_t;
|
||||
xStreamBufferSend( ( StreamBufferHandle_t ) xMessageBuffer, pvTxData, xDataLengthBytes, xTicksToWait )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -423,7 +423,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferSendFromISR xMessageBufferSendFromISR
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -432,7 +432,7 @@ typedef void * MessageBufferHandle_t;
|
||||
xStreamBufferSendFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -516,7 +516,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferReceive xMessageBufferReceive
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -526,7 +526,7 @@ typedef void * MessageBufferHandle_t;
|
||||
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -622,7 +622,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferReceiveFromISR xMessageBufferReceiveFromISR
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -631,7 +631,7 @@ typedef void * MessageBufferHandle_t;
|
||||
xStreamBufferReceiveFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -654,7 +654,7 @@ typedef void * MessageBufferHandle_t;
|
||||
vStreamBufferDelete( ( StreamBufferHandle_t ) xMessageBuffer )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
* @code{c}
|
||||
* BaseType_t xMessageBufferIsFull( MessageBufferHandle_t xMessageBuffer ) );
|
||||
@ -674,7 +674,7 @@ typedef void * MessageBufferHandle_t;
|
||||
xStreamBufferIsFull( ( StreamBufferHandle_t ) xMessageBuffer )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
* @code{c}
|
||||
* BaseType_t xMessageBufferIsEmpty( MessageBufferHandle_t xMessageBuffer ) );
|
||||
@ -693,7 +693,7 @@ typedef void * MessageBufferHandle_t;
|
||||
xStreamBufferIsEmpty( ( StreamBufferHandle_t ) xMessageBuffer )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
* @code{c}
|
||||
* BaseType_t xMessageBufferReset( MessageBufferHandle_t xMessageBuffer );
|
||||
@ -712,7 +712,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* the message queue to wait for space to become available, or to wait for a
|
||||
* a message to be available, then pdFAIL is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferReset xMessageBufferReset
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -722,7 +722,7 @@ typedef void * MessageBufferHandle_t;
|
||||
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
* @code{c}
|
||||
* size_t xMessageBufferSpaceAvailable( MessageBufferHandle_t xMessageBuffer ) );
|
||||
@ -740,7 +740,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* architecture, so if xMessageBufferSpacesAvailable() returns 10, then the size
|
||||
* of the largest message that can be written to the message buffer is 6 bytes.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferSpaceAvailable xMessageBufferSpaceAvailable
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -751,7 +751,7 @@ typedef void * MessageBufferHandle_t;
|
||||
xStreamBufferSpacesAvailable( ( StreamBufferHandle_t ) xMessageBuffer ) /* Corrects typo in original macro name. */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
* @code{c}
|
||||
* size_t xMessageBufferNextLengthBytes( MessageBufferHandle_t xMessageBuffer ) );
|
||||
@ -767,7 +767,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* @return The length (in bytes) of the next message in the message buffer, or 0
|
||||
* if the message buffer is empty.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferNextLengthBytes xMessageBufferNextLengthBytes
|
||||
* @endcond
|
||||
* \ingroup MessageBufferManagement
|
||||
@ -776,7 +776,7 @@ typedef void * MessageBufferHandle_t;
|
||||
xStreamBufferNextMessageLengthBytes( ( StreamBufferHandle_t ) xMessageBuffer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -811,7 +811,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* @return If a task was removed from the Blocked state then pdTRUE is returned.
|
||||
* Otherwise pdFALSE is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferSendCompletedFromISR xMessageBufferSendCompletedFromISR
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -820,7 +820,7 @@ typedef void * MessageBufferHandle_t;
|
||||
xStreamBufferSendCompletedFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pxHigherPriorityTaskWoken )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -856,7 +856,7 @@ typedef void * MessageBufferHandle_t;
|
||||
* @return If a task was removed from the Blocked state then pdTRUE is returned.
|
||||
* Otherwise pdFALSE is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xMessageBufferReceiveCompletedFromISR xMessageBufferReceiveCompletedFromISR
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
|
@ -62,7 +62,7 @@ typedef struct QueueDefinition * QueueSetHandle_t;
|
||||
*/
|
||||
typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
|
||||
/* For internal use only. */
|
||||
#define queueSEND_TO_BACK ( ( BaseType_t ) 0 )
|
||||
@ -80,7 +80,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
/** @endcond */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* QueueHandle_t xQueueCreate(
|
||||
@ -146,7 +146,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
* // ... Rest of task code.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueCreate xQueueCreate
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -156,7 +156,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* QueueHandle_t xQueueCreateStatic(
|
||||
@ -235,7 +235,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
* // ... Rest of task code.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueCreateStatic xQueueCreateStatic
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -245,7 +245,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueSendToToFront(
|
||||
@ -321,7 +321,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
* // ... Rest of task code.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueSend xQueueSend
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -330,7 +330,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_FRONT )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueSendToBack(
|
||||
@ -408,7 +408,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
* // ... Rest of task code.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueSend xQueueSend
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -417,7 +417,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueSend(
|
||||
@ -497,7 +497,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
* // ... Rest of task code.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueSend xQueueSend
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -506,7 +506,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueOverwrite(
|
||||
@ -585,7 +585,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
* // ...
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueOverwrite xQueueOverwrite
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -595,7 +595,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueGenericSend(
|
||||
@ -678,7 +678,7 @@ typedef struct QueueDefinition * QueueSetMemberHandle_t;
|
||||
* // ... Rest of task code.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueSend xQueueSend
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -689,7 +689,7 @@ BaseType_t xQueueGenericSend( QueueHandle_t xQueue,
|
||||
const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueuePeek(
|
||||
@ -780,7 +780,7 @@ BaseType_t xQueueGenericSend( QueueHandle_t xQueue,
|
||||
* // ... Rest of task code.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueuePeek xQueuePeek
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -790,7 +790,7 @@ BaseType_t xQueuePeek( QueueHandle_t xQueue,
|
||||
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueuePeekFromISR(
|
||||
@ -820,7 +820,7 @@ BaseType_t xQueuePeek( QueueHandle_t xQueue,
|
||||
* @return pdTRUE if an item was successfully received from the queue,
|
||||
* otherwise pdFALSE.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueuePeekFromISR xQueuePeekFromISR
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -829,7 +829,7 @@ BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue,
|
||||
void * const pvBuffer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueReceive(
|
||||
@ -917,7 +917,7 @@ BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue,
|
||||
* // ... Rest of task code.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueReceive xQueueReceive
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -927,7 +927,7 @@ BaseType_t xQueueReceive( QueueHandle_t xQueue,
|
||||
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue );
|
||||
@ -940,7 +940,7 @@ BaseType_t xQueueReceive( QueueHandle_t xQueue,
|
||||
*
|
||||
* @return The number of messages available in the queue.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup uxQueueMessagesWaiting uxQueueMessagesWaiting
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -948,7 +948,7 @@ BaseType_t xQueueReceive( QueueHandle_t xQueue,
|
||||
UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue );
|
||||
@ -963,7 +963,7 @@ UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNC
|
||||
*
|
||||
* @return The number of spaces available in the queue.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup uxQueueMessagesWaiting uxQueueMessagesWaiting
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -971,7 +971,7 @@ UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNC
|
||||
UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* void vQueueDelete( QueueHandle_t xQueue );
|
||||
@ -983,7 +983,7 @@ UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNC
|
||||
*
|
||||
* @param xQueue A handle to the queue to be deleted.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vQueueDelete vQueueDelete
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -991,7 +991,7 @@ UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNC
|
||||
void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueSendToFrontFromISR(
|
||||
@ -1057,7 +1057,7 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* @endcode
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueSendFromISR xQueueSendFromISR
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -1067,7 +1067,7 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueSendToBackFromISR(
|
||||
@ -1133,7 +1133,7 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* @endcode
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueSendFromISR xQueueSendFromISR
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -1142,7 +1142,7 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueOverwriteFromISR(
|
||||
@ -1225,7 +1225,7 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueOverwriteFromISR xQueueOverwriteFromISR
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -1234,7 +1234,7 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueOVERWRITE )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueSendFromISR(
|
||||
@ -1304,7 +1304,7 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* @endcode
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueSendFromISR xQueueSendFromISR
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -1312,10 +1312,10 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
#define xQueueSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) \
|
||||
xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
/**@{*/
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueGenericSendFromISR(
|
||||
@ -1402,7 +1402,7 @@ BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue,
|
||||
/** @endcond */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* queue. h
|
||||
* @code{c}
|
||||
* BaseType_t xQueueReceiveFromISR(
|
||||
@ -1487,7 +1487,7 @@ BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue,
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xQueueReceiveFromISR xQueueReceiveFromISR
|
||||
* @endcond
|
||||
* \ingroup QueueManagement
|
||||
@ -1504,7 +1504,7 @@ BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FU
|
||||
BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
/*
|
||||
* The functions defined above are for passing data to and from tasks. The
|
||||
* functions below are the equivalents for passing data to and from
|
||||
@ -1778,7 +1778,7 @@ QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
|
||||
*/
|
||||
QueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
|
||||
/* Not public API functions. */
|
||||
void vQueueWaitForMessageRestricted( QueueHandle_t xQueue,
|
||||
|
@ -39,7 +39,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U )
|
||||
#define semGIVE_BLOCK_TIME ( ( TickType_t ) 0U )
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
/**
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
@ -88,7 +88,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vSemaphoreCreateBinary vSemaphoreCreateBinary
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -106,7 +106,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
/** @endcond */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* SemaphoreHandle_t xSemaphoreCreateBinary( void );
|
||||
@ -163,7 +163,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreCreateBinary xSemaphoreCreateBinary
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -173,7 +173,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* SemaphoreHandle_t xSemaphoreCreateBinaryStatic( StaticSemaphore_t *pxSemaphoreBuffer );
|
||||
@ -229,7 +229,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* // Rest of task code goes here.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreCreateBinaryStatic xSemaphoreCreateBinaryStatic
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -239,7 +239,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* xSemaphoreTake(
|
||||
@ -304,7 +304,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreTake xSemaphoreTake
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -312,7 +312,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#define xSemaphoreTake( xSemaphore, xBlockTime ) xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* xSemaphoreTakeRecursive(
|
||||
@ -403,7 +403,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreTakeRecursive xSemaphoreTakeRecursive
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -465,7 +465,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreGive xSemaphoreGive
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -473,7 +473,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#define xSemaphoreGive( xSemaphore ) xQueueGenericSend( ( QueueHandle_t ) ( xSemaphore ), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* xSemaphoreGiveRecursive( SemaphoreHandle_t xMutex );
|
||||
@ -555,7 +555,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreGiveRecursive xSemaphoreGiveRecursive
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -641,7 +641,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreGiveFromISR xSemaphoreGiveFromISR
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -649,7 +649,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#define xSemaphoreGiveFromISR( xSemaphore, pxHigherPriorityTaskWoken ) xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* xSemaphoreTakeFromISR(
|
||||
@ -686,7 +686,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#define xSemaphoreTakeFromISR( xSemaphore, pxHigherPriorityTaskWoken ) xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* SemaphoreHandle_t xSemaphoreCreateMutex( void );
|
||||
@ -741,7 +741,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreCreateMutex xSemaphoreCreateMutex
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -751,7 +751,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* SemaphoreHandle_t xSemaphoreCreateMutexStatic( StaticSemaphore_t *pxMutexBuffer );
|
||||
@ -808,7 +808,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* // so there is no need to check it.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreCreateMutexStatic xSemaphoreCreateMutexStatic
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -951,7 +951,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* SemaphoreHandle_t xSemaphoreCreateCounting( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount );
|
||||
@ -1027,7 +1027,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreCreateCounting xSemaphoreCreateCounting
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -1037,7 +1037,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* SemaphoreHandle_t xSemaphoreCreateCountingStatic( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount, StaticSemaphore_t *pxSemaphoreBuffer );
|
||||
@ -1118,7 +1118,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
* // is no need to check its value.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xSemaphoreCreateCountingStatic xSemaphoreCreateCountingStatic
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -1128,7 +1128,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr. h
|
||||
* @code{c}
|
||||
* void vSemaphoreDelete( SemaphoreHandle_t xSemaphore );
|
||||
@ -1140,7 +1140,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
*
|
||||
* @param xSemaphore A handle to the semaphore to be deleted.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* \defgroup vSemaphoreDelete vSemaphoreDelete
|
||||
* @endcond
|
||||
* \ingroup Semaphores
|
||||
@ -1148,7 +1148,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#define vSemaphoreDelete( xSemaphore ) vQueueDelete( ( QueueHandle_t ) ( xSemaphore ) )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr.h
|
||||
* @code{c}
|
||||
* TaskHandle_t xSemaphoreGetMutexHolder( SemaphoreHandle_t xMutex );
|
||||
@ -1167,7 +1167,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#define xSemaphoreGetMutexHolder( xSemaphore ) xQueueGetMutexHolder( ( xSemaphore ) )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr.h
|
||||
* @code{c}
|
||||
* TaskHandle_t xSemaphoreGetMutexHolderFromISR( SemaphoreHandle_t xMutex );
|
||||
@ -1182,7 +1182,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
||||
#define xSemaphoreGetMutexHolderFromISR( xSemaphore ) xQueueGetMutexHolderFromISR( ( xSemaphore ) )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* semphr.h
|
||||
* @code{c}
|
||||
* UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xSemaphore );
|
||||
|
@ -71,7 +71,7 @@ typedef struct StreamBufferDef_t * StreamBufferHandle_t;
|
||||
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* message_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -134,7 +134,7 @@ typedef struct StreamBufferDef_t * StreamBufferHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferCreate xStreamBufferCreate
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -142,7 +142,7 @@ typedef struct StreamBufferDef_t * StreamBufferHandle_t;
|
||||
#define xStreamBufferCreate( xBufferSizeBytes, xTriggerLevelBytes ) xStreamBufferGenericCreate( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -220,7 +220,7 @@ typedef struct StreamBufferDef_t * StreamBufferHandle_t;
|
||||
* }
|
||||
*
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferCreateStatic xStreamBufferCreateStatic
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -229,7 +229,7 @@ typedef struct StreamBufferDef_t * StreamBufferHandle_t;
|
||||
xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE, pucStreamBufferStorageArea, pxStaticStreamBuffer )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -319,7 +319,7 @@ typedef struct StreamBufferDef_t * StreamBufferHandle_t;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferSend xStreamBufferSend
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -330,7 +330,7 @@ size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
|
||||
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -424,7 +424,7 @@ size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
|
||||
* taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferSendFromISR xStreamBufferSendFromISR
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -435,7 +435,7 @@ size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,
|
||||
BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -517,7 +517,7 @@ size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferReceive xStreamBufferReceive
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -528,7 +528,7 @@ size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
|
||||
TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -607,7 +607,7 @@ size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
|
||||
* taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferReceiveFromISR xStreamBufferReceiveFromISR
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -618,7 +618,7 @@ size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
|
||||
BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -636,7 +636,7 @@ size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
|
||||
*
|
||||
* @param xStreamBuffer The handle of the stream buffer to be deleted.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vStreamBufferDelete vStreamBufferDelete
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -644,7 +644,7 @@ size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
|
||||
void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -660,7 +660,7 @@ void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTI
|
||||
* @return If the stream buffer is full then pdTRUE is returned. Otherwise
|
||||
* pdFALSE is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferIsFull xStreamBufferIsFull
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -668,7 +668,7 @@ void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTI
|
||||
BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -684,7 +684,7 @@ BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_
|
||||
* @return If the stream buffer is empty then pdTRUE is returned. Otherwise
|
||||
* pdFALSE is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferIsEmpty xStreamBufferIsEmpty
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -692,7 +692,7 @@ BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_
|
||||
BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -711,7 +711,7 @@ BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED
|
||||
* a task blocked waiting to send to or read from the stream buffer then the
|
||||
* stream buffer is not reset and pdFAIL is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferReset xStreamBufferReset
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -719,7 +719,7 @@ BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED
|
||||
BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -736,7 +736,7 @@ BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_F
|
||||
* @return The number of bytes that can be written to the stream buffer before
|
||||
* the stream buffer would be full.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferSpacesAvailable xStreamBufferSpacesAvailable
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -744,7 +744,7 @@ BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_F
|
||||
size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -761,7 +761,7 @@ size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVIL
|
||||
* @return The number of bytes that can be read from the stream buffer before
|
||||
* the stream buffer would be empty.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferBytesAvailable xStreamBufferBytesAvailable
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -769,7 +769,7 @@ size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVIL
|
||||
size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -802,7 +802,7 @@ size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILE
|
||||
* then the trigger level will be updated and pdTRUE is returned. Otherwise
|
||||
* pdFALSE is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferSetTriggerLevel xStreamBufferSetTriggerLevel
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -811,7 +811,7 @@ BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
|
||||
size_t xTriggerLevel ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -846,7 +846,7 @@ BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
|
||||
* @return If a task was removed from the Blocked state then pdTRUE is returned.
|
||||
* Otherwise pdFALSE is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferSendCompletedFromISR xStreamBufferSendCompletedFromISR
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -855,7 +855,7 @@ BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer
|
||||
BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* stream_buffer.h
|
||||
*
|
||||
* @code{c}
|
||||
@ -891,7 +891,7 @@ BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer
|
||||
* @return If a task was removed from the Blocked state then pdTRUE is returned.
|
||||
* Otherwise pdFALSE is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xStreamBufferReceiveCompletedFromISR xStreamBufferReceiveCompletedFromISR
|
||||
* @endcond
|
||||
* \ingroup StreamBufferManagement
|
||||
@ -899,7 +899,7 @@ BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer
|
||||
BaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
|
||||
BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
/* Functions below here are not part of the public API. */
|
||||
StreamBufferHandle_t xStreamBufferGenericCreate( size_t xBufferSizeBytes,
|
||||
size_t xTriggerLevelBytes,
|
||||
|
@ -76,7 +76,7 @@
|
||||
* returns (via a pointer parameter) an TaskHandle_t variable that can then
|
||||
* be used as a parameter to vTaskDelete to delete the task.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup TaskHandle_t TaskHandle_t
|
||||
* @endcond
|
||||
* \ingroup Tasks
|
||||
@ -114,7 +114,7 @@ typedef enum
|
||||
eSetValueWithoutOverwrite /* Set the task's notification value if the previous value has been read by the task. */
|
||||
} eNotifyAction;
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
/**
|
||||
* Used internally only.
|
||||
*/
|
||||
@ -189,11 +189,13 @@ typedef enum
|
||||
#define tskIDLE_PRIORITY ( ( UBaseType_t ) 0U )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @endcond
|
||||
*
|
||||
* Macro for forcing a context switch.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup taskYIELD taskYIELD
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -201,7 +203,9 @@ typedef enum
|
||||
#define taskYIELD() portYIELD()
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @endcond
|
||||
*
|
||||
* Macro to mark the start of a critical code region. Preemptive context
|
||||
* switches cannot occur when in a critical region.
|
||||
@ -209,7 +213,7 @@ typedef enum
|
||||
* @note This may alter the stack (depending on the portable implementation)
|
||||
* so must be used with care!
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup taskENTER_CRITICAL taskENTER_CRITICAL
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -228,7 +232,9 @@ typedef enum
|
||||
#endif // ESP_PLATFORM
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @endcond
|
||||
*
|
||||
* Macro to mark the end of a critical code region. Preemptive context
|
||||
* switches cannot occur when in a critical region.
|
||||
@ -236,7 +242,7 @@ typedef enum
|
||||
* @note This may alter the stack (depending on the portable implementation)
|
||||
* so must be used with care!
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup taskEXIT_CRITICAL taskEXIT_CRITICAL
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -255,11 +261,13 @@ typedef enum
|
||||
#define taskEXIT_CRITICAL_ISR( ) portEXIT_CRITICAL_ISR( )
|
||||
#endif // ESP_PLATFORM
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @endcond
|
||||
*
|
||||
* Macro to disable all maskable interrupts.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup taskDISABLE_INTERRUPTS taskDISABLE_INTERRUPTS
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -267,11 +275,13 @@ typedef enum
|
||||
#define taskDISABLE_INTERRUPTS() portDISABLE_INTERRUPTS()
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @endcond
|
||||
*
|
||||
* Macro to enable microcontroller interrupts.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup taskENABLE_INTERRUPTS taskENABLE_INTERRUPTS
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -422,7 +432,7 @@ typedef enum
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskCreate xTaskCreate
|
||||
* @endcond
|
||||
* \ingroup Tasks
|
||||
@ -430,14 +440,14 @@ typedef enum
|
||||
#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
|
||||
|
||||
static inline IRAM_ATTR BaseType_t xTaskCreate(
|
||||
TaskFunction_t pvTaskCode,
|
||||
const char * const pcName,
|
||||
const uint32_t usStackDepth,
|
||||
void * const pvParameters,
|
||||
UBaseType_t uxPriority,
|
||||
TaskHandle_t * const pvCreatedTask)
|
||||
TaskFunction_t pvTaskCode,
|
||||
const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||
const uint32_t usStackDepth,
|
||||
void * const pvParameters,
|
||||
UBaseType_t uxPriority,
|
||||
TaskHandle_t * const pxCreatedTask) PRIVILEGED_FUNCTION
|
||||
{
|
||||
return xTaskCreatePinnedToCore( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pvCreatedTask, tskNO_AFFINITY );
|
||||
return xTaskCreatePinnedToCore( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask, tskNO_AFFINITY );
|
||||
}
|
||||
|
||||
#endif
|
||||
@ -599,20 +609,20 @@ typedef enum
|
||||
|
||||
#if( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||
static inline IRAM_ATTR TaskHandle_t xTaskCreateStatic(
|
||||
TaskFunction_t pvTaskCode,
|
||||
const char * const pcName,
|
||||
const uint32_t ulStackDepth,
|
||||
void * const pvParameters,
|
||||
UBaseType_t uxPriority,
|
||||
StackType_t * const pxStackBuffer,
|
||||
StaticTask_t * const pxTaskBuffer)
|
||||
TaskFunction_t pvTaskCode,
|
||||
const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||
const uint32_t ulStackDepth,
|
||||
void * const pvParameters,
|
||||
UBaseType_t uxPriority,
|
||||
StackType_t * const puxStackBuffer,
|
||||
StaticTask_t * const pxTaskBuffer) PRIVILEGED_FUNCTION
|
||||
{
|
||||
return xTaskCreateStaticPinnedToCore( pvTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, pxStackBuffer, pxTaskBuffer, tskNO_AFFINITY );
|
||||
return xTaskCreateStaticPinnedToCore( pvTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer, tskNO_AFFINITY );
|
||||
}
|
||||
#endif /* configSUPPORT_STATIC_ALLOCATION */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskCreateRestricted( TaskParameters_t *pxTaskDefinition, TaskHandle_t *pxCreatedTask );
|
||||
@ -683,18 +693,18 @@ typedef enum
|
||||
* for( ;; );
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskCreateRestricted xTaskCreateRestricted
|
||||
* @endcond
|
||||
* \ingroup Tasks
|
||||
*/
|
||||
#if ( portUSING_MPU_WRAPPERS == 1 )
|
||||
BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition,
|
||||
TaskHandle_t * pxCreatedTask );
|
||||
TaskHandle_t * pxCreatedTask ) PRIVILEGED_FUNCTION;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskCreateRestrictedStatic( TaskParameters_t *pxTaskDefinition, TaskHandle_t *pxCreatedTask );
|
||||
@ -777,7 +787,7 @@ typedef enum
|
||||
* for( ;; );
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskCreateRestrictedStatic xTaskCreateRestrictedStatic
|
||||
* @endcond
|
||||
* \ingroup Tasks
|
||||
@ -788,7 +798,7 @@ typedef enum
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions );
|
||||
@ -833,7 +843,7 @@ typedef enum
|
||||
* // defined or shared regions have been declared elsewhere).
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskCreateRestricted xTaskCreateRestricted
|
||||
* @endcond
|
||||
* \ingroup Tasks
|
||||
@ -842,7 +852,7 @@ void vTaskAllocateMPURegions( TaskHandle_t xTask,
|
||||
const MemoryRegion_t * const pxRegions ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskDelete( TaskHandle_t xTask );
|
||||
@ -881,7 +891,7 @@ void vTaskAllocateMPURegions( TaskHandle_t xTask,
|
||||
* vTaskDelete( xHandle );
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskDelete vTaskDelete
|
||||
* @endcond
|
||||
* \ingroup Tasks
|
||||
@ -893,10 +903,12 @@ void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
|
||||
*----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskDelay( const TickType_t xTicksToDelay );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* Delay a task for a given number of ticks. The actual time that the
|
||||
* task remains blocked depends on the tick rate. The constant
|
||||
@ -938,7 +950,7 @@ void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* @endcode
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskDelay vTaskDelay
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -946,10 +958,12 @@ void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
|
||||
void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskDelayUntil( TickType_t *pxPreviousWakeTime, const TickType_t xTimeIncrement );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* INCLUDE_xTaskDelayUntil must be defined as 1 for this function to be available.
|
||||
* See the configuration section for more information.
|
||||
@ -1007,7 +1021,7 @@ void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskDelayUntil xTaskDelayUntil
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -1026,7 +1040,7 @@ BaseType_t xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
|
||||
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskAbortDelay( TaskHandle_t xTask );
|
||||
@ -1054,7 +1068,7 @@ BaseType_t xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
|
||||
* @return If the task referenced by xTask was not in the Blocked state then
|
||||
* pdFAIL is returned. Otherwise pdPASS is returned.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskAbortDelay xTaskAbortDelay
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -1062,7 +1076,7 @@ BaseType_t xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
|
||||
BaseType_t xTaskAbortDelay( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );
|
||||
@ -1107,7 +1121,7 @@ BaseType_t xTaskAbortDelay( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup uxTaskPriorityGet uxTaskPriorityGet
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -1115,7 +1129,7 @@ BaseType_t xTaskAbortDelay( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask );
|
||||
@ -1127,7 +1141,7 @@ UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* eTaskState eTaskGetState( TaskHandle_t xTask );
|
||||
@ -1149,7 +1163,7 @@ UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNC
|
||||
eTaskState eTaskGetState( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState );
|
||||
@ -1203,7 +1217,7 @@ eTaskState eTaskGetState( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
* eInvalid ); // Include the task state in xTaskDetails.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskGetInfo vTaskGetInfo
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -1214,7 +1228,7 @@ void vTaskGetInfo( TaskHandle_t xTask,
|
||||
eTaskState eState ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );
|
||||
@ -1254,7 +1268,7 @@ void vTaskGetInfo( TaskHandle_t xTask,
|
||||
* vTaskPrioritySet( NULL, tskIDLE_PRIORITY + 1 );
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskPrioritySet vTaskPrioritySet
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -1263,7 +1277,7 @@ void vTaskPrioritySet( TaskHandle_t xTask,
|
||||
UBaseType_t uxNewPriority ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskSuspend( TaskHandle_t xTaskToSuspend );
|
||||
@ -1312,7 +1326,7 @@ void vTaskPrioritySet( TaskHandle_t xTask,
|
||||
* // with our handle as the parameter.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskSuspend vTaskSuspend
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -1320,7 +1334,7 @@ void vTaskPrioritySet( TaskHandle_t xTask,
|
||||
void vTaskSuspend( TaskHandle_t xTaskToSuspend ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskResume( TaskHandle_t xTaskToResume );
|
||||
@ -1367,7 +1381,7 @@ void vTaskSuspend( TaskHandle_t xTaskToSuspend ) PRIVILEGED_FUNCTION;
|
||||
* // time in accordance with its priority within the system.
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskResume vTaskResume
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -1375,7 +1389,7 @@ void vTaskSuspend( TaskHandle_t xTaskToSuspend ) PRIVILEGED_FUNCTION;
|
||||
void vTaskResume( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void xTaskResumeFromISR( TaskHandle_t xTaskToResume );
|
||||
@ -1402,7 +1416,7 @@ void vTaskResume( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;
|
||||
* otherwise pdFALSE. This is used by the ISR to determine if a context switch
|
||||
* may be required following the ISR.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskResumeFromISR vTaskResumeFromISR
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -1412,9 +1426,9 @@ BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;
|
||||
/*-----------------------------------------------------------
|
||||
* SCHEDULER CONTROL
|
||||
*----------------------------------------------------------*/
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskStartScheduler( void );
|
||||
@ -1445,7 +1459,7 @@ BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* @endcode
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskStartScheduler vTaskStartScheduler
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -1453,7 +1467,7 @@ BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;
|
||||
void vTaskStartScheduler( void ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskEndScheduler( void );
|
||||
@ -1507,7 +1521,7 @@ void vTaskStartScheduler( void ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* @endcode
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskEndScheduler vTaskEndScheduler
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -1517,7 +1531,7 @@ void vTaskEndScheduler( void ) PRIVILEGED_FUNCTION;
|
||||
/** @endcond */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskSuspendAll( void );
|
||||
@ -1566,7 +1580,7 @@ void vTaskEndScheduler( void ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskSuspendAll vTaskSuspendAll
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -1574,7 +1588,7 @@ void vTaskEndScheduler( void ) PRIVILEGED_FUNCTION;
|
||||
void vTaskSuspendAll( void ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskResumeAll( void );
|
||||
@ -1626,7 +1640,7 @@ void vTaskSuspendAll( void ) PRIVILEGED_FUNCTION;
|
||||
* }
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskResumeAll xTaskResumeAll
|
||||
* @endcond
|
||||
* \ingroup SchedulerControl
|
||||
@ -1638,7 +1652,7 @@ BaseType_t xTaskResumeAll( void ) PRIVILEGED_FUNCTION;
|
||||
*----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* TickType_t xTaskGetTickCount( void );
|
||||
@ -1647,7 +1661,7 @@ BaseType_t xTaskResumeAll( void ) PRIVILEGED_FUNCTION;
|
||||
*
|
||||
* @return The count of ticks since vTaskStartScheduler was called.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskGetTickCount xTaskGetTickCount
|
||||
* @endcond
|
||||
* \ingroup TaskUtils
|
||||
@ -1655,7 +1669,7 @@ BaseType_t xTaskResumeAll( void ) PRIVILEGED_FUNCTION;
|
||||
TickType_t xTaskGetTickCount( void ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* TickType_t xTaskGetTickCountFromISR( void );
|
||||
@ -1669,7 +1683,7 @@ TickType_t xTaskGetTickCount( void ) PRIVILEGED_FUNCTION;
|
||||
* microcontroller being used or interrupt nesting is either not supported or
|
||||
* not being used.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskGetTickCountFromISR xTaskGetTickCountFromISR
|
||||
* @endcond
|
||||
* \ingroup TaskUtils
|
||||
@ -1677,7 +1691,7 @@ TickType_t xTaskGetTickCount( void ) PRIVILEGED_FUNCTION;
|
||||
TickType_t xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* uint16_t uxTaskGetNumberOfTasks( void );
|
||||
@ -1689,7 +1703,7 @@ TickType_t xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION;
|
||||
* has been deleted but not yet freed by the idle task will also be
|
||||
* included in the count.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup uxTaskGetNumberOfTasks uxTaskGetNumberOfTasks
|
||||
* @endcond
|
||||
* \ingroup TaskUtils
|
||||
@ -1697,7 +1711,7 @@ TickType_t xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION;
|
||||
UBaseType_t uxTaskGetNumberOfTasks( void ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* char *pcTaskGetName( TaskHandle_t xTaskToQuery );
|
||||
@ -1708,7 +1722,7 @@ UBaseType_t uxTaskGetNumberOfTasks( void ) PRIVILEGED_FUNCTION;
|
||||
* xTaskToQuery. A task can query its own name by either passing in its own
|
||||
* handle, or by setting xTaskToQuery to NULL.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup pcTaskGetName pcTaskGetName
|
||||
* @endcond
|
||||
* \ingroup TaskUtils
|
||||
@ -1716,7 +1730,7 @@ UBaseType_t uxTaskGetNumberOfTasks( void ) PRIVILEGED_FUNCTION;
|
||||
char * pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* TaskHandle_t xTaskGetHandle( const char *pcNameToQuery );
|
||||
@ -1730,7 +1744,7 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION; /*lin
|
||||
* NULL is returned if no matching name is found. INCLUDE_xTaskGetHandle
|
||||
* must be set to 1 in FreeRTOSConfig.h for pcTaskGetHandle() to be available.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup pcTaskGetHandle pcTaskGetHandle
|
||||
* @endcond
|
||||
* \ingroup TaskUtils
|
||||
@ -1813,7 +1827,7 @@ uint8_t* pxTaskGetStackStart( TaskHandle_t xTask) PRIVILEGED_FUNCTION;
|
||||
#ifdef configUSE_APPLICATION_TASK_TAG
|
||||
#if configUSE_APPLICATION_TASK_TAG == 1
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction );
|
||||
@ -1830,7 +1844,7 @@ uint8_t* pxTaskGetStackStart( TaskHandle_t xTask) PRIVILEGED_FUNCTION;
|
||||
TaskHookFunction_t pxHookFunction ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* void xTaskGetApplicationTaskTag( TaskHandle_t xTask );
|
||||
@ -1844,7 +1858,7 @@ uint8_t* pxTaskGetStackStart( TaskHandle_t xTask) PRIVILEGED_FUNCTION;
|
||||
TaskHookFunction_t xTaskGetApplicationTaskTag( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* void xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask );
|
||||
@ -1932,7 +1946,7 @@ uint8_t* pxTaskGetStackStart( TaskHandle_t xTask) PRIVILEGED_FUNCTION;
|
||||
#if ( configCHECK_FOR_STACK_OVERFLOW > 0 )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* void vApplicationStackOverflowHook( TaskHandle_t xTask char *pcTaskName);
|
||||
@ -1952,7 +1966,7 @@ uint8_t* pxTaskGetStackStart( TaskHandle_t xTask) PRIVILEGED_FUNCTION;
|
||||
|
||||
#if ( configUSE_TICK_HOOK > 0 )
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* void vApplicationTickHook( void );
|
||||
@ -1967,7 +1981,7 @@ uint8_t* pxTaskGetStackStart( TaskHandle_t xTask) PRIVILEGED_FUNCTION;
|
||||
|
||||
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer, StackType_t ** ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )
|
||||
@ -1986,7 +2000,7 @@ uint8_t* pxTaskGetStackStart( TaskHandle_t xTask) PRIVILEGED_FUNCTION;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter );
|
||||
@ -2155,7 +2169,7 @@ UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
|
||||
* enough to contain the generated report. Approximately 40 bytes per
|
||||
* task should be sufficient.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskList vTaskList
|
||||
* @endcond
|
||||
* \ingroup TaskUtils
|
||||
@ -2210,7 +2224,7 @@ void vTaskList( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unq
|
||||
* contain the generated report. Approximately 40 bytes per task should
|
||||
* be sufficient.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskGetRunTimeStats vTaskGetRunTimeStats
|
||||
* @endcond
|
||||
* \ingroup TaskUtils
|
||||
@ -2218,7 +2232,7 @@ void vTaskList( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unq
|
||||
void vTaskGetRunTimeStats( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code
|
||||
* uint32_t ulTaskGetIdleRunTimeCounter( void );
|
||||
@ -2246,7 +2260,7 @@ void vTaskGetRunTimeStats( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lin
|
||||
* frequency configured using the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and
|
||||
* portGET_RUN_TIME_COUNTER_VALUE() macros.
|
||||
*
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup ulTaskGetIdleRunTimeCounter ulTaskGetIdleRunTimeCounter
|
||||
* @endcond
|
||||
* \ingroup TaskUtils
|
||||
@ -2254,11 +2268,13 @@ void vTaskGetRunTimeStats( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lin
|
||||
uint32_t ulTaskGetIdleRunTimeCounter( void ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskNotifyIndexed( TaskHandle_t xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction );
|
||||
* BaseType_t xTaskNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* See https://www.FreeRTOS.org/RTOS-task-notifications.html for details.
|
||||
*
|
||||
@ -2359,7 +2375,9 @@ uint32_t ulTaskGetIdleRunTimeCounter( void ) PRIVILEGED_FUNCTION;
|
||||
* @return Dependent on the value of eAction. See the description of the
|
||||
* eAction parameter.
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskNotifyIndexed xTaskNotifyIndexed
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify,
|
||||
@ -2373,11 +2391,13 @@ BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify,
|
||||
xTaskGenericNotify( ( xTaskToNotify ), ( uxIndexToNotify ), ( ulValue ), ( eAction ), NULL )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskNotifyAndQueryIndexed( TaskHandle_t xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotifyValue );
|
||||
* BaseType_t xTaskNotifyAndQuery( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotifyValue );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* See https://www.FreeRTOS.org/RTOS-task-notifications.html for details.
|
||||
*
|
||||
@ -2393,7 +2413,9 @@ BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify,
|
||||
* than when the function returns) in the additional pulPreviousNotifyValue
|
||||
* parameter.
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskNotifyAndQueryIndexed xTaskNotifyAndQueryIndexed
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
#define xTaskNotifyAndQuery( xTaskToNotify, ulValue, eAction, pulPreviousNotifyValue ) \
|
||||
@ -2402,11 +2424,13 @@ BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify,
|
||||
xTaskGenericNotify( ( xTaskToNotify ), ( uxIndexToNotify ), ( ulValue ), ( eAction ), ( pulPreviousNotifyValue ) )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskNotifyIndexedFromISR( TaskHandle_t xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, BaseType_t *pxHigherPriorityTaskWoken );
|
||||
* BaseType_t xTaskNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, BaseType_t *pxHigherPriorityTaskWoken );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* See https://www.FreeRTOS.org/RTOS-task-notifications.html for details.
|
||||
*
|
||||
@ -2511,7 +2535,9 @@ BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify,
|
||||
* @return Dependent on the value of eAction. See the description of the
|
||||
* eAction parameter.
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskNotifyIndexedFromISR xTaskNotifyIndexedFromISR
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify,
|
||||
@ -2526,11 +2552,13 @@ BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify,
|
||||
xTaskGenericNotifyFromISR( ( xTaskToNotify ), ( uxIndexToNotify ), ( ulValue ), ( eAction ), NULL, ( pxHigherPriorityTaskWoken ) )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskNotifyAndQueryIndexedFromISR( TaskHandle_t xTaskToNotify, UBaseType_t uxIndexToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken );
|
||||
* BaseType_t xTaskNotifyAndQueryFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* See https://www.FreeRTOS.org/RTOS-task-notifications.html for details.
|
||||
*
|
||||
@ -2546,7 +2574,9 @@ BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify,
|
||||
* function is called rather than at the time the function returns) in the
|
||||
* additional pulPreviousNotifyValue parameter.
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskNotifyAndQueryIndexedFromISR xTaskNotifyAndQueryIndexedFromISR
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
#define xTaskNotifyAndQueryIndexedFromISR( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue, pxHigherPriorityTaskWoken ) \
|
||||
@ -2555,12 +2585,14 @@ BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify,
|
||||
xTaskGenericNotifyFromISR( ( xTaskToNotify ), ( tskDEFAULT_INDEX_TO_NOTIFY ), ( ulValue ), ( eAction ), ( pulPreviousNotificationValue ), ( pxHigherPriorityTaskWoken ) )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskNotifyWaitIndexed( UBaseType_t uxIndexToWaitOn, uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait );
|
||||
*
|
||||
* BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* Waits for a direct to task notification to be pending at a given index within
|
||||
* an array of direct to task notifications.
|
||||
@ -2655,7 +2687,9 @@ BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify,
|
||||
* already pending when xTaskNotifyWait was called) then pdPASS is
|
||||
* returned. Otherwise pdFAIL is returned.
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskNotifyWaitIndexed xTaskNotifyWaitIndexed
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
BaseType_t xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
|
||||
@ -2669,11 +2703,13 @@ BaseType_t xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
|
||||
xTaskGenericNotifyWait( ( uxIndexToWaitOn ), ( ulBitsToClearOnEntry ), ( ulBitsToClearOnExit ), ( pulNotificationValue ), ( xTicksToWait ) )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskNotifyGiveIndexed( TaskHandle_t xTaskToNotify, UBaseType_t uxIndexToNotify );
|
||||
* BaseType_t xTaskNotifyGive( TaskHandle_t xTaskToNotify );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* Sends a direct to task notification to a particular index in the target
|
||||
* task's notification array in a manner similar to giving a counting semaphore.
|
||||
@ -2737,7 +2773,9 @@ BaseType_t xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
|
||||
* @return xTaskNotifyGive() is a macro that calls xTaskNotify() with the
|
||||
* eAction parameter set to eIncrement - so pdPASS is always returned.
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskNotifyGiveIndexed xTaskNotifyGiveIndexed
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
#define xTaskNotifyGive( xTaskToNotify ) \
|
||||
@ -2746,11 +2784,13 @@ BaseType_t xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
|
||||
xTaskGenericNotify( ( xTaskToNotify ), ( uxIndexToNotify ), ( 0 ), eIncrement, NULL )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* void vTaskNotifyGiveIndexedFromISR( TaskHandle_t xTaskHandle, UBaseType_t uxIndexToNotify, BaseType_t *pxHigherPriorityTaskWoken );
|
||||
* void vTaskNotifyGiveFromISR( TaskHandle_t xTaskHandle, BaseType_t *pxHigherPriorityTaskWoken );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* A version of xTaskNotifyGiveIndexed() that can be called from an interrupt
|
||||
* service routine (ISR).
|
||||
@ -2821,7 +2861,9 @@ BaseType_t xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
|
||||
* requested from an ISR is dependent on the port - see the documentation page
|
||||
* for the port in use.
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup vTaskNotifyGiveIndexedFromISR vTaskNotifyGiveIndexedFromISR
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
void vTaskGenericNotifyGiveFromISR( TaskHandle_t xTaskToNotify,
|
||||
@ -2833,12 +2875,14 @@ void vTaskGenericNotifyGiveFromISR( TaskHandle_t xTaskToNotify,
|
||||
vTaskGenericNotifyGiveFromISR( ( xTaskToNotify ), ( uxIndexToNotify ), ( pxHigherPriorityTaskWoken ) );
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* uint32_t ulTaskNotifyTakeIndexed( UBaseType_t uxIndexToWaitOn, BaseType_t xClearCountOnExit, TickType_t xTicksToWait );
|
||||
*
|
||||
* uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* Waits for a direct to task notification on a particular index in the calling
|
||||
* task's notification array in a manner similar to taking a counting semaphore.
|
||||
@ -2927,7 +2971,9 @@ void vTaskGenericNotifyGiveFromISR( TaskHandle_t xTaskToNotify,
|
||||
* @return The task's notification count before it is either cleared to zero or
|
||||
* decremented (see the xClearCountOnExit parameter).
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup ulTaskNotifyTakeIndexed ulTaskNotifyTakeIndexed
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
uint32_t ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
|
||||
@ -2939,12 +2985,14 @@ uint32_t ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
|
||||
ulTaskGenericNotifyTake( ( uxIndexToWaitOn ), ( xClearCountOnExit ), ( xTicksToWait ) )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskNotifyStateClearIndexed( TaskHandle_t xTask, UBaseType_t uxIndexToCLear );
|
||||
*
|
||||
* BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* See https://www.FreeRTOS.org/RTOS-task-notifications.html for details.
|
||||
*
|
||||
@ -2992,7 +3040,9 @@ uint32_t ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
|
||||
* @return pdTRUE if the task's notification state was set to
|
||||
* eNotWaitingNotification, otherwise pdFALSE.
|
||||
*
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskNotifyStateClearIndexed xTaskNotifyStateClearIndexed
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
BaseType_t xTaskGenericNotifyStateClear( TaskHandle_t xTask,
|
||||
@ -3003,12 +3053,14 @@ BaseType_t xTaskGenericNotifyStateClear( TaskHandle_t xTask,
|
||||
xTaskGenericNotifyStateClear( ( xTask ), ( uxIndexToClear ) )
|
||||
|
||||
/**
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task. h
|
||||
* @code{c}
|
||||
* uint32_t ulTaskNotifyValueClearIndexed( TaskHandle_t xTask, UBaseType_t uxIndexToClear, uint32_t ulBitsToClear );
|
||||
*
|
||||
* uint32_t ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear );
|
||||
* @endcode
|
||||
* @endcond
|
||||
*
|
||||
* See https://www.FreeRTOS.org/RTOS-task-notifications.html for details.
|
||||
*
|
||||
@ -3057,7 +3109,9 @@ BaseType_t xTaskGenericNotifyStateClear( TaskHandle_t xTask,
|
||||
*
|
||||
* @return The value of the target task's notification value before the bits
|
||||
* specified by ulBitsToClear were cleared.
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup ulTaskNotifyValueClear ulTaskNotifyValueClear
|
||||
* @endcond
|
||||
* \ingroup TaskNotifications
|
||||
*/
|
||||
uint32_t ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
|
||||
@ -3069,7 +3123,7 @@ uint32_t ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
|
||||
ulTaskGenericNotifyValueClear( ( xTask ), ( uxIndexToClear ), ( ulBitsToClear ) )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut );
|
||||
@ -3082,14 +3136,14 @@ uint32_t ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
|
||||
* is to be captured. The captured time includes the tick count and the number
|
||||
* of times the tick count has overflowed since the system first booted.
|
||||
* \defgroup vTaskSetTimeOutState vTaskSetTimeOutState
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \ingroup TaskCtrl
|
||||
* @endcond
|
||||
*/
|
||||
void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code
|
||||
* BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait );
|
||||
@ -3170,7 +3224,7 @@ void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNCTION;
|
||||
* return uxReceived;
|
||||
* }
|
||||
* @endcode
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \defgroup xTaskCheckForTimeOut xTaskCheckForTimeOut
|
||||
* @endcond
|
||||
* \ingroup TaskCtrl
|
||||
@ -3179,7 +3233,7 @@ BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
|
||||
TickType_t * const pxTicksToWait ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp );
|
||||
@ -3204,7 +3258,7 @@ BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
|
||||
* blocked state and a context switch being performed. Otherwise pdFALSE.
|
||||
*
|
||||
* \defgroup xTaskCatchUpTicks xTaskCatchUpTicks
|
||||
* @cond
|
||||
* @cond !DOC_SINGLE_GROUP
|
||||
* \ingroup TaskCtrl
|
||||
* @endcond
|
||||
*/
|
||||
@ -3214,7 +3268,7 @@ BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) PRIVILEGED_FUNCTION;
|
||||
/*-----------------------------------------------------------
|
||||
* SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES
|
||||
*----------------------------------------------------------*/
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
/*
|
||||
* Return the handle of the task running on a certain CPU. Because of
|
||||
* the nature of SMP processing, there is no guarantee that this
|
||||
@ -3335,8 +3389,8 @@ void vTaskPlaceOnEventListRestricted( List_t * const pxEventList,
|
||||
* making the call, otherwise pdFALSE.
|
||||
*/
|
||||
BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) PRIVILEGED_FUNCTION;
|
||||
BaseType_t xTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem,
|
||||
const TickType_t xItemValue ) PRIVILEGED_FUNCTION;
|
||||
void vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem,
|
||||
const TickType_t xItemValue ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/*
|
||||
* THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY
|
||||
@ -3399,11 +3453,6 @@ void vTaskPriorityDisinheritAfterTimeout( TaskHandle_t const pxMutexHolder,
|
||||
*/
|
||||
UBaseType_t uxTaskGetTaskNumber( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/*
|
||||
* Get the current core affinity of a task
|
||||
*/
|
||||
BaseType_t xTaskGetAffinity( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/*
|
||||
* Set the uxTaskNumber of the task referenced by the xTask parameter to
|
||||
* uxHandle.
|
||||
|
@ -450,7 +450,7 @@ void vTimerSetTimerID( TimerHandle_t xTimer,
|
||||
BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* TaskHandle_t xTimerGetTimerDaemonTaskHandle( void );
|
||||
* @endcond
|
||||
*
|
||||
@ -1315,7 +1315,7 @@ TickType_t xTimerGetPeriod( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
||||
*/
|
||||
TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
|
||||
|
||||
/** @cond */
|
||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||
|
||||
/*
|
||||
* Functions beyond this part are not part of the public API and are intended
|
||||
@ -1339,7 +1339,7 @@ BaseType_t xTimerGenericCommand( TimerHandle_t xTimer,
|
||||
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||
|
||||
/**
|
||||
* @cond
|
||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||
* task.h
|
||||
* @code{c}
|
||||
* void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer, StackType_t ** ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize )
|
||||
|
@ -24,89 +24,465 @@
|
||||
*
|
||||
* 1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
#ifndef PORTMACRO_H
|
||||
#define PORTMACRO_H
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#include "sdkconfig.h"
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include "soc/spinlock.h"
|
||||
#include "soc/interrupt_core0_reg.h"
|
||||
#include "soc/cpu.h"
|
||||
#include "esp_attr.h"
|
||||
#include "esp_rom_sys.h"
|
||||
#include "esp_timer.h" /* required for FreeRTOS run time stats */
|
||||
#include "esp_heap_caps.h"
|
||||
#include "esp_system.h" /* required by esp_get_...() functions in portable.h. [refactor-todo] Update portable.h */
|
||||
#include "esp_newlib.h"
|
||||
#include "portbenchmark.h"
|
||||
|
||||
/* [refactor-todo] These includes are not directly used in this file. They are kept into to prevent a breaking change. Remove these. */
|
||||
#include <limits.h>
|
||||
#ifdef CONFIG_LEGACY_INCLUDE_COMMON_HEADERS
|
||||
#include "soc/soc_memory_layout.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include "esp_timer.h" /* required for FreeRTOS run time stats */
|
||||
|
||||
#include "sdkconfig.h"
|
||||
#include "esp_attr.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#ifdef CONFIG_LEGACY_INCLUDE_COMMON_HEADERS
|
||||
#include "soc/soc_memory_layout.h"
|
||||
#endif
|
||||
#include "soc/spinlock.h"
|
||||
#include "soc/interrupt_core0_reg.h"
|
||||
#include "esp_rom_sys.h"
|
||||
#include "soc/cpu.h"
|
||||
#include "esp_system.h"
|
||||
#include "esp_newlib.h"
|
||||
/* --------------------------------------------------- Port Types ------------------------------------------------------
|
||||
* - Port specific types.
|
||||
* - The settings in this file configure FreeRTOS correctly for the given hardware and compiler.
|
||||
* - These settings should not be altered.
|
||||
* - The port types must come first as they are used further down in this file
|
||||
* ------------------------------------------------------------------------------------------------------------------ */
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
* Port specific definitions.
|
||||
*
|
||||
* The settings in this file configure FreeRTOS correctly for the
|
||||
* given hardware and compiler.
|
||||
*
|
||||
* These settings should not be altered.
|
||||
*-----------------------------------------------------------
|
||||
*/
|
||||
#define portCHAR uint8_t
|
||||
#define portFLOAT float
|
||||
#define portDOUBLE double
|
||||
#define portLONG int32_t
|
||||
#define portSHORT int16_t
|
||||
#define portSTACK_TYPE uint8_t
|
||||
#define portBASE_TYPE int
|
||||
|
||||
/* Type definitions. */
|
||||
#define portCHAR uint8_t
|
||||
#define portFLOAT float
|
||||
#define portDOUBLE double
|
||||
#define portLONG int32_t
|
||||
#define portSHORT int16_t
|
||||
#define portSTACK_TYPE uint8_t
|
||||
#define portBASE_TYPE int
|
||||
// interrupt module will mask interrupt with priority less than threshold
|
||||
#define RVHAL_EXCM_LEVEL 4
|
||||
typedef portSTACK_TYPE StackType_t;
|
||||
typedef portBASE_TYPE BaseType_t;
|
||||
typedef unsigned portBASE_TYPE UBaseType_t;
|
||||
|
||||
typedef portSTACK_TYPE StackType_t;
|
||||
typedef portBASE_TYPE BaseType_t;
|
||||
typedef unsigned portBASE_TYPE UBaseType_t;
|
||||
|
||||
#if( configUSE_16_BIT_TICKS == 1 )
|
||||
typedef uint16_t TickType_t;
|
||||
#define portMAX_DELAY ( TickType_t ) 0xffff
|
||||
#if (configUSE_16_BIT_TICKS == 1)
|
||||
typedef uint16_t TickType_t;
|
||||
#define portMAX_DELAY (TickType_t) 0xffff
|
||||
#else
|
||||
typedef uint32_t TickType_t;
|
||||
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL
|
||||
typedef uint32_t TickType_t;
|
||||
#define portMAX_DELAY (TickType_t) 0xffffffffUL
|
||||
#endif
|
||||
/*------------------------------------------------------*/
|
||||
|
||||
/* Architecture specifics. */
|
||||
#define portSTACK_GROWTH ( -1 )
|
||||
#define portTICK_PERIOD_MS ( ( TickType_t ) (1000 / configTICK_RATE_HZ) )
|
||||
#define portBYTE_ALIGNMENT 16
|
||||
/*-----------------------------------------------------------*/
|
||||
#include "portbenchmark.h"
|
||||
/* Task function macros as described on the FreeRTOS.org WEB site. */
|
||||
#define portTASK_FUNCTION_PROTO(vFunction, pvParameters) void vFunction(void *pvParameters)
|
||||
#define portTASK_FUNCTION(vFunction, pvParameters) void vFunction(void *pvParameters)
|
||||
|
||||
static inline BaseType_t IRAM_ATTR xPortGetCoreID(void) {
|
||||
return cpu_hal_get_core_id();
|
||||
// interrupt module will mask interrupt with priority less than threshold
|
||||
#define RVHAL_EXCM_LEVEL 4
|
||||
|
||||
|
||||
/* ----------------------------------------------- Port Configurations -------------------------------------------------
|
||||
* - Configurations values supplied by each port
|
||||
* - Required by FreeRTOS
|
||||
* ------------------------------------------------------------------------------------------------------------------ */
|
||||
|
||||
#define portCRITICAL_NESTING_IN_TCB 0
|
||||
#define portSTACK_GROWTH (-1)
|
||||
#define portTICK_PERIOD_MS ((TickType_t) (1000 / configTICK_RATE_HZ))
|
||||
#define portBYTE_ALIGNMENT 16
|
||||
#define portNOP() __asm volatile (" nop ")
|
||||
|
||||
|
||||
|
||||
/* ---------------------------------------------- Forward Declarations -------------------------------------------------
|
||||
* - Forward declarations of all the port functions and macros need to implement the FreeRTOS porting interface
|
||||
* - These must come before definition/declaration of the FreeRTOS porting interface
|
||||
* ------------------------------------------------------------------------------------------------------------------ */
|
||||
|
||||
// --------------------- Interrupts ------------------------
|
||||
|
||||
/**
|
||||
* @brief Checks if the current core is in an ISR context
|
||||
*
|
||||
* - ISR context consist of Low/Mid priority ISR, or time tick ISR
|
||||
* - High priority ISRs aren't detected here, but they normally cannot call C code, so that should not be an issue anyway.
|
||||
*
|
||||
* @note [refactor-todo] Check if this should be inlined
|
||||
* @return
|
||||
* - pdTRUE if in ISR
|
||||
* - pdFALSE otherwise
|
||||
*/
|
||||
BaseType_t xPortInIsrContext(void);
|
||||
|
||||
/**
|
||||
* @brief Check if in ISR context from High priority ISRs
|
||||
*
|
||||
* - Called from High priority ISR
|
||||
* - Checks if the previous context (before high priority interrupt) was in ISR context (meaning low/med priority)
|
||||
*
|
||||
* @note [refactor-todo] Check if this should be inlined
|
||||
* @return
|
||||
* - pdTRUE if in previous in ISR context
|
||||
* - pdFALSE otherwise
|
||||
*/
|
||||
BaseType_t xPortInterruptedFromISRContext(void);
|
||||
|
||||
/**
|
||||
* @brief Disable interrupts in a nested manner
|
||||
*
|
||||
* - Cleaner solution allows nested interrupts disabling and restoring via local registers or stack.
|
||||
* - They can be called from interrupts too.
|
||||
* - WARNING Only applies to current CPU.
|
||||
*
|
||||
* @note [refactor-todo] Define this as portSET_INTERRUPT_MASK_FROM_ISR() instead
|
||||
* @return unsigned Previous interrupt state
|
||||
*/
|
||||
static inline unsigned portENTER_CRITICAL_NESTED(void);
|
||||
|
||||
/* ---------------------- Spinlocks ------------------------
|
||||
- Spinlocks added to match API with SMP FreeRTOS. Single core RISC-V does not need spin locks
|
||||
- Because single core does not have a primitive spinlock data type, we have to implement one here
|
||||
* @note [refactor-todo] Refactor critical section API so that this is no longer required
|
||||
* ------------------------------------------------------ */
|
||||
|
||||
/**
|
||||
* @brief Spinlock object
|
||||
* Owner:
|
||||
* - Set to 0 if uninitialized
|
||||
* - Set to portMUX_FREE_VAL when free
|
||||
* - Set to CORE_ID_REGVAL_PRO or CORE_ID_REGVAL_AP when locked
|
||||
* - Any other value indicates corruption
|
||||
* Count:
|
||||
* - 0 if unlocked
|
||||
* - Recursive count if locked
|
||||
*
|
||||
* @note Not a true spinlock as single core RISC-V does not have atomic compare and set instruction
|
||||
* @note Keep portMUX_INITIALIZER_UNLOCKED in sync with this struct
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t owner;
|
||||
uint32_t count;
|
||||
#ifdef CONFIG_FREERTOS_PORTMUX_DEBUG
|
||||
const char *lastLockedFn;
|
||||
int lastLockedLine;
|
||||
#endif
|
||||
} portMUX_TYPE;
|
||||
/**< Spinlock initializer */
|
||||
#ifndef CONFIG_FREERTOS_PORTMUX_DEBUG
|
||||
#define portMUX_INITIALIZER_UNLOCKED { \
|
||||
.owner = portMUX_FREE_VAL, \
|
||||
.count = 0, \
|
||||
}
|
||||
#else
|
||||
#define portMUX_INITIALIZER_UNLOCKED { \
|
||||
.owner = portMUX_FREE_VAL, \
|
||||
.count = 0, \
|
||||
.lastLockedFn = "(never locked)", \
|
||||
.lastLockedLine = -1 \
|
||||
}
|
||||
#endif /* CONFIG_FREERTOS_PORTMUX_DEBUG */
|
||||
#define portMUX_FREE_VAL SPINLOCK_FREE /**< Spinlock is free. [refactor-todo] check if this is still required */
|
||||
#define portMUX_NO_TIMEOUT SPINLOCK_WAIT_FOREVER /**< When passed for 'timeout_cycles', spin forever if necessary. [refactor-todo] check if this is still required */
|
||||
#define portMUX_TRY_LOCK SPINLOCK_NO_WAIT /**< Try to acquire the spinlock a single time only. [refactor-todo] check if this is still required */
|
||||
|
||||
/**
|
||||
* @brief Initialize a spinlock
|
||||
*
|
||||
* - Initializes a spinlock that is used by FreeRTOS SMP critical sections
|
||||
*
|
||||
* @note [refactor-todo] We can make this inline or consider making it a macro
|
||||
* @param[in] mux Spinlock
|
||||
*/
|
||||
void vPortCPUInitializeMutex(portMUX_TYPE *mux);
|
||||
|
||||
/**
|
||||
* @brief Acquire a spinlock
|
||||
*
|
||||
* @note [refactor-todo] check if we still need this
|
||||
* @note [refactor-todo] Check if this should be inlined
|
||||
* @param[in] mux Spinlock
|
||||
*/
|
||||
void vPortCPUAcquireMutex(portMUX_TYPE *mux);
|
||||
|
||||
/**
|
||||
* @brief Acquire a spinlock but with a specified timeout
|
||||
*
|
||||
* @note [refactor-todo] Check if we still need this
|
||||
* @note [refactor-todo] Check if this should be inlined
|
||||
* @note [refactor-todo] Check if this function should be renamed (due to bool return type)
|
||||
* @param[in] mux Spinlock
|
||||
* @param[in] timeout Timeout in number of CPU cycles
|
||||
* @return true Spinlock acquired
|
||||
* @return false Timed out
|
||||
*/
|
||||
bool vPortCPUAcquireMutexTimeout(portMUX_TYPE *mux, int timeout_cycles);
|
||||
|
||||
/**
|
||||
* @brief Release a spinlock
|
||||
*
|
||||
* @note [refactor-todo] check if we still need this
|
||||
* @note [refactor-todo] Check if this should be inlined
|
||||
* @param[in] mux Spinlock
|
||||
*/
|
||||
void vPortCPUReleaseMutex(portMUX_TYPE *mux);
|
||||
|
||||
/**
|
||||
* @brief Wrapper for atomic compare-and-set instruction
|
||||
*
|
||||
* @note Isn't a real atomic CAS.
|
||||
* @note [refactor-todo] check if we still need this
|
||||
* @note [refactor-todo] Check if this function should be renamed (due to void return type)
|
||||
*
|
||||
* @param[inout] addr Pointer to target address
|
||||
* @param[in] compare Compare value
|
||||
* @param[inout] set Pointer to set value
|
||||
*/
|
||||
static inline void __attribute__((always_inline)) uxPortCompareSet(volatile uint32_t *addr, uint32_t compare, uint32_t *set);
|
||||
|
||||
/**
|
||||
* @brief Wrapper for atomic compare-and-set instruction in external RAM
|
||||
*
|
||||
* @note Isn't a real atomic CAS.
|
||||
* @note [refactor-todo] check if we still need this
|
||||
* @note [refactor-todo] Check if this function should be renamed (due to void return type)
|
||||
*
|
||||
* @param[inout] addr Pointer to target address
|
||||
* @param[in] compare Compare value
|
||||
* @param[inout] set Pointer to set value
|
||||
*/
|
||||
static inline void uxPortCompareSetExtram(volatile uint32_t *addr, uint32_t compare, uint32_t *set);
|
||||
|
||||
// ------------------ Critical Sections --------------------
|
||||
|
||||
/**
|
||||
* @brief Enter a critical section
|
||||
*
|
||||
* - Simply disable interrupts
|
||||
* - Can be nested
|
||||
*/
|
||||
void vPortEnterCritical(void);
|
||||
|
||||
/**
|
||||
* @brief Exit a critical section
|
||||
*
|
||||
* - Reenables interrupts
|
||||
* - Can be nested
|
||||
*/
|
||||
void vPortExitCritical(void);
|
||||
|
||||
// ---------------------- Yielding -------------------------
|
||||
|
||||
/**
|
||||
* @brief Set interrupt mask and return current interrupt enable register
|
||||
*
|
||||
* @note [refactor-todo] Check if this function should be renamed (due to int return type)
|
||||
* @return int Current interrupt enable register before set
|
||||
*/
|
||||
int vPortSetInterruptMask(void);
|
||||
|
||||
/**
|
||||
* @brief Clear current interrupt mask and set given mask
|
||||
*
|
||||
* @param mask Interrupt mask
|
||||
*/
|
||||
void vPortClearInterruptMask(int mask);
|
||||
|
||||
/**
|
||||
* @brief Perform a context switch from a task
|
||||
*
|
||||
* @note [refactor-todo] The rest of ESP-IDF should call taskYield() instead
|
||||
*/
|
||||
void vPortYield(void);
|
||||
|
||||
/**
|
||||
* @brief Perform a context switch from an ISR
|
||||
*/
|
||||
void vPortYieldFromISR(void);
|
||||
|
||||
/**
|
||||
* @brief Yields the other core
|
||||
*
|
||||
* @note Added to be compatible with SMP API
|
||||
* @note [refactor-todo] Put this into private macros as its only called from task.c and is not public API
|
||||
* @param coreid ID of core to yield
|
||||
*/
|
||||
void vPortYieldOtherCore(BaseType_t coreid);
|
||||
|
||||
/**
|
||||
* @brief Checks if the current core can yield
|
||||
*
|
||||
* - A core cannot yield if its in an ISR or in a critical section
|
||||
*
|
||||
* @note [refactor-todo] See if this can be separated from port macro
|
||||
* @note [refactor-todo] Check if this function should be renamed (due to bool return type)
|
||||
* @return true Core can yield
|
||||
* @return false Core cannot yield
|
||||
*/
|
||||
static inline bool IRAM_ATTR xPortCanYield(void);
|
||||
|
||||
// ------------------- Hook Functions ----------------------
|
||||
|
||||
extern void esp_vApplicationIdleHook(void);
|
||||
extern void esp_vApplicationTickHook(void);
|
||||
|
||||
/**
|
||||
* @brief Hook function called on entry to tickless idle
|
||||
*
|
||||
* - Implemented in pm_impl.c
|
||||
*
|
||||
* @param xExpectedIdleTime Expected idle time
|
||||
*/
|
||||
void vApplicationSleep(TickType_t xExpectedIdleTime);
|
||||
|
||||
// ----------------------- System --------------------------
|
||||
|
||||
/**
|
||||
* @brief Get the tick rate per second
|
||||
*
|
||||
* @note [refactor-todo] make this inline
|
||||
* @note [refactor-todo] Check if this function should be renamed (due to uint return type)
|
||||
* @return uint32_t Tick rate in Hz
|
||||
*/
|
||||
uint32_t xPortGetTickRateHz(void);
|
||||
|
||||
/**
|
||||
* @brief Set a watchpoint to watch the last 32 bytes of the stack
|
||||
*
|
||||
* Callback to set a watchpoint on the end of the stack. Called every context switch to change the stack watchpoint
|
||||
* around.
|
||||
*
|
||||
* @param pxStackStart Pointer to the start of the stack
|
||||
*/
|
||||
void vPortSetStackWatchpoint(void *pxStackStart);
|
||||
|
||||
/**
|
||||
* @brief Get the current core's ID
|
||||
*
|
||||
* @note Added to be compatible with SMP API
|
||||
* @note [refactor-todo] IDF should call a FreeRTOS like macro instead of port function directly
|
||||
* @return BaseType_t Core ID
|
||||
*/
|
||||
static inline BaseType_t IRAM_ATTR xPortGetCoreID(void)
|
||||
{
|
||||
return (uint32_t) cpu_hal_get_core_id();
|
||||
}
|
||||
|
||||
|
||||
static inline bool IRAM_ATTR xPortCanYield(void)
|
||||
|
||||
/* ------------------------------------------- FreeRTOS Porting Interface ----------------------------------------------
|
||||
* - Contains all the mappings of the macros required by FreeRTOS
|
||||
* - Most come after forward declare as porting macros map to declared functions
|
||||
* - Maps to forward declared functions
|
||||
* ------------------------------------------------------------------------------------------------------------------ */
|
||||
|
||||
// ----------------------- Memory --------------------------
|
||||
|
||||
/**
|
||||
* @brief Task memory allocation macros
|
||||
*
|
||||
* @note Because the ROM routines don't necessarily handle a stack in external RAM correctly, we force the stack
|
||||
* memory to always be internal.
|
||||
* @note [refactor-todo] Update portable.h to match v10.4.3 to use new malloc prototypes
|
||||
*/
|
||||
#define portTcbMemoryCaps (MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT)
|
||||
#define portStackMemoryCaps (MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT)
|
||||
#define pvPortMallocTcbMem(size) pvPortMalloc(size)
|
||||
#define pvPortMallocStackMem(size) pvPortMalloc(size)
|
||||
|
||||
// --------------------- Interrupts ------------------------
|
||||
|
||||
#define portEXIT_CRITICAL_NESTED(state) do { portCLEAR_INTERRUPT_MASK_FROM_ISR(state);} while(0);
|
||||
#define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK_FROM_ISR()
|
||||
#define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK_FROM_ISR(1)
|
||||
#define portSET_INTERRUPT_MASK_FROM_ISR() vPortSetInterruptMask()
|
||||
#define portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedStatusValue) vPortClearInterruptMask(uxSavedStatusValue)
|
||||
|
||||
// ------------------ Critical Sections --------------------
|
||||
|
||||
#define portENTER_CRITICAL(mux) {(void)mux; vPortEnterCritical();}
|
||||
#define portEXIT_CRITICAL(mux) {(void)mux; vPortExitCritical();}
|
||||
//In single-core RISC-V, we can use the same critical section API
|
||||
#define portENTER_CRITICAL_ISR(mux) portENTER_CRITICAL(mux)
|
||||
#define portEXIT_CRITICAL_ISR(mux) portEXIT_CRITICAL(mux)
|
||||
/* [refactor-todo] on RISC-V, both ISR and non-ISR cases result in the same call. We can redefine this macro */
|
||||
#define portENTER_CRITICAL_SAFE(mux) ({ \
|
||||
if (xPortInIsrContext()) { \
|
||||
portENTER_CRITICAL_ISR(mux); \
|
||||
} else { \
|
||||
portENTER_CRITICAL(mux); \
|
||||
} \
|
||||
})
|
||||
#define portEXIT_CRITICAL_SAFE(mux) ({ \
|
||||
if (xPortInIsrContext()) { \
|
||||
portEXIT_CRITICAL_ISR(mux); \
|
||||
} else { \
|
||||
portEXIT_CRITICAL(mux); \
|
||||
} \
|
||||
})
|
||||
|
||||
// ---------------------- Yielding -------------------------
|
||||
|
||||
#define portYIELD() vPortYield()
|
||||
#define portYIELD_FROM_ISR() vPortYieldFromISR()
|
||||
#define portEND_SWITCHING_ISR(xSwitchRequired) if(xSwitchRequired) vPortYield()
|
||||
/* Yielding within an API call (when interrupts are off), means the yield should be delayed
|
||||
until interrupts are re-enabled.
|
||||
To do this, we use the "cross-core" interrupt as a trigger to yield on this core when interrupts are re-enabled.This
|
||||
is the same interrupt & code path which is used to trigger a yield between CPUs, although in this case the yield is
|
||||
happening on the same CPU.
|
||||
*/
|
||||
#define portYIELD_WITHIN_API() portYIELD()
|
||||
|
||||
// ------------------- Hook Functions ----------------------
|
||||
|
||||
#ifndef CONFIG_FREERTOS_LEGACY_HOOKS
|
||||
#define vApplicationIdleHook esp_vApplicationIdleHook
|
||||
#define vApplicationTickHook esp_vApplicationTickHook
|
||||
#endif /* !CONFIG_FREERTOS_LEGACY_HOOKS */
|
||||
#define portSUPPRESS_TICKS_AND_SLEEP(idleTime) vApplicationSleep(idleTime)
|
||||
|
||||
// ------------------- Run Time Stats ----------------------
|
||||
|
||||
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
|
||||
#define portGET_RUN_TIME_COUNTER_VALUE() 0
|
||||
#ifdef CONFIG_FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER
|
||||
/* Coarse resolution time (us) */
|
||||
#define portALT_GET_RUN_TIME_COUNTER_VALUE(x) do {x = (uint32_t)esp_timer_get_time();} while(0)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* --------------------------------------------- Inline Implementations ------------------------------------------------
|
||||
* - Implementation of inline functions of the forward declares
|
||||
* - Should come after forward declare and FreeRTOS Porting interface, as implementation may use both.
|
||||
* - For implementation of non-inlined functions, see port.c, port_common.c, or other assembly files
|
||||
* ------------------------------------------------------------------------------------------------------------------ */
|
||||
|
||||
// --------------------- Interrupts ------------------------
|
||||
|
||||
static inline unsigned portENTER_CRITICAL_NESTED(void)
|
||||
{
|
||||
uint32_t threshold = REG_READ(INTERRUPT_CORE0_CPU_INT_THRESH_REG);
|
||||
/* when enter critical code, freertos will mask threshold to RVHAL_EXCM_LEVEL
|
||||
* and exit critical code, will recover threshold value (1). so threshold <= 1
|
||||
* means not in critical code
|
||||
*/
|
||||
return (threshold <= 1);
|
||||
unsigned state = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
return state;
|
||||
}
|
||||
|
||||
// ---------------------- Spinlocks ------------------------
|
||||
|
||||
static inline void __attribute__((always_inline)) uxPortCompareSet(volatile uint32_t *addr, uint32_t compare, uint32_t *set)
|
||||
{
|
||||
compare_and_set_native(addr, compare, set);
|
||||
}
|
||||
|
||||
static inline void uxPortCompareSetExtram(volatile uint32_t *addr, uint32_t compare, uint32_t *set)
|
||||
@ -116,199 +492,56 @@ static inline void uxPortCompareSetExtram(volatile uint32_t *addr, uint32_t comp
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void __attribute__((always_inline)) uxPortCompareSet(volatile uint32_t *addr, uint32_t compare, uint32_t *set) {
|
||||
compare_and_set_native(addr, compare, set);
|
||||
// ---------------------- Yielding -------------------------
|
||||
|
||||
static inline bool IRAM_ATTR xPortCanYield(void)
|
||||
{
|
||||
uint32_t threshold = REG_READ(INTERRUPT_CORE0_CPU_INT_THRESH_REG);
|
||||
/* when enter critical code, FreeRTOS will mask threshold to RVHAL_EXCM_LEVEL
|
||||
* and exit critical code, will recover threshold value (1). so threshold <= 1
|
||||
* means not in critical code
|
||||
*/
|
||||
return (threshold <= 1);
|
||||
}
|
||||
|
||||
#define portCRITICAL_NESTING_IN_TCB 0
|
||||
|
||||
/*
|
||||
* Send an interrupt to another core in order to make the task running
|
||||
* on it yield for a higher-priority task.
|
||||
|
||||
/* ------------------------------------------------------ Misc ---------------------------------------------------------
|
||||
* - Miscellaneous porting macros
|
||||
* - These are not port of the FreeRTOS porting interface, but are used by other FreeRTOS dependent components
|
||||
* ------------------------------------------------------------------------------------------------------------------ */
|
||||
|
||||
// -------------------- Heap Related -----------------------
|
||||
|
||||
/**
|
||||
* @brief Checks if a given piece of memory can be used to store a task's TCB
|
||||
*
|
||||
* - Defined in port_common.c
|
||||
*
|
||||
* @param ptr Pointer to memory
|
||||
* @return true Memory can be used to store a TCB
|
||||
* @return false Otherwise
|
||||
*/
|
||||
void vPortYieldOtherCore( BaseType_t coreid);
|
||||
bool xPortCheckValidTCBMem(const void *ptr);
|
||||
|
||||
/*
|
||||
Callback to set a watchpoint on the end of the stack. Called every context switch to change the stack
|
||||
watchpoint around.
|
||||
/**
|
||||
* @brief Checks if a given piece of memory can be used to store a task's stack
|
||||
*
|
||||
* - Defined in port_common.c
|
||||
*
|
||||
* @param ptr Pointer to memory
|
||||
* @return true Memory can be used to store a task stack
|
||||
* @return false Otherwise
|
||||
*/
|
||||
void vPortSetStackWatchpoint( void* pxStackStart );
|
||||
bool xPortcheckValidStackMem(const void *ptr);
|
||||
|
||||
/*
|
||||
* Returns true if the current core is in ISR context; low prio ISR, med prio ISR or timer tick ISR. High prio ISRs
|
||||
* aren't detected here, but they normally cannot call C code, so that should not be an issue anyway.
|
||||
*/
|
||||
BaseType_t xPortInIsrContext(void);
|
||||
|
||||
/*
|
||||
* This function will be called in High prio ISRs. Returns true if the current core was in ISR context
|
||||
* before calling into high prio ISR context.
|
||||
*/
|
||||
BaseType_t xPortInterruptedFromISRContext(void);
|
||||
|
||||
/* "mux" data structure (spinlock) */
|
||||
typedef struct {
|
||||
/* owner field values:
|
||||
* 0 - Uninitialized (invalid)
|
||||
* portMUX_FREE_VAL - Mux is free, can be locked by either CPU
|
||||
* CORE_ID_REGVAL_PRO / CORE_ID_REGVAL_APP - Mux is locked to the particular core
|
||||
*
|
||||
*
|
||||
* Any value other than portMUX_FREE_VAL, CORE_ID_REGVAL_PRO, CORE_ID_REGVAL_APP indicates corruption
|
||||
*/
|
||||
uint32_t owner;
|
||||
/* count field:
|
||||
* If mux is unlocked, count should be zero.
|
||||
* If mux is locked, count is non-zero & represents the number of recursive locks on the mux.
|
||||
*/
|
||||
uint32_t count;
|
||||
#ifdef CONFIG_FREERTOS_PORTMUX_DEBUG
|
||||
const char *lastLockedFn;
|
||||
int lastLockedLine;
|
||||
#endif
|
||||
} portMUX_TYPE;
|
||||
|
||||
#define portMUX_FREE_VAL SPINLOCK_FREE
|
||||
|
||||
/* Special constants for vPortCPUAcquireMutexTimeout() */
|
||||
#define portMUX_NO_TIMEOUT SPINLOCK_WAIT_FOREVER /* When passed for 'timeout_cycles', spin forever if necessary */
|
||||
#define portMUX_TRY_LOCK SPINLOCK_NO_WAIT /* Try to acquire the spinlock a single time only */
|
||||
|
||||
// Keep this in sync with the portMUX_TYPE struct definition please.
|
||||
#ifndef CONFIG_FREERTOS_PORTMUX_DEBUG
|
||||
#define portMUX_INITIALIZER_UNLOCKED { \
|
||||
.owner = portMUX_FREE_VAL, \
|
||||
.count = 0, \
|
||||
}
|
||||
#else
|
||||
#define portMUX_INITIALIZER_UNLOCKED { \
|
||||
.owner = portMUX_FREE_VAL, \
|
||||
.count = 0, \
|
||||
.lastLockedFn = "(never locked)", \
|
||||
.lastLockedLine = -1 \
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Scheduler utilities. */
|
||||
extern void vPortYield( void );
|
||||
extern void vPortYieldFromISR( void );
|
||||
|
||||
#define portYIELD() vPortYield()
|
||||
#define portYIELD_FROM_ISR() vPortYieldFromISR()
|
||||
|
||||
/* Yielding within an API call (when interrupts are off), means the yield should be delayed
|
||||
until interrupts are re-enabled.
|
||||
To do this, we use the "cross-core" interrupt as a trigger to yield on this core when interrupts are re-enabled.This
|
||||
is the same interrupt & code path which is used to trigger a yield between CPUs, although in this case the yield is
|
||||
happening on the same CPU.
|
||||
*/
|
||||
#define portYIELD_WITHIN_API() portYIELD()
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Critical section management. */
|
||||
extern int vPortSetInterruptMask(void);
|
||||
extern void vPortClearInterruptMask( int );
|
||||
|
||||
void vPortCPUInitializeMutex(portMUX_TYPE *mux);
|
||||
void vPortCPUAcquireMutex(portMUX_TYPE *mux);
|
||||
bool vPortCPUAcquireMutexTimeout(portMUX_TYPE *mux, int timeout_cycles);
|
||||
void vPortCPUReleaseMutex(portMUX_TYPE *mux);
|
||||
|
||||
extern void vPortEnterCritical( void );
|
||||
extern void vPortExitCritical( void );
|
||||
|
||||
#define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK_FROM_ISR()
|
||||
#define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK_FROM_ISR(1)
|
||||
|
||||
#define portENTER_CRITICAL(mux) {(void)mux; vPortEnterCritical();}
|
||||
#define portEXIT_CRITICAL(mux) {(void)mux; vPortExitCritical();}
|
||||
|
||||
#define portENTER_CRITICAL_ISR(mux) portENTER_CRITICAL(mux)
|
||||
#define portEXIT_CRITICAL_ISR(mux) portEXIT_CRITICAL(mux)
|
||||
|
||||
#define portENTER_CRITICAL_SAFE(mux) do { \
|
||||
if (xPortInIsrContext()) { \
|
||||
portENTER_CRITICAL_ISR(mux); \
|
||||
} else { \
|
||||
portENTER_CRITICAL(mux); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define portEXIT_CRITICAL_SAFE(mux) do { \
|
||||
if (xPortInIsrContext()) { \
|
||||
portEXIT_CRITICAL_ISR(mux); \
|
||||
} else { \
|
||||
portEXIT_CRITICAL(mux); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
/*------------------------------------------------------------*/
|
||||
#define portSET_INTERRUPT_MASK_FROM_ISR() vPortSetInterruptMask()
|
||||
#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusValue ) vPortClearInterruptMask( uxSavedStatusValue )
|
||||
#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) vPortYield()
|
||||
|
||||
// Cleaner solution allows nested interrupts disabling and restoring via local registers or stack.
|
||||
// They can be called from interrupts too.
|
||||
static inline unsigned portENTER_CRITICAL_NESTED(void) {
|
||||
unsigned state = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||
return state;
|
||||
}
|
||||
|
||||
#define portEXIT_CRITICAL_NESTED(state) do { portCLEAR_INTERRUPT_MASK_FROM_ISR( state );} while(0);
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
//Because the ROM routines don't necessarily handle a stack in external RAM correctly, we force
|
||||
//the stack memory to always be internal.
|
||||
#define portTcbMemoryCaps (MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT)
|
||||
#define portStackMemoryCaps (MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT)
|
||||
|
||||
#define pvPortMallocTcbMem(size) pvPortMalloc(size)
|
||||
#define pvPortMallocStackMem(size) pvPortMalloc(size)
|
||||
|
||||
/* Fine resolution time */
|
||||
#define portGET_RUN_TIME_COUNTER_VALUE() 0
|
||||
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
|
||||
|
||||
#ifdef CONFIG_FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER
|
||||
/* Coarse resolution time (us) */
|
||||
#define portALT_GET_RUN_TIME_COUNTER_VALUE(x) do {x = (uint32_t)esp_timer_get_time();} while(0)
|
||||
#endif
|
||||
|
||||
extern void esp_vApplicationIdleHook( void );
|
||||
extern void esp_vApplicationTickHook( void );
|
||||
|
||||
#ifndef CONFIG_FREERTOS_LEGACY_HOOKS
|
||||
#define vApplicationIdleHook esp_vApplicationIdleHook
|
||||
#define vApplicationTickHook esp_vApplicationTickHook
|
||||
#endif /* !CONFIG_FREERTOS_LEGACY_HOOKS */
|
||||
|
||||
/* Task function macros as described on the FreeRTOS.org WEB site. */
|
||||
#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )
|
||||
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
|
||||
|
||||
void vApplicationSleep( TickType_t xExpectedIdleTime );
|
||||
#define portSUPPRESS_TICKS_AND_SLEEP( idleTime ) vApplicationSleep( idleTime )
|
||||
|
||||
#define portNOP() __asm volatile ( " nop " )
|
||||
|
||||
#define portVALID_TCB_MEM(ptr) esp_ptr_byte_accessible(ptr)
|
||||
#define portVALID_STACK_MEM(ptr) esp_ptr_byte_accessible(ptr)
|
||||
|
||||
/* Get tick rate per second */
|
||||
uint32_t xPortGetTickRateHz(void);
|
||||
|
||||
// configASSERT_2 if requested
|
||||
#if configASSERT_2
|
||||
#include <stdio.h>
|
||||
void exit(int);
|
||||
#define configASSERT( x ) if (!(x)) { porttracePrint(-1); printf("\nAssertion failed in %s:%d\n", __FILE__, __LINE__); exit(-1); }
|
||||
#endif
|
||||
|
||||
|
||||
#endif //__ASSEMBLER__
|
||||
#define portVALID_TCB_MEM(ptr) xPortCheckValidTCBMem(ptr)
|
||||
#define portVALID_STACK_MEM(ptr) xPortcheckValidStackMem(ptr)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //__ASSEMBLER__
|
||||
|
||||
#endif /* PORTMACRO_H */
|
||||
|
Reference in New Issue
Block a user