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(
FIFO_BUFFER const *b);
bool FIFO_Available (
FIFO_BUFFER const *b,
unsigned count);
bool FIFO_Empty(
FIFO_BUFFER const *b);
+10 -2
View File
@@ -81,11 +81,11 @@ bool FIFO_Full(
* ALGORITHM: none
* NOTES: none
*****************************************************************************/
static bool FIFO_Available(
bool FIFO_Available(
FIFO_BUFFER const *b,
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 */
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);
ct_test(pTest, status == true);
ct_test(pTest, !FIFO_Empty(&test_buffer));
}
/* 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);
ct_test(pTest, status == false);
/* unload the buffer */
@@ -259,6 +263,8 @@ void testFIFOBuffer(
ct_test(pTest, test_data == index);
test_data = FIFO_Get(&test_buffer);
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));
test_data = FIFO_Get(&test_buffer);
@@ -269,6 +275,7 @@ void testFIFOBuffer(
/* test the ring around the buffer */
for (index = 0; index < FIFO_BUFFER_SIZE; index++) {
ct_test(pTest, FIFO_Empty(&test_buffer));
ct_test(pTest, FIFO_Available(&test_buffer, 4));
for (count = 1; count < 4; count++) {
test_data = count;
status = FIFO_Put(&test_buffer, test_data);
@@ -285,6 +292,7 @@ void testFIFOBuffer(
}
ct_test(pTest, FIFO_Empty(&test_buffer));
/* 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));
ct_test(pTest, status == true);
ct_test(pTest, !FIFO_Empty(&test_buffer));