byte_queue.h 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include "os/os_types.h"
  3. typedef struct {
  4. u8 *buff;
  5. u16 size;
  6. u16 head;
  7. u16 tail;
  8. } byte_queue_t;
  9. u8 *byte_queue_head(byte_queue_t *queue);
  10. bool byte_queue_empty(const byte_queue_t *queue);
  11. bool byte_queue_readable(const byte_queue_t *queue);
  12. bool byte_queue_full(const byte_queue_t *queue);
  13. bool byte_queue_writeable(const byte_queue_t *queue);
  14. u16 byte_queue_get_used(const byte_queue_t *queue);
  15. u16 byte_queue_get_free(const byte_queue_t *queue);
  16. void byte_queue_reset(byte_queue_t *queue);
  17. void byte_queue_init(byte_queue_t *queue, u8 *buff, u16 size);
  18. u16 byte_queue_write(byte_queue_t *queue, const u8 *buff, u16 size);
  19. u16 byte_queue_write_byte(byte_queue_t *queue, u8 byte);
  20. u16 byte_queue_read(byte_queue_t *queue, u8 *buff, u16 size);
  21. void byte_queue_fill(byte_queue_t *queue, u8 *buff, u16 size);
  22. void byte_queue_skip(byte_queue_t *queue, u16 length);
  23. u16 byte_queue_peek(byte_queue_t *queue);
  24. void byte_queue_alloc_init(byte_queue_t *queue, u8 *buff, u8 size);
  25. void byte_queue_alloc_reset(byte_queue_t *queue);
  26. u8 byte_queue_alloc(byte_queue_t *queue);
  27. void byte_queue_free(byte_queue_t *queue, u8 index);