xt-sdk 文档
v1.0.3
xt-sdk 嵌入式 SDK API 参考
Toggle main menu visibility
载入中...
搜索中...
未找到
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
23
extern
"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
43
struct
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
59
void
xt_rb_init
(
struct
xt_rb
*rb, uint8_t *buf, uint32_t size);
60
66
void
xt_rb_reset
(
struct
xt_rb
*rb);
67
74
bool
xt_rb_is_empty
(
const
struct
xt_rb
*rb);
75
82
bool
xt_rb_is_full
(
const
struct
xt_rb
*rb);
83
90
uint32_t
xt_rb_get_continuous_read_space
(
const
struct
xt_rb
*rb);
91
99
uint32_t
xt_rb_get_continuous_write_space
(
const
struct
xt_rb
*rb, uint8_t b_force);
100
107
uint32_t
xt_rb_get_size
(
const
struct
xt_rb
*rb);
108
115
uint32_t
xt_rb_get_filled
(
const
struct
xt_rb
*rb);
116
123
uint32_t
xt_rb_get_empty
(
const
struct
xt_rb
*rb);
124
131
void
xt_rb_putc
(
struct
xt_rb
*rb, uint8_t ch);
132
140
bool
xt_rb_getc
(
struct
xt_rb
*rb, uint8_t *ch);
141
151
uint32_t
xt_rb_write
(
struct
xt_rb
*rb,
const
uint8_t *src, uint32_t size, uint8_t b_force);
152
161
uint32_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__
xt_rb_get_size
uint32_t xt_rb_get_size(const struct xt_rb *rb)
获取缓冲区总大小
xt_rb_init
void xt_rb_init(struct xt_rb *rb, uint8_t *buf, uint32_t size)
初始化环形缓冲区
xt_rb_get_continuous_write_space
uint32_t xt_rb_get_continuous_write_space(const struct xt_rb *rb, uint8_t b_force)
获取连续可写空间大小
xt_rb_putc
void xt_rb_putc(struct xt_rb *rb, uint8_t ch)
写入单个字节
xt_rb_is_full
bool xt_rb_is_full(const struct xt_rb *rb)
判断缓冲区是否已满
xt_rb_get_continuous_read_space
uint32_t xt_rb_get_continuous_read_space(const struct xt_rb *rb)
获取连续可读空间大小
xt_rb_getc
bool xt_rb_getc(struct xt_rb *rb, uint8_t *ch)
读取单个字节
xt_rb_get_filled
uint32_t xt_rb_get_filled(const struct xt_rb *rb)
获取缓冲区已填充字节数
xt_rb_reset
void xt_rb_reset(struct xt_rb *rb)
重置环形缓冲区(清空数据)
xt_rb_get_empty
uint32_t xt_rb_get_empty(const struct xt_rb *rb)
获取缓冲区空闲字节数
xt_rb_is_empty
bool xt_rb_is_empty(const struct xt_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)
写入数据到缓冲区
xt_rb_read
uint32_t xt_rb_read(struct xt_rb *rb, uint8_t *dst, uint32_t size)
从缓冲区读取数据
xt_rb
环形缓冲区结构体
定义
xt_rb.h:43
xt_rb::head
volatile uint32_t head
定义
xt_rb.h:44
xt_rb::buf_size
uint32_t buf_size
定义
xt_rb.h:46
xt_rb::tail
volatile uint32_t tail
定义
xt_rb.h:45
xt_rb::p_buf
uint8_t * p_buf
定义
xt_rb.h:47
components
xt_std
xt_rb.h
生成于
, 为 xt-sdk 文档使用
1.17.0