16#pragma GCC diagnostic ignored "-Wmissing-prototypes"
17#pragma GCC diagnostic ignored "-Wmissing-declarations"
29 uint8_t
data[] = {1, 2, 3, 4, 5};
33 TEST_ASSERT_EQUAL(
FRAM_OK, status);
38 const int niters = 20;
41 uint8_t
data[10] = {0, 1, 2, 3, 4};
44 for (
int i = 0;
i < niters;
i++) {
46 TEST_ASSERT_EQUAL(
FRAM_OK, status);
49 for (
unsigned int j = 0; j <
sizeof(
data); j++) {
57 uint8_t
data[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
62 for (
int i = 0;
i < niters;
i++) {
64 TEST_ASSERT_EQUAL(
FRAM_OK, status_zero);
72 uint8_t
data[16] = {};
81 unsigned int items = 5;
82 uint8_t put_data[] = {1, 2, 3, 4, 5};
85 uint8_t get_data[items];
89 TEST_ASSERT_EQUAL(
FRAM_OK, status);
90 TEST_ASSERT_EQUAL_UINT8_ARRAY(put_data, get_data, items);
94 const int niters = 20;
97 uint8_t put_data[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
100 for (
int i = 0;
i < niters;
i++) {
101 fifo_put(put_data,
sizeof(put_data));
104 for (
unsigned int j = 0; j <
sizeof(put_data); j++) {
111 for (
unsigned int i = 0;
i <
sizeof(put_data);
i++) {
115 uint8_t get_data[10] = {0};
118 for (
int i = 0;
i < niters;
i++) {
119 uint8_t get_data_len = 0;
122 TEST_ASSERT_EQUAL(
FRAM_OK, status_get);
123 TEST_ASSERT_EQUAL_INT(10, get_data_len);
124 TEST_ASSERT_EQUAL_UINT8_ARRAY(put_data, get_data,
sizeof(put_data));
127 for (
unsigned int j = 0; j <
sizeof(put_data); j++) {
137 uint8_t
data[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
142 for (
int i = 0;
i < niters;
i++) {
144 TEST_ASSERT_EQUAL(
FRAM_OK, status);
147 for (
unsigned int j = 0; j <
sizeof(
data); j++) {
156 for (
unsigned int i = 0;
i <
sizeof(
data);
i++) {
160 uint8_t get_data[
sizeof(
data)] = {0};
162 for (
int i = 0;
i < niters;
i++) {
163 uint8_t get_data_len = 0;
164 status =
fifo_get(get_data, &get_data_len);
166 TEST_ASSERT_EQUAL(
FRAM_OK, status);
167 TEST_ASSERT_EQUAL_INT(
sizeof(
data), get_data_len);
168 TEST_ASSERT_EQUAL_UINT8_ARRAY(
data, get_data,
sizeof(
data));
171 for (
unsigned int j = 0; j <
sizeof(
data); j++) {
182 uint8_t
data[] = {1, 2, 3, 4, 5};
191 uint8_t
data[] = {1, 2, 3, 4, 5};
193 TEST_ASSERT_EQUAL(
FRAM_OK, status);
210 uint8_t oob_before = 0;
211 uint8_t oob_after = 0;
212 const uint8_t oob_check = 0xFF;
215 TEST_ASSERT_EQUAL(
FRAM_OK, status);
217 TEST_ASSERT_EQUAL(
FRAM_OK, status);
221 uint8_t block_size = 7;
222 while (
fifo_size() % (block_size + 1) == 0) {
228 TEST_ASSERT_NOT_EQUAL(block_size, oob_check);
229 TEST_ASSERT_NOT_EQUAL(block_size + 1, oob_check);
231 uint8_t junk_data[256];
232 for (
int i = 0;
i < 256;
i++) {
237 uint8_t buffer_length;
245 TEST_ASSERT_EQUAL(
FRAM_OK, status);
246 status =
fifo_put(junk_data, block_size);
253 TEST_ASSERT_EQUAL(
FRAM_OK, status);
259 status =
fifo_put(junk_data, block_size);
260 TEST_ASSERT_EQUAL(
FRAM_OK, status);
265 TEST_ASSERT_EQUAL(
FRAM_OK, status);
268 TEST_ASSERT_EQUAL_UINT8_ARRAY(
buffer, junk_data, block_size);
272 TEST_ASSERT_EQUAL(
FRAM_OK, status);
273 TEST_ASSERT_EQUAL(oob_after, oob_check);
275 TEST_ASSERT_EQUAL(
FRAM_OK, status);
284 TEST_ASSERT_EQUAL(
FRAM_OK, status);
287 const uint8_t test_data[] = {0x11, 0x22, 0x33};
288 for (
int i = 0;
i < 10;
i++) {
290 status =
fifo_put(test_data,
sizeof(test_data));
291 TEST_ASSERT_EQUAL(
FRAM_OK, status);
296 TEST_ASSERT_EQUAL(
FRAM_OK, status);
299 uint8_t retrieved_data[
sizeof(test_data)];
300 uint8_t retrieved_len;
301 for (
int i = 0;
i < 10;
i++) {
302 status =
fifo_get(retrieved_data, &retrieved_len);
303 TEST_ASSERT_EQUAL(
FRAM_OK, status);
304 TEST_ASSERT_EQUAL_UINT8_ARRAY(test_data, retrieved_data,
sizeof(test_data));
311 TEST_ASSERT_EQUAL(
FRAM_OK, status);
314 const uint8_t test_data[] = {0xDE, 0xAD, 0xBE, 0xEF};
315 for (
int i = 0;
i < 5;
i++) {
316 status =
fifo_put(test_data,
sizeof(test_data));
317 TEST_ASSERT_EQUAL(
FRAM_OK, status);
321 uint8_t retrieved_data[
sizeof(test_data)];
322 uint8_t retrieved_len;
323 for (
int i = 0;
i < 5;
i++) {
324 status =
fifo_peek(
i, retrieved_data, &retrieved_len);
325 TEST_ASSERT_EQUAL(
FRAM_OK, status);
326 TEST_ASSERT_EQUAL_UINT8_ARRAY(test_data, retrieved_data,
sizeof(test_data));
336 TEST_ASSERT_EQUAL(
FRAM_OK, status);
339 const uint8_t test_data[] = {0xAA, 0xBB, 0xCC};
340 for (
int i = 0;
i < 5;
i++) {
341 status =
fifo_put(test_data,
sizeof(test_data));
342 TEST_ASSERT_EQUAL(
FRAM_OK, status);
346 for (
int i = 0;
i < 2;
i++) {
348 TEST_ASSERT_EQUAL(
FRAM_OK, status);
355 uint8_t retrieved_data[
sizeof(test_data)];
356 uint8_t retrieved_len;
357 for (
int i = 0;
i < 3;
i++) {
358 status =
fifo_get(retrieved_data, &retrieved_len);
359 TEST_ASSERT_EQUAL(
FRAM_OK, status);
360 TEST_ASSERT_EQUAL_UINT8_ARRAY(test_data, retrieved_data,
sizeof(test_data));
Circular buffer as FIFO data structure for buffering measurements.
fram_status fifo_get(uint8_t *data, uint8_t *len)
Reads a measurement from the queue.
int fifo_size(void)
Gets the total number of bytes in the buffer.
uint16_t fifo_buffer_len(void)
Get the current number of measurements stored in the buffer.
fram_status fifo_buffer_clear(void)
Clears the buffer.
fram_status fifo_put(const uint8_t *data, const uint8_t num_bytes)
Puts a measurement into the circular buffer.
fram_status fifo_drop(void)
Drops the next measurement in the buffer.
fram_status fifo_peek(size_t idx, uint8_t *data, uint8_t *len)
Peeks at the next measurement in the buffer without removing it.
fram_status fifo_load_buffer_state(void)
Loads the buffer state (read address, write address, and buffer length) from FRAM.
fram_status fram_write(fram_addr addr, const uint8_t *data, size_t len)
Write bytes at the given address.
fram_status fram_read(fram_addr addr, size_t len, uint8_t *data)
Read bytes at the given address.
void test_fifo_wraparound(void)
void test_fifo_put_Sequential(void)
void test_fifo_buffer_len(void)
void test_fifo_peek(void)
void test_fifo_drop(void)
void test_fifo_put_ValidData(void)
void test_fifo_BufferEmpty(void)
void test_fifo_load_buffer_state(void)
void test_fifo_ValidData(void)
void test_fifo_buffer_clear(void)
void test_fifo_Sequential_BufferFull(void)
void test_fifo_Sequential(void)
void test_fifo_put_Sequential_BufferFull(void)