RT-Thread API参考手册
3.1.1
嵌入式实时操作系统
|
环形缓冲区接口 更多...
结构体 | |
struct | rt_ringbuffer |
环形缓冲区控制块 更多... | |
枚举 |
环形缓冲区接口
enum rt_ringbuffer_state |
void rt_ringbuffer_init | ( | struct rt_ringbuffer * | rb, |
rt_uint8_t * | pool, | ||
rt_int16_t | size | ||
) |
初始化环形缓冲区
使用静态环形缓冲区前,需要调用该函数进行初始化。该函数将把用户指定的缓冲区空间的指针传递给环形缓冲区控制块,并初始化环形缓冲区控制块的参数。
rb | ringbuffer 环形缓冲区句柄 |
pool | 缓冲区指针 |
size | 缓冲区大小 |
void rt_ringbuffer_reset | ( | struct rt_ringbuffer * | rb | ) |
复位环形缓冲区
调用此函数将复位环形缓冲区,环形缓冲区控制块中的读写指针被置0。
rb | ringbuffer 环形缓冲区句柄 |
rt_size_t rt_ringbuffer_put | ( | struct rt_ringbuffer * | rb, |
const rt_uint8_t * | ptr, | ||
rt_uint16_t | length | ||
) |
往环形缓冲区中写入数据
调用此函数可以往指定环形缓冲区中写入指定长度的数据,如果剩余空间不足将丢弃剩余数据。
rb | ringbuffer 环形缓冲区句柄 |
ptr | 待写入数据的指针 |
length | 待写入数据的大小,如果 length 大于剩余空间将丢弃剩余的数据 |
rt_size_t rt_ringbuffer_put_force | ( | struct rt_ringbuffer * | rb, |
const rt_uint8_t * | ptr, | ||
rt_uint16_t | length | ||
) |
往环形缓冲区中强制压入数据
调用此函数可以往指定环形缓冲区中强制写入指定长度的数据,如果剩余空间不足将覆盖原有数据。
rb | ringbuffer 环形缓冲区句柄 |
ptr | 待压入数据的指针 |
length | 待压入数据的大小,如果 length 大于剩余空间将丢弃剩余的数据 |
rt_size_t rt_ringbuffer_putchar | ( | struct rt_ringbuffer * | rb, |
const rt_uint8_t | ch | ||
) |
往环形缓冲区中写入一个字节
调用此函数可以往指定环形缓冲区中写入一个字节的数据,如果剩余空间不足将写入失败。
rb | ringbuffer 环形缓冲区句柄 |
ch | 待写入数据 |
rt_size_t rt_ringbuffer_putchar_force | ( | struct rt_ringbuffer * | rb, |
const rt_uint8_t | ch | ||
) |
往环形缓冲区中强制写入一个字节
调用此函数可以往指定环形缓冲区中强制写入一个字节的数据,如果剩余空间不足将覆盖原有数据。
rb | ringbuffer 环形缓冲区句柄 |
ch | 待写入数据 |
rt_size_t rt_ringbuffer_get | ( | struct rt_ringbuffer * | rb, |
rt_uint8_t * | ptr, | ||
rt_uint16_t | length | ||
) |
从环形缓冲区中取出数据
调用此函数可以从环形缓冲区中读取指定长度的数据。
rb | ringbuffer 环形缓冲区句柄 |
ptr | 取出数据的写入地址 |
length | 待取出数据的大小 |
rt_size_t rt_ringbuffer_getchar | ( | struct rt_ringbuffer * | rb, |
rt_uint8_t * | ch | ||
) |
从环形缓冲区中取出一个字节的数据
调用此函数可以从环形缓冲区中读取一个字节的数据。
rb | ringbuffer 环形缓冲区句柄 |
ch | 存储待取出字节的变量 |
rt_size_t rt_ringbuffer_data_len | ( | struct rt_ringbuffer * | rb | ) |
获取环形缓冲区中已使用的空间大小
调用此函数可以获取环形缓冲区中已被使用的字节数。
rb | 环形缓冲区句柄 |
get the size of data in rb
struct rt_ringbuffer* rt_ringbuffer_create | ( | rt_uint16_t | length | ) |
创建环形缓冲区
调用该函数时先创建一个环形缓冲区对象控制块,然后给缓冲区分配一块指定大小的内存空间,并将缓冲区的指针传给控制块,接着初始化环形缓冲区对象控制块。
length | 缓冲区大小 |
void rt_ringbuffer_destroy | ( | struct rt_ringbuffer * | rb | ) |
销毁环形缓冲区
调用该函数将释放缓冲区和唤醒缓冲区控制块所占的内存空间。
rb | ringbuffer 环形缓冲区句柄 |
rt_inline rt_uint16_t rt_ringbuffer_get_size | ( | struct rt_ringbuffer * | rb | ) |
获取环形缓冲区大小
rb | ringbuffer 环形缓冲区句柄 |