/*
 * 模块名称：Ring Buffer
 * 模块功能：线程安全的字节环形缓冲区（单生产者-单消费者模型）
 * 适用平台：通用嵌入式平台
 * 作者：王建锋
 * 创建日期：2026-07-19
 * 修改记录：
 *   v1.0  2026-07-19  王建锋  创建初始版本
 */

#ifndef __RINGBUF_H
#define __RINGBUF_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include <stddef.h>

typedef struct {
    uint8_t *buf;
    size_t   size;
    size_t   head;
    size_t   tail;
} ringbuf_t;

void     ringbuf_init(ringbuf_t *rb, uint8_t *pool, size_t size);
size_t   ringbuf_put(ringbuf_t *rb, const uint8_t *data, size_t len);
size_t   ringbuf_get(ringbuf_t *rb, uint8_t *data, size_t len);
size_t   ringbuf_peek(const ringbuf_t *rb, uint8_t *data, size_t len);
size_t   ringbuf_avail(const ringbuf_t *rb);
size_t   ringbuf_space(const ringbuf_t *rb);
int      ringbuf_is_empty(const ringbuf_t *rb);
int      ringbuf_is_full(const ringbuf_t *rb);
void     ringbuf_reset(ringbuf_t *rb);

#ifdef __cplusplus
}
#endif

#endif /* __RINGBUF_H */
