ring-buffer.h (696B)
1 #ifndef __RING_BUFFER_H__ 2 #define __RING_BUFFER_H__ 3 4 #include <stdbool.h> 5 #include <stdint.h> 6 7 typedef struct { 8 uint8_t *buffer; 9 uint16_t len; 10 uint16_t head; 11 uint16_t tail; 12 } RingBuffer_t; 13 14 void ring_buffer_setup(RingBuffer_t *rb, uint8_t *buffer, uint16_t len); 15 16 bool ring_buffer_empty(RingBuffer_t *rb); 17 18 bool ring_buffer_read(RingBuffer_t *rb, uint8_t *byte); 19 20 bool ring_buffer_write(RingBuffer_t *rb, const uint8_t byte); 21 22 uint16_t ring_buffer_capacity(RingBuffer_t *rb); 23 24 uint16_t ring_buffer_read_chunk(RingBuffer_t *rb, uint8_t *dest, uint16_t size); 25 26 uint16_t ring_buffer_write_chunk(RingBuffer_t *rb, const uint8_t *src, const uint16_t size); 27 #endif // __RING_BUFFER_H__