1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

sys/tsrb: add tsrb_clear

This commit is contained in:
Hendrik van Essen 2021-11-29 13:37:19 +01:00
parent c84a40abc4
commit de4b32ef54
2 changed files with 26 additions and 0 deletions

View File

@ -67,6 +67,17 @@ static inline void tsrb_init(tsrb_t *rb, uint8_t *buffer, unsigned bufsize)
rb->writes = 0;
}
/**
* @brief Clear a tsrb.
* @param[out] rb Ringbuffer to operate on
*/
static inline void tsrb_clear(tsrb_t *rb)
{
unsigned irq_state = irq_disable();
rb->reads = rb->writes;
irq_restore(irq_state);
}
/**
* @brief Test if the tsrb is empty.
* @param[in] rb Ringbuffer to operate on

View File

@ -37,6 +37,20 @@ static void tear_down(void)
tsrb_init(&_tsrb, _tsrb_buffer, BUFFER_SIZE);
}
static void test_clear(void)
{
TEST_ASSERT_EQUAL_INT(0, tsrb_avail(&_tsrb));
for (int i = 0; i < BUFFER_SIZE; i++) {
TEST_ASSERT_EQUAL_INT(0, tsrb_add_one(&_tsrb, TEST_INPUT));
TEST_ASSERT_EQUAL_INT(i + 1, tsrb_avail(&_tsrb));
}
tsrb_clear(&_tsrb);
TEST_ASSERT_EQUAL_INT(0, tsrb_avail(&_tsrb));
}
static void test_empty(void)
{
TEST_ASSERT_EQUAL_INT(1, tsrb_empty(&_tsrb));
@ -202,6 +216,7 @@ static void test_add(void)
static Test *tests_tsrb_tests(void)
{
EMB_UNIT_TESTFIXTURES(fixtures) {
new_TestFixture(test_clear),
new_TestFixture(test_empty),
new_TestFixture(test_avail),
new_TestFixture(test_full),