diff --git a/include/fifo.h b/include/fifo.h index 7ab2394..7aa0e56 100644 --- a/include/fifo.h +++ b/include/fifo.h @@ -15,5 +15,6 @@ struct FIFO { void FIFO_push(volatile struct FIFO* fifo, uint8_t value); uint8_t FIFO_pop(volatile struct FIFO* fifo); int FIFO_size(volatile struct FIFO* fifo); +void FIFO_clear(volatile struct FIFO* fifo); #endif diff --git a/src/fifo.c b/src/fifo.c index 6653ad0..54eb42a 100644 --- a/src/fifo.c +++ b/src/fifo.c @@ -35,3 +35,10 @@ uint8_t FIFO_pop(volatile struct FIFO* fifo) { int FIFO_size(volatile struct FIFO* fifo) { return fifo->size; } + +void FIFO_clear(volatile struct FIFO* fifo) { + fifo->head = 0; + fifo->tail = 0; + fifo->size = 0; + // We don't need to clear the buffer as we will override it anyway +} diff --git a/src/main.c b/src/main.c index 62d4350..9b11eba 100644 --- a/src/main.c +++ b/src/main.c @@ -81,6 +81,8 @@ int main() { send_keyboard_cmd(0xF3); send_keyboard_cmd(0x00 | (0<<5) | (0<<4)); + FIFO_clear(&buffer); + for (;;) { send_keyboard_cmd_queue();