.
Circular_buffer.cpp
- Committer:
- anyela
- Date:
- 2022-01-23
- Revision:
- 0:4e9c66d8d35b
File content as of revision 0:4e9c66d8d35b:
#include "Circular_buffer.h" // // Función que resetea el buffer int circ_buf_rst(circ_buf_t * cbuf) { int r = -1; if(cbuf) { cbuf->head = 0; cbuf->tail = 0; r = 0; } return r; } // Función para verificar si el buffer está vacío bool circ_buf_empty(circ_buf_t cbuf) // le entra la estructura, no el puntero { return (cbuf.head == cbuf.tail); // cabeza igual a cola } // Función para verificar si el buffer está lleno bool circ_buf_full(circ_buf_t cbuf) { return ((cbuf.head + 1) % cbuf.size) == cbuf.tail; } // Función para agregar datos al buffer circular int circ_buf_put(circ_buf_t * cbuf, uint8_t data) { int r = -1; if(cbuf) { cbuf->buffer[cbuf->head] = data; cbuf->head = (cbuf->head + 1) % cbuf->size; if(cbuf->head == cbuf->tail) { cbuf->tail = (cbuf->tail + 1) % cbuf->size; } r = 0; } return r; } // Función para obtener datos del buffer int circ_buf_get(circ_buf_t * cbuf, uint8_t * data) { int r = -1; if(cbuf && data && !circ_buf_empty(*cbuf)) { *data = cbuf->buffer[cbuf->tail]; cbuf->tail = (cbuf->tail + 1) % cbuf->size; r = 0; } return r; }