mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-03 12:44:33 +02:00
Add xRingbufferCanRead, xRingbufferCanWrite
Add function xRingbufferCanRead & xRingbufferCanWrite to be able use queue sets. Without it is not possible to check to which ringbuffer returned semaphore belongs.
This commit is contained in:
@@ -297,6 +297,33 @@ BaseType_t xRingbufferAddToQueueSetRead(RingbufHandle_t ringbuf, QueueSetHandle_
|
|||||||
*/
|
*/
|
||||||
BaseType_t xRingbufferAddToQueueSetWrite(RingbufHandle_t ringbuf, QueueSetHandle_t xQueueSet);
|
BaseType_t xRingbufferAddToQueueSetWrite(RingbufHandle_t ringbuf, QueueSetHandle_t xQueueSet);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the selected queue set member is the ringbuffer's read semaphore
|
||||||
|
*
|
||||||
|
* This API checks if queue set member returned from xQueueSelectFromSet
|
||||||
|
* is the read semaphore of this ring buffer. If so, this indicates the ring buffer
|
||||||
|
* has items waiting to be read.
|
||||||
|
*
|
||||||
|
* @param ringbuf Ring buffer which should be checked
|
||||||
|
* @param member Member returned from xQueueSelectFromSet
|
||||||
|
*
|
||||||
|
* @return pdTRUE when semaphore belongs to ringbuffer, pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
BaseType_t xRingbufferCanRead(RingbufHandle_t ringbuf, QueueSetMemberHandle_t member);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the selected queue set member is the ringbuffer's write semaphore
|
||||||
|
*
|
||||||
|
* This API checks if queue set member returned from xQueueSelectFromSet
|
||||||
|
* is the write semaphore of this ring buffer. If so, this indicates the ring buffer
|
||||||
|
* has items waiting for write.
|
||||||
|
*
|
||||||
|
* @param ringbuf Ring buffer which should be checked
|
||||||
|
* @param member Member returned from xQueueSelectFromSet
|
||||||
|
*
|
||||||
|
* @return pdTRUE when semaphore belongs to ringbuffer, pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
BaseType_t xRingbufferCanWrite(RingbufHandle_t ringbuf, QueueSetMemberHandle_t member);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Remove the ringbuffer from a queue set.
|
* @brief Remove the ringbuffer from a queue set.
|
||||||
|
@@ -409,6 +409,24 @@ static void returnItemToRingbufBytebuf(ringbuf_t *rb, void *item) {
|
|||||||
//Free the read memory.
|
//Free the read memory.
|
||||||
rb->free_ptr=rb->read_ptr;
|
rb->free_ptr=rb->read_ptr;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
Check if the selected queue set member is the ringbuffer's read semaphore
|
||||||
|
*/
|
||||||
|
BaseType_t xRingbufferCanRead(RingbufHandle_t ringbuf, QueueSetMemberHandle_t member)
|
||||||
|
{
|
||||||
|
ringbuf_t *rb=(ringbuf_t *)ringbuf;
|
||||||
|
configASSERT(rb);
|
||||||
|
return (rb->items_buffered_sem == member)? pdTRUE : pdFALSE;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
Check if the selected queue set member is the ringbuffer's write semaphore
|
||||||
|
*/
|
||||||
|
BaseType_t xRingbufferCanWrite(RingbufHandle_t ringbuf, QueueSetMemberHandle_t member)
|
||||||
|
{
|
||||||
|
ringbuf_t *rb=(ringbuf_t *)ringbuf;
|
||||||
|
configASSERT(rb);
|
||||||
|
return (rb->free_space_sem == member)? pdTRUE : pdFALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void xRingbufferPrintInfo(RingbufHandle_t ringbuf)
|
void xRingbufferPrintInfo(RingbufHandle_t ringbuf)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user