From 7c0e646afcf8e4d3bb7b57a702a588a00a202209 Mon Sep 17 00:00:00 2001 From: rudrashukla7 Date: Wed, 10 Jun 2026 19:09:53 -0400 Subject: [PATCH 1/2] Completed ring buffer init and empty --- embedded/STM32/src/Drivers/ring_buffer.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/embedded/STM32/src/Drivers/ring_buffer.c b/embedded/STM32/src/Drivers/ring_buffer.c index fa5a3a42..2dd1d72a 100644 --- a/embedded/STM32/src/Drivers/ring_buffer.c +++ b/embedded/STM32/src/Drivers/ring_buffer.c @@ -12,7 +12,10 @@ typedef struct ring_buffer_s void ring_buffer_init(ring_buffer_t* rb, uint8_t* buf, uint32_t size) { - + rb->buf = buf; + rb->size = size; + rb->read_index = 0U; + rb->write_index = 0U; } @@ -30,5 +33,6 @@ bool ring_buffer_write(ring_buffer_t* rb, uint8_t byte) bool ring_buffer_empty(ring_buffer_t* rb) { + return (rb->read_index == rb->write_index); +} -} \ No newline at end of file From 807c9f8b8f618c9d1d45d3a150e8a32a8d5b62f4 Mon Sep 17 00:00:00 2001 From: rudrashukla7 Date: Wed, 10 Jun 2026 20:22:48 -0400 Subject: [PATCH 2/2] ring-buffer read and write --- embedded/STM32/src/Drivers/ring_buffer.c | 56 ++++++++++++++---------- embedded/STM32/src/Drivers/ring_buffer.h | 21 +++++++++ 2 files changed, 55 insertions(+), 22 deletions(-) create mode 100644 embedded/STM32/src/Drivers/ring_buffer.h diff --git a/embedded/STM32/src/Drivers/ring_buffer.c b/embedded/STM32/src/Drivers/ring_buffer.c index 2dd1d72a..2c3f5304 100644 --- a/embedded/STM32/src/Drivers/ring_buffer.c +++ b/embedded/STM32/src/Drivers/ring_buffer.c @@ -1,38 +1,50 @@ -#include "../../app/inc/common_defines.h" - -#define RING_BUF_SIZE 128U - -typedef struct ring_buffer_s -{ - uint32_t read_index; - uint32_t write_index; - uint8_t* buf; - uint32_t size; -} ring_buffer_t; +#include "ring_buffer.h" void ring_buffer_init(ring_buffer_t* rb, uint8_t* buf, uint32_t size) { - rb->buf = buf; - rb->size = size; - rb->read_index = 0U; + rb->buf = buf; + rb->size = size; + rb->read_index = 0U; rb->write_index = 0U; } -bool ring_buffer_read(ring_buffer_t* rb, uint8_t* byte) +bool ring_buffer_empty(ring_buffer_t* rb) { - - + return (rb->read_index == rb->write_index); } -bool ring_buffer_write(ring_buffer_t* rb, uint8_t byte) +static bool ring_buffer_full(ring_buffer_t* rb) { - - + return (((rb->write_index + 1U) % rb->size) == rb->read_index); } -bool ring_buffer_empty(ring_buffer_t* rb) +bool ring_buffer_read(ring_buffer_t* rb, uint8_t* byte) { - return (rb->read_index == rb->write_index); + if (ring_buffer_empty(rb)) + { + return false; + } + + *byte = rb->buf[rb->read_index]; + rb->read_index = (rb->read_index + 1U) % rb->size; + + return true; } + +bool ring_buffer_write(ring_buffer_t* rb, uint8_t byte) +{ + if (ring_buffer_full(rb)) + { + return false; + } + + rb->buf[rb->write_index] = byte; + rb->write_index = (rb->write_index + 1U) % rb->size; + + return true; +} + + + diff --git a/embedded/STM32/src/Drivers/ring_buffer.h b/embedded/STM32/src/Drivers/ring_buffer.h new file mode 100644 index 00000000..087db415 --- /dev/null +++ b/embedded/STM32/src/Drivers/ring_buffer.h @@ -0,0 +1,21 @@ +#ifndef RING_BUFFER_H +#define RING_BUFFER_H + +#include "../../app/inc/common_defines.h" + +#define RING_BUF_SIZE 128U + + +typedef struct ring_buffer_s { + uint32_t read_index; + uint32_t write_index; + uint8_t* buf; + uint32_t size; +} ring_buffer_t; + +void ring_buffer_init(ring_buffer_t* rb, uint8_t* buf, uint32_t size); +bool ring_buffer_read(ring_buffer_t* rb, uint8_t* byte); +bool ring_buffer_write(ring_buffer_t* rb, uint8_t byte); +bool ring_buffer_empty(ring_buffer_t* rb); + +#endif /* RING_BUFFER_H */ \ No newline at end of file