ring_buf.h 693 B

1234567891011121314151617181920212223242526272829
  1. #ifndef RING_BUF_H
  2. #define RING_BUF_H
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. typedef struct {
  6. uint32_t *buf_ptr;
  7. uint32_t size;
  8. uint32_t read_index;
  9. uint32_t write_index;
  10. } rbuf_t;
  11. void rbuf32_init(rbuf_t *rbuf32, uint32_t *buffer, uint32_t size);
  12. void rbuf64_init(rbuf_t *rbuf64, uint64_t *buffer, uint32_t size);
  13. bool rbuf_isempty(rbuf_t *rbuf);
  14. int32_t rbuf_free_space(rbuf_t *rbuf);
  15. int32_t rbuf_full_space(rbuf_t *rbuf);
  16. bool rbuf_isfull(rbuf_t *rbuf);
  17. bool rbuf32_get(rbuf_t *rbuf32, uint32_t *data);
  18. bool rbuf64_get(rbuf_t *rbuf64, uint64_t *data);
  19. bool rbuf32_put(rbuf_t *rbuf32, uint32_t data);
  20. bool rbuf64_put(rbuf_t *rbuf64, uint64_t data);
  21. bool buf_test(void);
  22. #endif