cun
This commit is contained in:
55
apps/earphone/xtell_Sensor/circle_buffer.h
Normal file
55
apps/earphone/xtell_Sensor/circle_buffer.h
Normal file
@ -0,0 +1,55 @@
|
||||
#ifndef CIRCLE_BUFFER_H
|
||||
#define CIRCLE_BUFFER_H
|
||||
|
||||
#include "system/includes.h"
|
||||
|
||||
// 定义环形缓冲区的结构体
|
||||
typedef struct {
|
||||
u8 *buffer; // 缓冲区指针
|
||||
u16 capacity; // 缓冲区总容量
|
||||
u16 head; // 头部指针(写入位置)
|
||||
u16 tail; // 尾部指针(读取位置)
|
||||
u16 size; // 当前已用大小
|
||||
} circle_buffer_t;
|
||||
|
||||
/**
|
||||
* @brief 初始化环形缓冲区
|
||||
* @param cb 指向环形缓冲区结构体的指针
|
||||
* @param buffer 外部提供的缓冲区内存
|
||||
* @param capacity 缓冲区的总容量
|
||||
*/
|
||||
void circle_buffer_init(circle_buffer_t *cb, u8 *buffer, u16 capacity);
|
||||
|
||||
/**
|
||||
* @brief 向环形缓冲区写入数据
|
||||
* @param cb 指向环形缓冲区结构体的指针
|
||||
* @param data 要写入的数据的指针
|
||||
* @param length 要写入的数据的长度
|
||||
* @return 实际写入的字节数
|
||||
*/
|
||||
u16 circle_buffer_write(circle_buffer_t *cb, const u8 *data, u16 length);
|
||||
|
||||
/**
|
||||
* @brief 从环形缓冲区读取数据
|
||||
* @param cb 指向环形缓冲区结构体的指针
|
||||
* @param data 用于存放读取数据的缓冲区的指针
|
||||
* @param length 想要读取的数据的长度
|
||||
* @return 实际读取的字节数
|
||||
*/
|
||||
u16 circle_buffer_read(circle_buffer_t *cb, u8 *data, u16 length);
|
||||
|
||||
/**
|
||||
* @brief 获取环形缓冲区中已用空间的大小
|
||||
* @param cb 指向环形缓冲区结构体的指针
|
||||
* @return 已用空间的大小
|
||||
*/
|
||||
u16 circle_buffer_get_size(circle_buffer_t *cb);
|
||||
|
||||
/**
|
||||
* @brief 获取环形缓冲区中剩余空间的大小
|
||||
* @param cb 指向环形缓冲区结构体的指针
|
||||
* @return 剩余空间的大小
|
||||
*/
|
||||
u16 circle_buffer_get_free_space(circle_buffer_t *cb);
|
||||
|
||||
#endif // CIRCLE_BUFFER_H
|
||||
Reference in New Issue
Block a user