.

Files at this revision

API Documentation at this revision

Comitter:
anyela
Date:
Sun Jan 23 04:56:27 2022 +0000
Commit message:
.

Changed in this revision

Circular_buffer.cpp Show annotated file Show diff for this revision Revisions of this file
Circular_buffer.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Circular_buffer.cpp	Sun Jan 23 04:56:27 2022 +0000
@@ -0,0 +1,68 @@
+#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;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Circular_buffer.h	Sun Jan 23 04:56:27 2022 +0000
@@ -0,0 +1,25 @@
+#include "mbed.h"
+
+#ifndef Circular_buffer_H 
+#define Circular_buffer_H
+
+
+typedef struct {
+    uint8_t *buffer;
+    size_t head;
+    size_t tail;
+    size_t size; //of the buffer
+} circ_buf_t;
+
+// Función que resetea el buffer
+int circ_buf_rst(circ_buf_t * cbuf);
+// Función para agregar datos al buffer circular
+int circ_buf_put(circ_buf_t * cbuf, uint8_t data);
+// Función para obtener datos del buffer
+int circ_buf_get(circ_buf_t * cbuf, uint8_t * data);
+// Función para verificar si el buffer está vacío
+bool circ_buf_empty(circ_buf_t cbuf);
+// Función para verificar si el buffer está lleno
+bool circ_buf_full(circ_buf_t cbuf);
+
+#endif
\ No newline at end of file