xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_rb(环形缓冲区)

XTINY 环形缓冲区(Ring Buffer)接口 更多...

结构体

struct  xt_rb
 环形缓冲区结构体 更多...

宏定义

#define XT_RB_FORCE   1
#define XT_RB_NO_FORCE   0
#define XT_RB_IS_VALID(rb)
#define XT_RB_IS_EMPTY(rb)
#define XT_RB_IS_FULL(rb)

函数

void xt_rb_init (struct xt_rb *rb, uint8_t *buf, uint32_t size)
 初始化环形缓冲区
void xt_rb_reset (struct xt_rb *rb)
 重置环形缓冲区(清空数据)
bool xt_rb_is_empty (const struct xt_rb *rb)
 判断缓冲区是否为空
bool xt_rb_is_full (const struct xt_rb *rb)
 判断缓冲区是否已满
uint32_t xt_rb_get_continuous_read_space (const struct xt_rb *rb)
 获取连续可读空间大小
uint32_t xt_rb_get_continuous_write_space (const struct xt_rb *rb, uint8_t b_force)
 获取连续可写空间大小
uint32_t xt_rb_get_size (const struct xt_rb *rb)
 获取缓冲区总大小
uint32_t xt_rb_get_filled (const struct xt_rb *rb)
 获取缓冲区已填充字节数
uint32_t xt_rb_get_empty (const struct xt_rb *rb)
 获取缓冲区空闲字节数
void xt_rb_putc (struct xt_rb *rb, uint8_t ch)
 写入单个字节
bool xt_rb_getc (struct xt_rb *rb, uint8_t *ch)
 读取单个字节
uint32_t xt_rb_write (struct xt_rb *rb, const uint8_t *src, uint32_t size, uint8_t b_force)
 写入数据到缓冲区
uint32_t xt_rb_read (struct xt_rb *rb, uint8_t *dst, uint32_t size)
 从缓冲区读取数据

详细描述

XTINY 环形缓冲区(Ring Buffer)接口

宏定义说明

◆ XT_RB_FORCE

#define XT_RB_FORCE   1

在文件 xt_rb.h 第 35 行定义.

◆ XT_RB_IS_EMPTY

#define XT_RB_IS_EMPTY ( rb)
值:
bool xt_rb_is_empty(const struct xt_rb *rb)
判断缓冲区是否为空

在文件 xt_rb.h 第 166 行定义.

◆ XT_RB_IS_FULL

#define XT_RB_IS_FULL ( rb)
值:
bool xt_rb_is_full(const struct xt_rb *rb)
判断缓冲区是否已满

在文件 xt_rb.h 第 167 行定义.

◆ XT_RB_IS_VALID

#define XT_RB_IS_VALID ( rb)
值:
((rb) && ((rb)->p_buf) && ((rb)->buf_size > 0))

在文件 xt_rb.h 第 165 行定义.

◆ XT_RB_NO_FORCE

#define XT_RB_NO_FORCE   0

在文件 xt_rb.h 第 36 行定义.

函数说明

◆ xt_rb_get_continuous_read_space()

uint32_t xt_rb_get_continuous_read_space ( const struct xt_rb * rb)

获取连续可读空间大小

参数
rb环形缓冲区指针
返回
uint32_t 连续可读字节数

◆ xt_rb_get_continuous_write_space()

uint32_t xt_rb_get_continuous_write_space ( const struct xt_rb * rb,
uint8_t b_force )

获取连续可写空间大小

参数
rb环形缓冲区指针
b_force是否强制覆盖(XT_RB_FORCE / XT_RB_NO_FORCE)
返回
uint32_t 连续可写字节数

◆ xt_rb_get_empty()

uint32_t xt_rb_get_empty ( const struct xt_rb * rb)

获取缓冲区空闲字节数

参数
rb环形缓冲区指针
返回
uint32_t 空闲字节数

◆ xt_rb_get_filled()

uint32_t xt_rb_get_filled ( const struct xt_rb * rb)

获取缓冲区已填充字节数

参数
rb环形缓冲区指针
返回
uint32_t 已填充字节数

◆ xt_rb_get_size()

uint32_t xt_rb_get_size ( const struct xt_rb * rb)

获取缓冲区总大小

参数
rb环形缓冲区指针
返回
uint32_t 缓冲区总大小(字节)

◆ xt_rb_getc()

bool xt_rb_getc ( struct xt_rb * rb,
uint8_t * ch )

读取单个字节

参数
rb环形缓冲区指针
ch输出读取的字节
返回
bool true 读取成功,false 缓冲区为空

◆ xt_rb_init()

void xt_rb_init ( struct xt_rb * rb,
uint8_t * buf,
uint32_t size )

初始化环形缓冲区

参数
rb环形缓冲区指针
buf缓冲区内存
size缓冲区大小(字节)

◆ xt_rb_is_empty()

bool xt_rb_is_empty ( const struct xt_rb * rb)

判断缓冲区是否为空

参数
rb环形缓冲区指针
返回
bool true 为空,false 非空

◆ xt_rb_is_full()

bool xt_rb_is_full ( const struct xt_rb * rb)

判断缓冲区是否已满

参数
rb环形缓冲区指针
返回
bool true 已满,false 未满

◆ xt_rb_putc()

void xt_rb_putc ( struct xt_rb * rb,
uint8_t ch )

写入单个字节

参数
rb环形缓冲区指针
ch要写入的字节

◆ xt_rb_read()

uint32_t xt_rb_read ( struct xt_rb * rb,
uint8_t * dst,
uint32_t size )

从缓冲区读取数据

参数
rb环形缓冲区指针
dst目标缓冲区(为 NULL 时移除数据,不复制)
size读取长度(字节)
返回
uint32_t 实际读取字节数

◆ xt_rb_reset()

void xt_rb_reset ( struct xt_rb * rb)

重置环形缓冲区(清空数据)

参数
rb环形缓冲区指针

◆ xt_rb_write()

uint32_t xt_rb_write ( struct xt_rb * rb,
const uint8_t * src,
uint32_t size,
uint8_t b_force )

写入数据到缓冲区

参数
rb环形缓冲区指针
src源数据指针(为 NULL 时不实际写入,只改变 head 和 tail)
size写入长度(字节)
b_force是否强制覆盖旧数据(XT_RB_FORCE / XT_RB_NO_FORCE)
返回
uint32_t 实际写入字节数