mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-02-21 02:27:10 +08:00
commit
2ee715c411
@ -71,6 +71,7 @@ rt_size_t rt_ringbuffer_put_force(struct rt_ringbuffer *rb, const rt_uint8_t *pt
|
|||||||
rt_size_t rt_ringbuffer_putchar(struct rt_ringbuffer *rb, const rt_uint8_t ch);
|
rt_size_t rt_ringbuffer_putchar(struct rt_ringbuffer *rb, const rt_uint8_t ch);
|
||||||
rt_size_t rt_ringbuffer_putchar_force(struct rt_ringbuffer *rb, const rt_uint8_t ch);
|
rt_size_t rt_ringbuffer_putchar_force(struct rt_ringbuffer *rb, const rt_uint8_t ch);
|
||||||
rt_size_t rt_ringbuffer_get(struct rt_ringbuffer *rb, rt_uint8_t *ptr, rt_uint16_t length);
|
rt_size_t rt_ringbuffer_get(struct rt_ringbuffer *rb, rt_uint8_t *ptr, rt_uint16_t length);
|
||||||
|
rt_size_t rt_ringbuffer_peak(struct rt_ringbuffer *rb, rt_uint8_t **ptr);
|
||||||
rt_size_t rt_ringbuffer_getchar(struct rt_ringbuffer *rb, rt_uint8_t *ch);
|
rt_size_t rt_ringbuffer_getchar(struct rt_ringbuffer *rb, rt_uint8_t *ch);
|
||||||
rt_size_t rt_ringbuffer_data_len(struct rt_ringbuffer *rb);
|
rt_size_t rt_ringbuffer_data_len(struct rt_ringbuffer *rb);
|
||||||
|
|
||||||
|
@ -193,6 +193,40 @@ rt_size_t rt_ringbuffer_get(struct rt_ringbuffer *rb,
|
|||||||
}
|
}
|
||||||
RTM_EXPORT(rt_ringbuffer_get);
|
RTM_EXPORT(rt_ringbuffer_get);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* peak data from ring buffer
|
||||||
|
*/
|
||||||
|
rt_size_t rt_ringbuffer_peak(struct rt_ringbuffer *rb, rt_uint8_t **ptr)
|
||||||
|
{
|
||||||
|
RT_ASSERT(rb != RT_NULL);
|
||||||
|
|
||||||
|
*ptr = RT_NULL;
|
||||||
|
|
||||||
|
/* whether has enough data */
|
||||||
|
rt_size_t size = rt_ringbuffer_data_len(rb);
|
||||||
|
|
||||||
|
/* no data */
|
||||||
|
if (size == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
*ptr = &rb->buffer_ptr[rb->read_index];
|
||||||
|
|
||||||
|
if(rb->buffer_size - rb->read_index > size)
|
||||||
|
{
|
||||||
|
rb->read_index += size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
size = rb->buffer_size - rb->read_index;
|
||||||
|
|
||||||
|
/* we are going into the other side of the mirror */
|
||||||
|
rb->read_mirror = ~rb->read_mirror;
|
||||||
|
rb->read_index = 0;
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
RTM_EXPORT(rt_ringbuffer_peak);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* put a character into ring buffer
|
* put a character into ring buffer
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user