
/**
\defgroup freertos_setup Event Recorder Setup
\ingroup freertos_specific
\brief Information about Event Recorder configuration and setup
\details
CMSIS-FreeRTOS interfaces to the
<a href="http://www.keil.com/pack/doc/compiler/EventRecorder/html/index.html" target="_blank"><b>Event Recorder</b></a>
to provide event information which helps you to understand and analyze the operation.

To use the Event Recorder together with CMSIS-FreeRTOS, it is required to create an image that generates event information.
The steps are described under \ref cre_freertos_proj.
@{
*/

/**
\fn void EvrFreeRTOSSetup (uint32_t reset)
\details
The function \b EvrFreeRTOSSetup initializes Event Recorder and configures recording level filter. It must be called before any event is sent to the Event Recorder.

The argument \a reset specifies if reset of previously applied configuration is performed in case if EvrFreeRTOSSetup was already called.

Behavior of this function execution is defined with Event Recorder Configuration (\ref cmsis_freertos_evr_config). Calling this function has
no effect when Event Recorder component is not selected.

\note \b EvrFreeRTOSSetup is called by function \b osKernelInitialize when CMSIS-RTOS2 API is in use and should not be called explicitly.



*/

/**
@}
*/

/** 
\defgroup freertos_evr Event functions
\ingroup freertos_specific 
\brief FreeRTOS Event Recorder functions
\details
CMSIS-FreeRTOS interfaces to the
<a href="http://www.keil.com/pack/doc/compiler/EventRecorder/html/index.html" target="_blank"><b>Event Recorder</b></a> 
to provide event information which helps you to understand and analyze the operation.

To use the Event Recorder together with CMSIS-FreeRTOS, it is required to create an image that generates event information.
The steps are:
  - <a href="http://www.keil.com/pack/doc/compiler/EventRecorder/html/UseDebugViews.html#Add_Event_Recorder" target="_blank"><b>Add Event Recorder</b></a>: Select in the RTE management dialog the software component <b>Compiler:Event Recorder</b>.
  - <a href="http://www.keil.com/pack/doc/compiler/EventRecorder/html/UseDebugViews.html#Debug_Variants" target="_blank"><b>Select Debug Variant</b></a>: Select in the RTE management dialog the \b Source variant for the software component <b>CMSIS:RTOS2 (API):Keil RTX5</b>.
  - <a href="http://www.keil.com/pack/doc/compiler/EventRecorder/html/group__EventRecorder__Setup.htm" target="_blank"><b>Add Initialization Code</b></a>: Call the function <b>EventRecorderInitialize</b> in your application code.
  - Build the application code and download it to the debug hardware.
  
Once the target application generates event information, it can be viewed in the µVision debugger using the \b Event
 \b Recorder.

@{
*/

/**
\defgroup freertos_evr_tasks Tasks Functions
\brief Events generated by tasks functions 
\details
@{
*/

/**
\fn void EvrFreeRTOSTasks_TaskCreate (TCB_t pxNewTCB)
\details
The event \b TaskCreate is generated when task object is successfully created.

\b Value in the Event Recorder shows:
 - \b pxNewTCB : pointer to task object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTasks_TaskCreateFailed (void)
\details
The event \b TaskCreateFailed is generated when task object create fails due to insufficient heap memory.
*/

/**
\fn void EvrFreeRTOSTasks_TaskDelete (TCB_t pxTCB)
\details
The event \b TaskDelete is generated when the task is successfully added into thread termination list.

\b Value in the Event Recorder shows:
 - \b pxTCB : pointer to task object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTasks_TaskDelayUntil (uint32_t xTimeToWake)
\details
The event \b TaskDelayUntil is generated before the current running task execution is delayed.

\b Value in the Event Recorder shows:
 - \b xTimeToWake : wake time in ticks.
*/

/**
\fn void EvrFreeRTOSTasks_TaskDelay (uint32_t xTicksToDelay)
\details
The event \b TaskDelay is generated when the current running task execution is delayed.

\b Value in the Event Recorder shows:
 - \b xTicksToDelay : number of ticks to delay. 
*/

/**
\fn void EvrFreeRTOSTasks_TaskPrioritySet (TCB_t pxTCB, uint32_t uxNewPriority)
\details
The event \b TaskPrioritySet is generated when task priority is set.

\b Value in the Event Recorder shows:
 - \b pxTCB : pointer to task object handle (control block address).
 - \b uxNewPriority : task new priority .
*/

/**
\fn void EvrFreeRTOSTasks_TaskSuspend (TCB_t pxTCB)
\details
The event \b TaskSuspend is generated when task execution is suspended.

\b Value in the Event Recorder shows:
 - \b pxTCB : pointer to task object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTasks_TaskResume (TCB_t pxTCB)
\details
The event \b TaskResume is generated when task execution is resumed.

\b Value in the Event Recorder shows:
 - \b pxTCB : pointer to task object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTasks_TaskResumeFromIsr (TCB_t pxTCB)
\details
The event \b TaskResumeFromIsr is generated when task execution is resumed from the ISR.

\b Value in the Event Recorder shows:
 - \b pxTCB : pointer to task object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTasks_TaskIncrementTick (uint32_t xTickCount)
\details
The event \b TaskIncrementTick is generated on every tick increment.

\b Value in the Event Recorder shows:
 - \b xTickCount : tick count before increment.
*/

/**
\fn void EvrFreeRTOSTasks_IncreaseTickCount (uint32_t xTicksToJump)
\details
The event \b IncreaseTickCount is generated when tick count is increased by the number of ticks spent in low power mode.

\b Value in the Event Recorder shows:
 - \b xTicksToJump : number of ticks by which the tick count is increased.
*/

/**
\fn void EvrFreeRTOSTasks_TaskSwitchedOut (TCB_t pxCurrentTCB)
\details
The event \b TaskSwitchedOut is generated before a new task is selected to run.

\b Value in the Event Recorder shows:
 - \b pxCurrentTCB : pointer to task object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTasks_TaskSwitchedIn  (TCB_t pxCurrentTCB, uint32_t uxTopPriority)
\details
The event \b TaskSwitchedIn is generated after a task has been selected to run.

\b Value in the Event Recorder shows:
 - \b pxCurrentTCB : pointer to task object handle (control block address).
 - \b uxTopPriority : task priority
*/

/**
\fn void EvrFreeRTOSTasks_TaskPriorityInherit (TCB_t pxTCBOfMutexHolder, uint32_t uxInheritedPriority)
\details
The event \b TaskPriorityInherit is generated when task priority is inherited from the current running task.

\b Value in the Event Recorder shows:
 - \b pxTCBOfMutexHolder : pointer to task object handle (control block address).
 - \b uxInheritedPriority : inherited task priority
*/

/**
\fn void EvrFreeRTOSTasks_TaskPriorityDisinherit (TCB_t pxTCBOfMutexHolder, uint32_t uxOriginalPriority)
\details
The event \b TaskPriorityDisinherit is generated when task priority is disinherited to its base priority.

\b Value in the Event Recorder shows:
 - \b pxTCBOfMutexHolder : pointer to task object handle (control block address).
 - \b uxOriginalPriority : task base priority
*/

/**
\fn void EvrFreeRTOSTasks_MovedTaskToReadyState (TCB_t pxTCB)
\details
The event \b MovedTaskToReadyState is generated before the task is transitioned into the Ready state.

\b Value in the Event Recorder shows:
 - \b pxTCB : pointer to task object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTasks_PostMovedTaskToReadyState (TCB_t pxTCB)
\details
The event \b PostMovedTaskToReadyState is generated after the task is transitioned into the Ready state.

\b Value in the Event Recorder shows:
 - \b pxTCB : pointer to task object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTasks_LowPowerIdleBegin (uint32_t xExpectedIdleTime)
\details
The event \b LowPowerIdleBegin is generated when task scheduler enters the low power mode.

\b Value in the Event Recorder shows:
 - \b xExpectedIdleTime : expected idle time in ticks.
*/

/**
\fn void EvrFreeRTOSTasks_LowPowerIdleEnd (void)
\details
The event \b LowPowerIdleEnd is generated when task scheduler exits from the low power mode.
*/

/**
\fn void EvrFreeRTOSTasks_TaskNotifyTakeBlock (uint32_t uxIndexToWait, uint32_t xTicksToWait)
\details
The event \b TaskNotifyTakeBlock is generated when the current running task is about to block and wait to take notification.

\b Value in the Event Recorder shows:
 - \b uxIndexToWait : task notification index
 - \b xTicksToWait : wait timeout in ticks.
*/

/**
\fn void EvrFreeRTOSTasks_TaskNotifyTake (uint32_t uxIndexToWait, uint32_t ulNotifiedValue)
\details
The event \b TaskNotifyTake is generated when task notify take is successfully executed.
 
\b Value in the Event Recorder shows:
 - \b uxIndexToWait : task notification index
 - \b ulNotifiedValue : current state of the notification value.
*/

/**
\fn void EvrFreeRTOSTasks_TaskNotifyWaitBlock (uint32_t uxIndexToWait, uint32_t xTicksToWait)
\details
The event \b TaskNotifyWaitBlock is generated when the current running task is about to block and wait to receive notification.

\b Value in the Event Recorder shows:
 - \b uxIndexToWait : task notification index
 - \b xTicksToWait : wait timeout in ticks.
*/

/**
\fn void EvrFreeRTOSTasks_TaskNotifyWait (uint32_t uxIndexToWait, uint32_t ulNotifiedValue)
\details
The event \b TaskNotifyWait is generated when task notify wait is completed.

\b Value in the Event Recorder shows:
 - \b uxIndexToWait : task notification index
 - \b ulNotifiedValue : current state of the notification value.
*/

/**
\fn void EvrFreeRTOSTasks_TaskNotify (TCB_t xTaskToNotify, uint32_t uxIndexToWait, uint32_t eAction, uint32_t ulNotifiedValue)
\details
The event \b TaskNotify is generated when task notify is successfully executed.

\b Value in the Event Recorder shows:
 - \b xTaskToNotify : pointer to task object handle (control block address).
 - \b uxIndexToWait : task notification index
 - \b eAction : task notification action (eNotifyAction).
 - \b ulNotifiedValue : current state of the notification value.
*/

/**
\fn void EvrFreeRTOSTasks_TaskNotifyFromIsr (TCB_t xTaskToNotify, uint32_t uxIndexToWait, uint32_t eAction, uint32_t ulNotifiedValue)
\details
The event \b TaskNotifyFromIsr is generated when task notify from ISR is successfully executed.

\b Value in the Event Recorder shows:
 - \b xTaskToNotify : pointer to task object handle (control block address).
 - \b uxIndexToWait : task notification index
 - \b eAction : task notification action (eNotifyAction).
 - \b ulNotifiedValue : current state of the notification value.
*/

/**
\fn void EvrFreeRTOSTasks_TaskNotifyGiveFromIsr (TCB_t xTaskToNotify, uint32_t ulNotifiedValue)
\details
The event \b TaskNotifyGiveFromIsr is generated when task notify give from ISR is successfully executed.

\b Value in the Event Recorder shows:
 - \b xTaskToNotify : pointer to task object handle (control block address).
 - \b uxIndexToWait : task notification index
 - \b ulNotifiedValue : current state of the notification value.
*/

/**
@}
*/


/**
\defgroup freertos_evr_queue Message Queue Functions
\brief Events generated by message queue functions 
\details
@{
*/

/**
\fn void EvrFreeRTOSQueue_QueueCreate (Queue_t pxQueue)
\details
The event \b QueueCreate is generated when queue object is successfully created.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address). 
*/

/**
\fn void EvrFreeRTOSQueue_QueueCreateFailed (uint32_t ucQueueType)
\details
The event \b QueueCreateFailed is generated when queue object create fails due to insufficient heap memory.

\b Value in the Event Recorder shows:
 - \b ucQueueType : x
*/

/**
\fn void EvrFreeRTOSQueue_CreateMutex (Queue_t pxNewQueue)
\details
The event \b CreateMutex is generated when mutex object is successfully created.

\b Value in the Event Recorder shows:
 - \b pxNewQueue : pointer to mutex (queue) object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_CreateMutexFailed (void)
\details
The event \b CreateMutexFailed is generated when mutex object create fails due to insufficient heap memory.
*/

/**
\fn void EvrFreeRTOSQueue_GiveMutexRecursive (Queue_t pxMutex)
\details
The event \b GiveMutexRecursive is generated when mutex give operation is successfully executed.

\b Value in the Event Recorder shows:
 - \b pxMutex : pointer to mutex (queue) object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_GiveMutexRecursiveFailed (Queue_t pxMutex)
\details
The event \b GiveMutexRecursiveFailed is generated when recursive mutex give operation was not successful.

\b Value in the Event Recorder shows:
 - \b pxMutex : pointer to mutex (queue) object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_TakeMutexRecursive (Queue_t pxMutex)
\details
The event \b TakeMutexRecursive is generated when recursive mutex take operation is successfully executed.

\b Value in the Event Recorder shows:
 - \b pxMutex : pointer to mutex (queue) object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_TakeMutexRecursiveFailed (Queue_t pxMutex)
\details
The event \b TakeMutexRecursiveFailed is generated when recursive mutex take operation is not successful.

\b Value in the Event Recorder shows:
 - \b pxMutex : pointer to mutex (queue) object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_CreateCountingSemaphore (Queue_t xHandle)
\details
The event \b CreateCountingSemaphore is generated when counting semaphore object is successfully created.

\b Value in the Event Recorder shows:
 - \b xHandle : pointer to semaphore (queue) object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_CreateCountingSemaphoreFailed (void)
\details
The event \b CreateCountingSemaphoreFailed is generated when semaphore object create fails due to insufficient heap memory.
*/

/**
\fn void EvrFreeRTOSQueue_QueueSend (Queue_t pxQueue)
\details
The event \b QueueSend is generated when the queue send operation was successful.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueSendFailed (Queue_t pxQueue)
\details
The event \b QueueSendFailed is generated when the queue send operation fails due to the queue being full.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueReceive (Queue_t pxQueue)
\details
The event \b QueueReceive is generated when the queue receive operation was successful.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueuePeek (Queue_t pxQueue)
\details
The event \b QueuePeek is generated when the queue peek operation was successful.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueuePeekFromIsr (Queue_t pxQueue)
\details
The event \b QueuePeekFromIsr is generated when the queue peek from ISR operation was successful.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueReceiveFailed (Queue_t pxQueue)
\details
The event \b QueueReceiveFailed is generated when the queue receive operation failed because the queue was empty.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueSendFromIsr (Queue_t pxQueue)
\details
The event \b QueueSendFromIsr is generated when the queue send from ISR operation was successful.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueSendFromIsrFailed (Queue_t pxQueue)
\details
The event \b QueueSendFromIsrFailed is generated when the queue send operation fails due to the queue already being full.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueReceiveFromIsr (Queue_t pxQueue)
\details
The event \b QueueReceiveFromIsr is generated when the queue receive from ISR operation was successful.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueReceiveFromIsrFailed (Queue_t pxQueue)
\details
The event \b QueueReceiveFromIsrFailed is generated when the queue receive operation fails due to the queue already being empty.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueuePeekFromIsrFailed (Queue_t pxQueue)
\details
The event \b QueuePeekFromIsrFailed is generated when queue peek operation is executed from an ISR and the queue is empty.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueDelete (Queue_t pxQueue)
\details
The event \b QueueDelete is generated when the function vQueueDelete is called.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_QueueRegistryAdd (Queue_t pxQueue, const char *pcQueueName)
\details
The event \b QueueRegistryAdd is generated when a human readable name is registered to the specified queue.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
 - \b pcQueueName : pointer to the ASCII string.
*/

/**
\fn void EvrFreeRTOSQueue_BlockingOnQueueReceive (Queue_t pxQueue)
\details
The event \b BlockingOnQueueReceive is generated when the currently executing task is about to block following
an attempt to read from an empty queue, or an attempt to 'take' an empty semaphore or mutex.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
\fn void EvrFreeRTOSQueue_BlockingOnQueueSend (Queue_t pxQueue)
\details
The event \b BlockingOnQueueSend is generated when the currently executing task is about to block following
an attempt to write to a full queue.

\b Value in the Event Recorder shows:
 - \b pxQueue : pointer to queue object handle (control block address).
*/

/**
@}
*/


/**
\defgroup freertos_evr_timers Timer Functions
\brief Events generated by timer functions 
\details
@{
*/

/**
\fn void EvrFreeRTOSTimers_TimerCreate (Timer_t pxNewTimer) 
\details
The event \b TimerCreate is generated when timer object is successfully created.

\b Value in the Event Recorder shows:
 - \b pxNewTimer : pointer to timer object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTimers_TimerCreateFailed (void) 
\details
The event \b TimerCreateFailed is generated when timer object create fails due to insufficient heap memory.
*/

/**
\fn void EvrFreeRTOSTimers_TimerCommandSend (Timer_t pxTimer, uint32_t xCommandID, uint32_t xOptionalValue, uint32_t xReturn) 
\details
The event \b TimerCommandSend is generated when a command is sent to the timer service task,

\b Value in the Event Recorder shows:
 - \b pxTimer : pointer to timer object handle (control block address).
 - \b xCommandID : timer command ID.
 - \b xOptionalValue : optional command value.
 - \b xReturn : execution status (0: failed, command was not sent to the timer command queue, 1: passed, command sent)
*/

/**
\fn void EvrFreeRTOSTimers_TimerCommandReceived (Timer_t pxTimer, uint32_t xCommandID, uint32_t xOptionalValue) 
\details
The event \b TimerCommandReceived is generated when the timer service task receives a command and before the command is actually processed.

\b Value in the Event Recorder shows:
 - \b pxTimer : pointer to timer object handle (control block address).
 - \b xCommandID : timer command ID.
 - \b xOptionalValue : optional command value.
*/

/**
\fn void EvrFreeRTOSTimers_TimerExpired (Timer_t pxTimer) 
\details
The event \b TimerExpired is generated when a software timer expires and before the timer callback is executed.

\b Value in the Event Recorder shows:
 - \b pxTimer : pointer to timer object handle (control block address).
*/

/**
\fn void EvrFreeRTOSTimers_PendFuncCall (PendedFunction_t pxFunctionToPend, void *pvParameter1, uint32_t ulParameter2, uint32_t xReturn)
\details
The event \b PendFuncCall is generated before the function xTimerPendFunctionCall returns.

\b Value in the Event Recorder shows:
 - \b pxFunctionToPend : callback function to execute from the timer service/deamon task.
 - \b pvParameter1 : the value passed into the callback function as the first parameter.
 - \b ulParameter2 : the value passed into the callback function as the second parameter.
 - \b xReturn : execution status (1=callback passed to the timer sevice task, any other value: queue full, failed to register the callback execution)
*/

/**
\fn void EvrFreeRTOSTimers_PendFuncCallFromIsr (PendedFunction_t pxFunctionToPend, void *pvParameter1, uint32_t ulParameter2, uint32_t xReturn)
\details
The event \b PendFuncCallFromIsr is generated before the function xTimerPendFunctionCallFromISR returns.

\b Value in the Event Recorder shows:
 - \b pxFunctionToPend : callback function to execute from the timer service/deamon task.
 - \b pvParameter1 : the value passed into the callback function as the first parameter.
 - \b ulParameter2 : the value passed into the callback function as the second parameter.
 - \b xReturn : execution status (1=callback passed to the timer sevice task, any other value: queue full, failed to register the callback execution)
*/

/**
@}
*/


/**
\defgroup freertos_evr_event_groups Event Groups Functions
\brief Events generated by event groups functions 
\details
@{
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupCreate (EventGroup_t pxEventGroup)
\details
The event \b EventGroupCreate is generated when Event Groups object is successfully created.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupCreateFailed (void)
\details
The event \b EventGroupCreateFailed is generated when Event Groups object create fails due to insufficient heap memory.
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupSyncBlock (EventGroup_t pxEventGroup, uint32_t uxBitsToSet, uint32_t uxBitsToWaitFor)
\details
The event \b EventGroupSyncBlock is generated before the function xEventGroupSync enters blocked state.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
 - \b uxBitsToSet : event bits that shall be set.
 - \b uxBitsToWaitFor : event bits to wait for.
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupSyncEnd (EventGroup_t pxEventGroup, uint32_t uxBitsToSet, uint32_t uxBitsToWaitFor, uint32_t xTimeoutOccurred)
\details
The event \b EventGroupSyncEnd is generated before the function xEventGroupSync returns.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
 - \b uxBitsToSet : event bits that shall be set.
 - \b uxBitsToWaitFor : event bits to wait for.
 - \b xTimeoutOccurred : timeout value (0=timeout occurred, 1=no timeout)
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupWaitBitsBlock (EventGroup_t pxEventGroup, uint32_t uxBitsToWaitFor)
\details
The event \b EventGroupWaitBitsBlock is generated before the function xEventGroupWaitBits enters blocked state.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
 - \b uxBitsToWaitFor : event bits to wait for.
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupWaitBitsEnd (EventGroup_t pxEventGroup, uint32_t uxBitsToWaitFor, uint32_t xTimeoutOccurred)
\details
The event \b EventGroupWaitBitsEnd is generated before the function xEventGroupWaitBits returns.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
 - \b uxBitsToWaitFor : event bits to wait for.
 - \b xTimeoutOccurred : timeout value (0=timeout occurred, 1=no timeout)
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupClearBits (EventGroup_t pxEventGroup, uint32_t uxBitsToClear)
\details
The event \b EventGroupClearBits is generated when the function xEventGroupClearBits is called.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
 - \b uxBitsToClear : event bits that shall be cleared.
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupClearBitsFromIsr (EventGroup_t pxEventGroup, uint32_t uxBitsToClear)
\details
The event \b EventGroupClearBitsFromIsr is generated when the function xEventGroupClearBitsFromISR is called.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
 - \b uxBitsToClear : event bits that shall be cleared.
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupSetBits (EventGroup_t pxEventGroup, uint32_t uxBitsToSet)
\details
The event \b EventGroupSetBits is generated when the function xEventGroupSetBits is called.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
 - \b uxBitsToSet : event bits that shall be set.
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupSetBitsFromIsr (EventGroup_t pxEventGroup, uint32_t uxBitsToSet)
\details
The event \b EventGroupSetBitsFromIsr is generated when the function xEventGroupSetBitsFromISR is called.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
 - \b uxBitsToSet : event bits that shall be set.
*/

/**
\fn void EvrFreeRTOSEventGroups_EventGroupDelete (EventGroup_t pxEventGroup)
\details
The event \b EventGroupDelete is generated when Event Group object is successfully added to object delete queue.

\b Value in the Event Recorder shows:
 - \b pxEventGroup : pointer to Event Groups object handle (control block address)
*/

/**
@}
*/


/**
\defgroup freertos_evr_streambuf Stream Buffer Functions
\brief Events generated by Stream Buffer and Message Buffer functions 
\details
@{
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferCreateFailed (uint32_t uxIsMessageBuffer)
\details
The event \b StreamBufferCreateFailed is generated when Stream Buffer or Message Buffer object create fails due to insufficient heap memory.

\b Value in the Event Recorder shows:
 - \b uxIsMessageBuffer : buffer type designator, 0 for stream buffer and 1 for message buffer.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferCreateStaticFailed (StreamBuffer_t pxStreamBuffer, uint32_t uxIsMessageBuffer)
\details
The event \b StreamBufferCreateStaticFailed is generated when statically allocated Stream Buffer or Message Buffer object fails to initialize.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to statically allocated Stream Buffer object handle.
 - \b uxIsMessageBuffer : buffer type designator, 0 for stream buffer and 1 for message buffer.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferCreate (StreamBuffer_t pxStreamBuffer, uint32_t uxIsMessageBuffer)
\details
The event \b StreamBufferCreate is generated when Stream Buffer object was successfully created. 

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
 - \b uxIsMessageBuffer : buffer type designator, 0 for stream buffer and 1 for message buffer.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferDelete (StreamBuffer_t pxStreamBuffer)
\details
The event \b StreamBufferDelete is generated when Stream Buffer object is deallocated or cleared in case of static allocation.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferReset (StreamBuffer_t pxStreamBuffer)
\details
The event \b StreamBufferReset is generated when Stream Buffer object is reset and re-initialized.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferBlockingOnSend (StreamBuffer_t pxStreamBuffer)
\details
The event \b StreamBufferBlockingOnSend is generated when Stream Buffer send is blocked to wait for free space in the buffer.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferSend (StreamBuffer_t pxStreamBuffer, uint32_t xBytesSent)
\details
The event \b StreamBufferSend is generated when Stream Buffer sends the data into the buffer. 

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
 - \b xBytesSent : number of bytes copied into the stream buffer
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferSendFailed (StreamBuffer_t pxStreamBuffer)
\details
The event \b StreamBufferSendFailed is generated when Stream Buffer failed to send data into the buffer.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferSendFromIsr (StreamBuffer_t pxStreamBuffer, uint32_t xBytesSent)
\details
The event \b StreamBufferSendFromIsr is generated when Stream Buffer send was called from the ISR.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
 - \b xBytesSent : number of bytes copied into the stream buffer
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferBlockingOnReceive (StreamBuffer_t pxStreamBuffer)
\details
The event \b StreamBufferBlockingOnReceive is generated when Stream Buffer receive is blocked to wait for data to be available.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferReceive (StreamBuffer_t pxStreamBuffer, uint32_t xReceivedLength)
\details
The event \b StreamBufferReceive is generated when Stream Buffer receive is called. 

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
 - \b xReceivedLength : number of bytes copied from the stream buffer
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferReceiveFailed (StreamBuffer_t pxStreamBuffer)
\details
The event \b StreamBufferReceiveFailed is generated when Stream Buffer receive is called and there is no data to receive.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
*/

/**
\fn void EvrFreeRTOSStreamBuf_StreamBufferReceiveFromIsr (StreamBuffer_t pxStreamBuffer, uint32_t xReceivedLength)
\details
The event \b StreamBufferReceiveFromIsr is generated when Stream Buffer receive is called from the ISR.

\b Value in the Event Recorder shows:
 - \b pxStreamBuffer : pointer to Stream Buffer object handle.
 - \b xReceivedLength : number of bytes copied from the stream buffer
*/

/**
@}
*/


/**
\defgroup freertos_evr_heap Heap Functions
\brief Events generated by heap functions 
\details
@{
*/

/**
\fn void EvrFreeRTOSHeap_Malloc (void *pvAddress, uint32_t uiSize)
\details
The event \b Heap_Malloc is generated when a heap memory block is successfully allocated.

\b Value in the Event Recorder shows:
 - \b pvAddress : pointer to allocated memory block.
 - \b uiSize : memory block size in bytes.
*/

/**
\fn void EvrFreeRTOSHeap_Free (void *pvAddress, uint32_t uiSize)
\details
The event \b Heap_Free is generated when a memory block previously allocated by malloc is deallocated.

\b Value in the Event Recorder shows:
 - \b pvAddress : pointer to deallocated memory block.
 - \b uiSize : memory block size in bytes.
*/

/**
@}
*/

/**
@} 
*/
// end group Event Recorder
