#include "circbuff.h" void circbuff_init(circbuff_t* buf) { buf->num_entries = 0; buf->head = 0; buf->tail = 0; } bool circbuff_empty(circbuff_t* buf) { return (buf->num_entries == 0); } bool circbuff_full(circbuff_t* buf) { return (buf->num_entries == CIRCBUFF_SIZE); } bool circbuff_write(circbuff_t* buf, unsigned char value) { if (circbuff_full(buf)) return false; buf->buffer[buf->tail] = value; buf->num_entries++; buf->tail = (unsigned char)(buf->tail + 1) % CIRCBUFF_SIZE; return true; } bool circbuff_read(circbuff_t* buf, unsigned char* value) { if (circbuff_empty(buf)) return false; *value = buf->buffer[buf->head]; buf->num_entries--; buf->head = (unsigned char)(buf->head + 1) % CIRCBUFF_SIZE; return true; }