diff --git a/bacnet-stack/src/fifo.c b/bacnet-stack/src/fifo.c index df6170ae..1f5c9997 100755 --- a/bacnet-stack/src/fifo.c +++ b/bacnet-stack/src/fifo.c @@ -175,6 +175,20 @@ bool FIFO_Add( return status; } +/**************************************************************************** +* DESCRIPTION: Flushes any data in the buffer +* RETURN: none +* ALGORITHM: none +* NOTES: none +*****************************************************************************/ +void FIFO_Flush( + FIFO_BUFFER * b) +{ + if (b) { + b->tail = b->head; + } +} + /**************************************************************************** * DESCRIPTION: Configures the ring buffer * RETURN: none @@ -210,6 +224,7 @@ void testFIFOBuffer( { FIFO_BUFFER test_buffer; volatile uint8_t data_store[FIFO_BUFFER_SIZE]; + uint8_t test_add_data[40] = {"RoseSteveLouPatRachelJessicaDaniAmyHerb"}; uint8_t test_data; uint8_t index; uint8_t count; @@ -259,6 +274,25 @@ void testFIFOBuffer( } } ct_test(pTest, FIFO_Empty(&test_buffer)); + /* test Add */ + status = FIFO_Add(&test_buffer, test_add_data, sizeof(test_add_data)); + ct_test(pTest, status == true); + ct_test(pTest, !FIFO_Empty(&test_buffer)); + for (index = 0; index < sizeof(test_add_data); index++) { + /* unload the buffer */ + ct_test(pTest, !FIFO_Empty(&test_buffer)); + test_data = FIFO_Peek(&test_buffer); + ct_test(pTest, test_data == test_add_data[index]); + test_data = FIFO_Get(&test_buffer); + ct_test(pTest, test_data == test_add_data[index]); + } + ct_test(pTest, FIFO_Empty(&test_buffer)); + /* test flush */ + status = FIFO_Add(&test_buffer, test_add_data, sizeof(test_add_data)); + ct_test(pTest, status == true); + ct_test(pTest, !FIFO_Empty(&test_buffer)); + FIFO_Flush(&test_buffer); + ct_test(pTest, FIFO_Empty(&test_buffer)); return; }