File syn_ringbuf.h¶
File List > src > syntropic > util > syn_ringbuf.h
Go to the documentation of this file
#ifndef SYN_RINGBUF_H
#define SYN_RINGBUF_H
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
uint8_t *buf;
size_t size;
volatile size_t head;
volatile size_t tail;
} SYN_RingBuf;
void syn_ringbuf_init(SYN_RingBuf *rb, uint8_t *buf, size_t size);
void syn_ringbuf_reset(SYN_RingBuf *rb);
bool syn_ringbuf_put(SYN_RingBuf *rb, uint8_t byte);
bool syn_ringbuf_get(SYN_RingBuf *rb, uint8_t *byte);
bool syn_ringbuf_peek(const SYN_RingBuf *rb, uint8_t *byte);
bool syn_ringbuf_full(const SYN_RingBuf *rb);
bool syn_ringbuf_empty(const SYN_RingBuf *rb);
size_t syn_ringbuf_count(const SYN_RingBuf *rb);
size_t syn_ringbuf_free(const SYN_RingBuf *rb);
size_t syn_ringbuf_write(SYN_RingBuf *rb, const uint8_t *data, size_t len);
size_t syn_ringbuf_read(SYN_RingBuf *rb, uint8_t *data, size_t len);
size_t syn_ringbuf_peek_n(const SYN_RingBuf *rb, uint8_t *data, size_t len);
#ifdef __cplusplus
}
#endif
#endif /* SYN_RINGBUF_H */