BLE5.2 1.0
开发文档说明
ringbuffer.h
浏览该文件的文档.
1
7#ifndef __RINGBUFFER_H__
8#define __RINGBUFFER_H__
9
10#include <stdbool.h>
11#include <stdint.h>
12#include <stdio.h>
13
20// #define RING_BUFFER_SIZE 256U//512
21//
22// #if (RING_BUFFER_SIZE & (RING_BUFFER_SIZE - 1)) != 0
23// #error "RING_BUFFER_SIZE must be a power of two"
24// #endif
25
31typedef uint32_t ring_buffer_size_t;
32
39// #define RING_BUFFER_MASK (RING_BUFFER_SIZE-1)
40
46typedef struct ring_buffer
47{
49 uint8_t *buffer;
57 bool rx_lock;
59// typedef struct ring_buffer {
60// /** Buffer memory. */
62// unsigned char buffer[RING_BUFFER_SIZE];
63// /** Index of tail. */
64// ring_buffer_size_t tail_index;
65// /** Index of head. */
66// ring_buffer_size_t head_index;
67// /** Rx Locker. */
68// bool rx_lock;
69//}ring_buffer_t;
70
71// typedef struct ring_buffer {
72// /** Buffer memory. */
74// unsigned char buffer[RING_BUFFER_SIZE];
75// /** Index of tail. */
76// ring_buffer_size_t tail_index;
77// /** Index of head. */
78// ring_buffer_size_t head_index;
79// /** Rx Locker. */
80// bool rx_lock;
81//}ring_buffer_t;
82
88// void ring_buffer_init(ring_buffer_t *buffer);
89void ring_buffer_create(ring_buffer_t *rb, uint8_t *buffer, uint32_t size);
90
96void ring_buffer_queue(ring_buffer_t *rb, uint8_t data);
97
104void ring_buffer_queue_arr(ring_buffer_t *rb, uint8_t *data,
105 ring_buffer_size_t size);
106
114
132 ring_buffer_size_t index);
133
140{
141 return (rb->head_index == rb->tail_index);
142}
143
150{
151 return ((rb->head_index - rb->tail_index) & (rb->size - 1)) ==
152 (rb->size - 1);
153}
154
161{
162 return ((rb->head_index - rb->tail_index) & (rb->size - 1));
163}
164
165#endif /* __RINGBUFFER_H__ */
uint32_t ring_buffer_size_t
Definition ringbuffer.h:31
ring_buffer_size_t ring_buffer_is_full(ring_buffer_t *rb)
Definition ringbuffer.h:149
void ring_buffer_queue(ring_buffer_t *rb, uint8_t data)
Definition ringbuffer.c:25
ring_buffer_size_t ring_buffer_is_empty(ring_buffer_t *rb)
Definition ringbuffer.h:139
ring_buffer_size_t ring_buffer_dequeue(ring_buffer_t *rb, uint8_t *data)
Definition ringbuffer.c:50
struct ring_buffer ring_buffer_t
void ring_buffer_queue_arr(ring_buffer_t *rb, uint8_t *data, ring_buffer_size_t size)
Definition ringbuffer.c:40
ring_buffer_size_t ring_buffer_num_items(ring_buffer_t *rb)
Definition ringbuffer.h:160
void ring_buffer_create(ring_buffer_t *rb, uint8_t *buffer, uint32_t size)
Definition ringbuffer.c:11
ring_buffer_size_t ring_buffer_peek(ring_buffer_t *rb, uint8_t *data, ring_buffer_size_t index)
Definition ringbuffer.c:81
ring_buffer_size_t ring_buffer_dequeue_arr(ring_buffer_t *rb, uint8_t *data, ring_buffer_size_t len)
Definition ringbuffer.c:63
uint8_t * buffer
Definition ringbuffer.h:49
ring_buffer_size_t head_index
Definition ringbuffer.h:55
ring_buffer_size_t size
Definition ringbuffer.h:51
ring_buffer_size_t tail_index
Definition ringbuffer.h:53