byte_queue.h 1.1 KB

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