| | |
| | | /******************************************************************************** |
| | | * Copyright: (C) 2021 LingYun IoT System Studio |
| | | /********************************************************************************* |
| | | * Copyright: (C) 2023 LingYun IoT System Studio. |
| | | * All rights reserved. |
| | | * |
| | | * Filename: ringbuf.h |
| | | * Description: This head file |
| | | * Description: This file is common ring buffer API functions |
| | | * |
| | | * Version: 1.0.0(2021年04月29日) |
| | | * Version: 1.0.0(11/08/23) |
| | | * Author: Guo Wenxue <guowenxue@gmail.com> |
| | | * ChangeLog: 1, Release initial version on "2021年04月29日 12时18分32秒" |
| | | * ChangeLog: 1, Release initial version on "11/08/23 16:18:43" |
| | | * |
| | | ********************************************************************************/ |
| | | |
| | |
| | | |
| | | struct ring_buffer |
| | | { |
| | | unsigned char *buffer; |
| | | unsigned char *buffer; |
| | | int wr_pointer; |
| | | int rd_pointer; |
| | | int size; |
| | |
| | | |
| | | |
| | | /* Initial the ring buffer */ |
| | | void rb_init (struct ring_buffer *ring, unsigned char *buff, int size) ; |
| | | void rb_init(struct ring_buffer *rb, unsigned char *buf, int size); |
| | | |
| | | /* Clear the ring buffer data */ |
| | | void rb_clear(struct ring_buffer *rb); |
| | | |
| | | /* Get data size in the ring buffer */ |
| | | int rb_data_size(struct ring_buffer *rb); |
| | | |
| | | /* Get ring buffer left free size */ |
| | | int rb_free_size(struct ring_buffer *rb); |
| | | |
| | | /* Read a specify $index byte data in ring buffer $rb */ |
| | | unsigned char rb_peek(struct ring_buffer *rb, int index); |
| | | |
| | | /* Description: Write $len bytes data in $buf into ring buffer $rb |
| | | * Return Value: The actual written into ring buffer data size, if ring buffer |
| | | * left space size small than $len, then only part of the data be written into. |
| | | */ |
| | | int rb_write (struct ring_buffer *rb, unsigned char *buf, int len) ; |
| | | int rb_write(struct ring_buffer *rb, unsigned char *buf, int len); |
| | | |
| | | /* Read $bytes data from ring buffer $rb to $buf */ |
| | | int rb_read(struct ring_buffer *rb, unsigned char *buf, int bytes); |
| | | |
| | | /* Get ring buffer left free size */ |
| | | int rb_free_size (struct ring_buffer *rb); |
| | | |
| | | |
| | | /* Read $max bytes data from ring buffer $rb to $buf */ |
| | | int rb_read (struct ring_buffer *rb, unsigned char *buf, int max); |
| | | |
| | | |
| | | /* Read a specify $index byte data in ring buffer $rb */ |
| | | unsigned char rb_peek(struct ring_buffer *rb, int index); |
| | | |
| | | |
| | | /* Get data size in the ring buffer */ |
| | | int rb_data_size (struct ring_buffer *rb); |
| | | |
| | | |
| | | /* Clear the ring buffer data */ |
| | | void rb_clear (struct ring_buffer *rb) ; |
| | | /* Read $bytes data from ring buffer $rb to $buf, but not drain */ |
| | | int rb_copy(struct ring_buffer *rb, unsigned char *buf, int bytes); |
| | | |
| | | #endif /* ----- #ifndef _RINGBUF_H_ ----- */ |
| | | |