xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_rb.h
浏览该文件的文档.
1
12
13#ifndef __XT_RB_H__
14#define __XT_RB_H__
15
16/* ==================== [Includes] ========================================== */
17
18#include <stdint.h>
19#include <stdbool.h>
20#include <string.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
32
33/* ==================== [Defines] =========================================== */
34
35#define XT_RB_FORCE 1
36#define XT_RB_NO_FORCE 0
37
38/* ==================== [Typedefs] ========================================== */
39
43struct xt_rb {
44 volatile uint32_t head;
45 volatile uint32_t tail;
46 uint32_t buf_size;
47 uint8_t *p_buf;
48};
49
50/* ==================== [Global Prototypes] ================================= */
51
59void xt_rb_init(struct xt_rb *rb, uint8_t *buf, uint32_t size);
60
66void xt_rb_reset(struct xt_rb *rb);
67
74bool xt_rb_is_empty(const struct xt_rb *rb);
75
82bool xt_rb_is_full(const struct xt_rb *rb);
83
90uint32_t xt_rb_get_continuous_read_space(const struct xt_rb *rb);
91
99uint32_t xt_rb_get_continuous_write_space(const struct xt_rb *rb, uint8_t b_force);
100
107uint32_t xt_rb_get_size(const struct xt_rb *rb);
108
115uint32_t xt_rb_get_filled(const struct xt_rb *rb);
116
123uint32_t xt_rb_get_empty(const struct xt_rb *rb);
124
131void xt_rb_putc(struct xt_rb *rb, uint8_t ch);
132
140bool xt_rb_getc(struct xt_rb *rb, uint8_t *ch);
141
151uint32_t xt_rb_write(struct xt_rb *rb, const uint8_t *src, uint32_t size, uint8_t b_force);
152
161uint32_t xt_rb_read(struct xt_rb *rb, uint8_t *dst, uint32_t size);
162
163/* ==================== [Macros] ============================================ */
164
165#define XT_RB_IS_VALID(rb) ((rb) && ((rb)->p_buf) && ((rb)->buf_size > 0))
166#define XT_RB_IS_EMPTY(rb) xt_rb_is_empty(rb)
167#define XT_RB_IS_FULL(rb) xt_rb_is_full(rb)
168 /* xt_rb */
170
171#ifdef __cplusplus
172} /* extern "C" */
173#endif
174
175#endif // __XT_RB_H__
uint32_t xt_rb_get_size(const struct xt_rb *rb)
获取缓冲区总大小
void xt_rb_init(struct xt_rb *rb, uint8_t *buf, uint32_t size)
初始化环形缓冲区
uint32_t xt_rb_get_continuous_write_space(const struct xt_rb *rb, uint8_t b_force)
获取连续可写空间大小
void xt_rb_putc(struct xt_rb *rb, uint8_t ch)
写入单个字节
bool xt_rb_is_full(const struct xt_rb *rb)
判断缓冲区是否已满
uint32_t xt_rb_get_continuous_read_space(const struct xt_rb *rb)
获取连续可读空间大小
bool xt_rb_getc(struct xt_rb *rb, uint8_t *ch)
读取单个字节
uint32_t xt_rb_get_filled(const struct xt_rb *rb)
获取缓冲区已填充字节数
void xt_rb_reset(struct xt_rb *rb)
重置环形缓冲区(清空数据)
uint32_t xt_rb_get_empty(const struct xt_rb *rb)
获取缓冲区空闲字节数
bool xt_rb_is_empty(const struct xt_rb *rb)
判断缓冲区是否为空
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)
从缓冲区读取数据
环形缓冲区结构体
定义 xt_rb.h:43
volatile uint32_t head
定义 xt_rb.h:44
uint32_t buf_size
定义 xt_rb.h:46
volatile uint32_t tail
定义 xt_rb.h:45
uint8_t * p_buf
定义 xt_rb.h:47