rename circular_buffer to framed_ring_buffer (#3570)
Issues due date / Add labels to issues (push) Has been cancelled
Doxygen / build (push) Has been cancelled

Co-authored-by: Fabien-B <Fabien-B@github.com>
This commit is contained in:
Fabien-B
2025-12-08 11:20:41 +01:00
committed by GitHub
parent 4744ac556b
commit b7ed10502d
12 changed files with 189 additions and 60 deletions
+2 -2
View File
@@ -33,7 +33,7 @@ export PAPARAZZI_HOME
#####################################################
# If you add more test files you add their names here
TESTS = test_circular_buffer.run
TESTS = test_framed_ring_buffer.run
###################################################
# You should not need to touch the rest of the file
@@ -52,7 +52,7 @@ build_tests: $(TESTS)
test: build_tests
prove $(VERBOSE) --exec '' ./*.run
test_circular_buffer.run: $(PAPARAZZI_SRC)/sw/airborne/utils/circular_buffer.c
test_framed_ring_buffer.run: $(PAPARAZZI_SRC)/sw/airborne/utils/framed_ring_buffer.c
%.run: %.c
@echo BUILD $@
@@ -6,12 +6,12 @@
#include "stdio.h"
#include "stdlib.h"
#include "circular_buffer.h"
#include "framed_ring_buffer.h"
#include <string.h>
#include "tap.h"
uint8_t buffer[20];
struct circular_buffer cbuf;
struct framed_ring_buffer cbuf;
int main(int argc __attribute_maybe_unused__, char **argv __attribute_maybe_unused__)
@@ -25,85 +25,85 @@ int main(int argc __attribute_maybe_unused__, char **argv __attribute_maybe_unus
note("running circular buffer tests");
plan(23);
circular_buffer_init(&cbuf, buffer, sizeof(buffer));
framed_ring_buffer_init(&cbuf, buffer, sizeof(buffer));
// get on an empty buffer
int ret = circular_buffer_get(&cbuf, dst, sizeof(dst));
int ret = framed_ring_buffer_get(&cbuf, dst, sizeof(dst));
ok(ret == CIR_ERROR_NO_MSG, "expected CIR_ERROR_NO_MSG, got %d", ret);
// put 10 bytes. 12 bytes will be occupied, 8 bytes free, 5 available for the next buffer
ret = circular_buffer_put(&cbuf, src, 10);
size_t available = circular_buffer_available(&cbuf);
ret = framed_ring_buffer_put(&cbuf, src, 10);
size_t available = framed_ring_buffer_available(&cbuf);
ok(ret == 0, "expected 0, got %d\n", ret);
ok(available == 5, "expected 5 bytes available, got %lu", available);
// put 3 bytes. 12+5=17/20 bytes occupied, 3 left. 0 available for the next buffer
ret = circular_buffer_put(&cbuf, src, 3);
available = circular_buffer_available(&cbuf);
ret = framed_ring_buffer_put(&cbuf, src, 3);
available = framed_ring_buffer_available(&cbuf);
ok(ret == 0, "expected 0, got %d\n", ret);
ok(available == 0, "expected 0 bytes available, got %lu", available);
// try puting 1 byte : should fail
ret = circular_buffer_put(&cbuf, src, 1);
ret = framed_ring_buffer_put(&cbuf, src, 1);
ok(ret == CIR_ERROR_NO_SPACE_AVAILABLE, "expected CIR_ERROR_NO_SPACE_AVAILABLE, got %d\n", ret);
// drop last buffer
circular_buffer_drop(&cbuf);
framed_ring_buffer_drop_last(&cbuf);
// put 4 bytes. 12+6=18/20 bytes occupied, 2 left. 0 available for the next buffer
ret = circular_buffer_put(&cbuf, src, 4);
available = circular_buffer_available(&cbuf);
ret = framed_ring_buffer_put(&cbuf, src, 4);
available = framed_ring_buffer_available(&cbuf);
ok(ret == 0, "expected 0, got %d\n", ret);
ok(available == 0, "expected 0 bytes available, got %lu", available);
// try puting 1 byte : should fail
ret = circular_buffer_put(&cbuf, src, 1);
ret = framed_ring_buffer_put(&cbuf, src, 1);
ok(ret == CIR_ERROR_NO_SPACE_AVAILABLE, "expected CIR_ERROR_NO_SPACE_AVAILABLE, got %d\n", ret);
// drop last buffer
circular_buffer_drop(&cbuf);
framed_ring_buffer_drop_last(&cbuf);
// put 5 bytes. 12+7=19/20 bytes occupied, 0 left. 0 available for the next buffer
ret = circular_buffer_put(&cbuf, src, 5);
available = circular_buffer_available(&cbuf);
ret = framed_ring_buffer_put(&cbuf, src, 5);
available = framed_ring_buffer_available(&cbuf);
ok(ret == 0, "expected 0, got %d\n", ret);
ok(available == 0, "expected 0 bytes available, got %lu", available);
// try puting 1 byte : should fail
ret = circular_buffer_put(&cbuf, src, 1);
ret = framed_ring_buffer_put(&cbuf, src, 1);
ok(ret == CIR_ERROR_NO_SPACE_AVAILABLE, "expected CIR_ERROR_NO_SPACE_AVAILABLE, got %d\n", ret);
// get first buffer: 10 bytes
ret = circular_buffer_get(&cbuf, dst, sizeof(dst));
ret = framed_ring_buffer_get(&cbuf, dst, sizeof(dst));
ok(ret == 10, "expected %ld, got %d", 10, ret);
ok(memcmp(dst, src, ret) == 0, "buffer corrupted");
available = circular_buffer_available(&cbuf);
available = framed_ring_buffer_available(&cbuf);
ok(available == 10, "expected 10 bytes available, got %lu", available);
// put 10 bytes. len should wrap around the buffer. len: 1 byte at the end, 1 at the start,
ret = circular_buffer_put(&cbuf, src, 10);
ret = framed_ring_buffer_put(&cbuf, src, 10);
ok(ret == 0, "expected 0, got %d\n", ret);
// get 5 bytes buffer
ret = circular_buffer_get(&cbuf, dst, sizeof(dst));
ret = framed_ring_buffer_get(&cbuf, dst, sizeof(dst));
ok(ret == 5, "expected %ld, got %d", 5, ret);
ok(memcmp(dst, src, ret) == 0, "buffer corrupted");
// get 10 bytes buffer
ret = circular_buffer_get(&cbuf, dst, sizeof(dst));
ret = framed_ring_buffer_get(&cbuf, dst, sizeof(dst));
ok(ret == 10, "expected %ld, got %d", 10, ret);
ok(memcmp(dst, src, ret) == 0, "buffer corrupted");
// put 12 bytes buffer, data will wrap around
// write_offset at 11, 2lenght+7data + 5data wrapped
ret = circular_buffer_put(&cbuf, src, 12);
ret = framed_ring_buffer_put(&cbuf, src, 12);
ok(ret == 0, "expected 0, got %d\n", ret);
// get 12 bytes buffer
ret = circular_buffer_get(&cbuf, dst, sizeof(dst));
ret = framed_ring_buffer_get(&cbuf, dst, sizeof(dst));
ok(ret == 12, "expected %ld, got %d", 12, ret);
ok(memcmp(dst, src, ret) == 0, "buffer corrupted");