rtel wrote on Wednesday, July 27, 2011:
I have just checked in xTaskGetIdleTaskHandle(), xTimerGetTimerTaskHandle(), pcTaskGetTaskName(), and vSemaphoreDelete() macros (previously vQueueDelete() was used, now there is a mapping from vSemaphoreDelete() to vQueueDelete() to make it more obvious). There will not however be a vQueueFlush() function added.
You can flush a queue by simply looping on an xQueueReceive() until the queue is empty. There is not, however, a generic way of doing this for the following reasons:
+ Sometimes a queue holds pointers to buffers. Simply resetting the queue read and write pointers back to their defaults (making the queue look empty) could cause a memory leak if the buffers being pointed to are then left dangling.
+ As queues can hold data of any size (it being set when the queue is created), you cannot define a generic function that loops calling xQueueReceive() because you don’t know what size buffer to receive the data into.