Improved FIFO_Available by allowing the last byte to be available.

This commit is contained in:
skarg
2012-01-06 18:52:44 +00:00
parent 513663727f
commit 10b6e58f2c
2 changed files with 14 additions and 2 deletions
+4
View File
@@ -63,6 +63,10 @@ extern "C" {
bool FIFO_Full( bool FIFO_Full(
FIFO_BUFFER const *b); FIFO_BUFFER const *b);
bool FIFO_Available (
FIFO_BUFFER const *b,
unsigned count);
bool FIFO_Empty( bool FIFO_Empty(
FIFO_BUFFER const *b); FIFO_BUFFER const *b);
+10 -2
View File
@@ -81,11 +81,11 @@ bool FIFO_Full(
* ALGORITHM: none * ALGORITHM: none
* NOTES: none * NOTES: none
*****************************************************************************/ *****************************************************************************/
static bool FIFO_Available( bool FIFO_Available(
FIFO_BUFFER const *b, FIFO_BUFFER const *b,
unsigned count) unsigned count)
{ {
return (b ? (count < (b->buffer_len - FIFO_Count(b))) : false); return (b ? (count <= (b->buffer_len - FIFO_Count(b))) : false);
} }
/**************************************************************************** /****************************************************************************
@@ -245,11 +245,15 @@ void testFIFOBuffer(
/* load the buffer */ /* load the buffer */
for (test_data = 0; test_data < FIFO_BUFFER_SIZE; test_data++) { for (test_data = 0; test_data < FIFO_BUFFER_SIZE; test_data++) {
ct_test(pTest, !FIFO_Full(&test_buffer));
ct_test(pTest, FIFO_Available(&test_buffer, 1));
status = FIFO_Put(&test_buffer, test_data); status = FIFO_Put(&test_buffer, test_data);
ct_test(pTest, status == true); ct_test(pTest, status == true);
ct_test(pTest, !FIFO_Empty(&test_buffer)); ct_test(pTest, !FIFO_Empty(&test_buffer));
} }
/* not able to put any more */ /* not able to put any more */
ct_test(pTest, FIFO_Full(&test_buffer));
ct_test(pTest, !FIFO_Available(&test_buffer, 1));
status = FIFO_Put(&test_buffer, 42); status = FIFO_Put(&test_buffer, 42);
ct_test(pTest, status == false); ct_test(pTest, status == false);
/* unload the buffer */ /* unload the buffer */
@@ -259,6 +263,8 @@ void testFIFOBuffer(
ct_test(pTest, test_data == index); ct_test(pTest, test_data == index);
test_data = FIFO_Get(&test_buffer); test_data = FIFO_Get(&test_buffer);
ct_test(pTest, test_data == index); ct_test(pTest, test_data == index);
ct_test(pTest, FIFO_Available(&test_buffer, 1));
ct_test(pTest, !FIFO_Full(&test_buffer));
} }
ct_test(pTest, FIFO_Empty(&test_buffer)); ct_test(pTest, FIFO_Empty(&test_buffer));
test_data = FIFO_Get(&test_buffer); test_data = FIFO_Get(&test_buffer);
@@ -269,6 +275,7 @@ void testFIFOBuffer(
/* test the ring around the buffer */ /* test the ring around the buffer */
for (index = 0; index < FIFO_BUFFER_SIZE; index++) { for (index = 0; index < FIFO_BUFFER_SIZE; index++) {
ct_test(pTest, FIFO_Empty(&test_buffer)); ct_test(pTest, FIFO_Empty(&test_buffer));
ct_test(pTest, FIFO_Available(&test_buffer, 4));
for (count = 1; count < 4; count++) { for (count = 1; count < 4; count++) {
test_data = count; test_data = count;
status = FIFO_Put(&test_buffer, test_data); status = FIFO_Put(&test_buffer, test_data);
@@ -285,6 +292,7 @@ void testFIFOBuffer(
} }
ct_test(pTest, FIFO_Empty(&test_buffer)); ct_test(pTest, FIFO_Empty(&test_buffer));
/* test Add */ /* test Add */
ct_test(pTest, FIFO_Available(&test_buffer, sizeof(test_add_data)));
status = FIFO_Add(&test_buffer, test_add_data, sizeof(test_add_data)); status = FIFO_Add(&test_buffer, test_add_data, sizeof(test_add_data));
ct_test(pTest, status == true); ct_test(pTest, status == true);
ct_test(pTest, !FIFO_Empty(&test_buffer)); ct_test(pTest, !FIFO_Empty(&test_buffer));