ISKBoard example project
guowenxue
7 days ago 6c7b6c910be1dcdc0bb786e02be648b1a56faa5e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**********************************************************************
 *   Copyright: (C)2024 LingYun IoT System Studio
 *      Author: GuoWenxue<guowenxue@gmail.com>
 *
 * Description: The purpose of this code is to provide a simple ring buffer
 *              C library for ISKBoard.
 *
 *   ChangeLog:
 *        Version    Date       Author            Description
 *        V1.0.0  2024.08.29    GuoWenxue      Release initial version
 *
 ***********************************************************************/
 
 
#ifndef __RINGBUF_H_
#define __RINGBUF_H_
 
#include <sys/types.h>
#include <stdint.h>
 
typedef struct ring_buffer_s {
    uint8_t *buffer;
    int wr_pointer;
    int rd_pointer;
    int size;
} ring_buffer_t;
 
/* Initial the ring buffer */
void rb_init (ring_buffer_t *ring, uint8_t *buf, int size) ;
 
/* Clear the ring buffer data  */
void rb_clear (ring_buffer_t *rb) ;
 
/* Get ring buffer left free size  */
int rb_free_size (ring_buffer_t *rb);
 
/* Get data size in the ring buffer  */
int rb_data_size (ring_buffer_t *rb);
 
/* Read $max bytes data from ring buffer $rb to $buf */
int rb_read (ring_buffer_t *rb, uint8_t *buf, int max);
 
/*  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 (ring_buffer_t *rb, uint8_t *buf, int len) ;
 
/* Read a specify $index byte data in ring buffer $rb  */
uint8_t rb_peek(ring_buffer_t *rb, int index);
 
#endif /* __RINGBUF_H_ */