Improved FIFO_Available by allowing the last byte to be available.
This commit is contained in:
@@ -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
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user