RT-Thread API参考手册  3.1.1
嵌入式实时操作系统
环形缓冲区

环形缓冲区接口 更多...

结构体

struct  rt_ringbuffer
 环形缓冲区控制块 更多...
 

枚举

函数

void rt_ringbuffer_init (struct rt_ringbuffer *rb, rt_uint8_t *pool, rt_int16_t size)
 初始化环形缓冲区 更多...
 
void rt_ringbuffer_reset (struct rt_ringbuffer *rb)
 复位环形缓冲区 更多...
 
rt_size_t rt_ringbuffer_put (struct rt_ringbuffer *rb, const rt_uint8_t *ptr, rt_uint16_t length)
 往环形缓冲区中写入数据 更多...
 
rt_size_t rt_ringbuffer_put_force (struct rt_ringbuffer *rb, const rt_uint8_t *ptr, rt_uint16_t length)
 往环形缓冲区中强制压入数据 更多...
 
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_get (struct rt_ringbuffer *rb, rt_uint8_t *ptr, rt_uint16_t length)
 从环形缓冲区中取出数据 更多...
 
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)
 获取环形缓冲区中已使用的空间大小 更多...
 
struct rt_ringbufferrt_ringbuffer_create (rt_uint16_t length)
 创建环形缓冲区 更多...
 
void rt_ringbuffer_destroy (struct rt_ringbuffer *rb)
 销毁环形缓冲区 更多...
 
rt_inline rt_uint16_t rt_ringbuffer_get_size (struct rt_ringbuffer *rb)
 获取环形缓冲区大小 更多...
 

详细描述

环形缓冲区接口

枚举类型说明

环形缓冲区状态

枚举值
RT_RINGBUFFER_EMPTY 

环形缓冲区空

RT_RINGBUFFER_FULL 

环形缓冲区满

RT_RINGBUFFER_HALFFULL 

环形缓冲区半满

函数说明

void rt_ringbuffer_init ( struct rt_ringbuffer rb,
rt_uint8_t pool,
rt_int16_t  size 
)

初始化环形缓冲区

使用静态环形缓冲区前,需要调用该函数进行初始化。该函数将把用户指定的缓冲区空间的指针传递给环形缓冲区控制块,并初始化环形缓冲区控制块的参数。

参数
rbringbuffer 环形缓冲区句柄
pool缓冲区指针
size缓冲区大小
void rt_ringbuffer_reset ( struct rt_ringbuffer rb)

复位环形缓冲区

调用此函数将复位环形缓冲区,环形缓冲区控制块中的读写指针被置0。

参数
rbringbuffer 环形缓冲区句柄
rt_size_t rt_ringbuffer_put ( struct rt_ringbuffer rb,
const rt_uint8_t ptr,
rt_uint16_t  length 
)

往环形缓冲区中写入数据

调用此函数可以往指定环形缓冲区中写入指定长度的数据,如果剩余空间不足将丢弃剩余数据。

参数
rbringbuffer 环形缓冲区句柄
ptr待写入数据的指针
length待写入数据的大小,如果 length 大于剩余空间将丢弃剩余的数据
返回
实际写入字节数。
rt_size_t rt_ringbuffer_put_force ( struct rt_ringbuffer rb,
const rt_uint8_t ptr,
rt_uint16_t  length 
)

往环形缓冲区中强制压入数据

调用此函数可以往指定环形缓冲区中强制写入指定长度的数据,如果剩余空间不足将覆盖原有数据。

参数
rbringbuffer 环形缓冲区句柄
ptr待压入数据的指针
length待压入数据的大小,如果 length 大于剩余空间将丢弃剩余的数据
返回
实际写入字节数。
rt_size_t rt_ringbuffer_putchar ( struct rt_ringbuffer rb,
const rt_uint8_t  ch 
)

往环形缓冲区中写入一个字节

调用此函数可以往指定环形缓冲区中写入一个字节的数据,如果剩余空间不足将写入失败。

参数
rbringbuffer 环形缓冲区句柄
ch待写入数据
返回
写入成功返回1;环形缓冲区已满,写入失败则返回0。
rt_size_t rt_ringbuffer_putchar_force ( struct rt_ringbuffer rb,
const rt_uint8_t  ch 
)

往环形缓冲区中强制写入一个字节

调用此函数可以往指定环形缓冲区中强制写入一个字节的数据,如果剩余空间不足将覆盖原有数据。

参数
rbringbuffer 环形缓冲区句柄
ch待写入数据
返回
写入成功返回1,如果缓冲区已满将覆盖已有数据
rt_size_t rt_ringbuffer_get ( struct rt_ringbuffer rb,
rt_uint8_t ptr,
rt_uint16_t  length 
)

从环形缓冲区中取出数据

调用此函数可以从环形缓冲区中读取指定长度的数据。

参数
rbringbuffer 环形缓冲区句柄
ptr取出数据的写入地址
length待取出数据的大小
返回
实际取出数据的字节数
rt_size_t rt_ringbuffer_getchar ( struct rt_ringbuffer rb,
rt_uint8_t ch 
)

从环形缓冲区中取出一个字节的数据

调用此函数可以从环形缓冲区中读取一个字节的数据。

参数
rbringbuffer 环形缓冲区句柄
ch存储待取出字节的变量
返回
0 环形缓冲区已空,取出失败;1 成功取出
rt_size_t rt_ringbuffer_data_len ( struct rt_ringbuffer rb)

获取环形缓冲区中已使用的空间大小

调用此函数可以获取环形缓冲区中已被使用的字节数。

参数
rb环形缓冲区句柄
返回
已使用的大小;0 则表示环形缓冲区已空

get the size of data in rb

struct rt_ringbuffer* rt_ringbuffer_create ( rt_uint16_t  length)

创建环形缓冲区

调用该函数时先创建一个环形缓冲区对象控制块,然后给缓冲区分配一块指定大小的内存空间,并将缓冲区的指针传给控制块,接着初始化环形缓冲区对象控制块。

参数
length缓冲区大小
返回
创建成功则返回环形缓冲区句柄,创建失败则返回RT_NULL
void rt_ringbuffer_destroy ( struct rt_ringbuffer rb)

销毁环形缓冲区

调用该函数将释放缓冲区和唤醒缓冲区控制块所占的内存空间。

参数
rbringbuffer 环形缓冲区句柄
rt_inline rt_uint16_t rt_ringbuffer_get_size ( struct rt_ringbuffer rb)

获取环形缓冲区大小

参数
rbringbuffer 环形缓冲区句柄
返回
缓冲大小