espconn_buf.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * ringbuf.h
  3. *
  4. * Created on: Apr 22, 2016
  5. * Author: liuhan
  6. */
  7. #ifndef _ESPCONN_BUF_H_
  8. #define _ESPCONN_BUF_H_
  9. /*
  10. * ringbuffer.c
  11. *
  12. * Created on: Apr 22, 2016
  13. * Author: liuhan
  14. */
  15. #include "c_types.h"
  16. #include "ets_sys.h"
  17. #include "os_type.h"
  18. typedef struct ringbuf_t {
  19. uint8_t *buf;
  20. uint8_t *head, *tail;
  21. size_t size;
  22. } ringbuf, *ringbuf_t;
  23. ringbuf_t ringbuf_new(size_t capacity);
  24. size_t ringbuf_buffer_size(const struct ringbuf_t *rb);
  25. void ringbuf_reset(ringbuf_t rb);
  26. void ringbuf_free(ringbuf_t *rb);
  27. size_t ringbuf_capacity(const struct ringbuf_t *rb);
  28. size_t ringbuf_bytes_free(const struct ringbuf_t *rb);
  29. size_t ringbuf_bytes_used(const struct ringbuf_t *rb);
  30. int ringbuf_is_full(const struct ringbuf_t *rb);
  31. int ringbuf_is_empty(const struct ringbuf_t *rb);
  32. const void* ringbuf_tail(const struct ringbuf_t *rb);
  33. const void* ringbuf_head(const struct ringbuf_t *rb);
  34. static uint8_t *ringbuf_nextp(ringbuf_t rb, const uint8_t *p);
  35. size_t ringbuf_findchr(const struct ringbuf_t *rb, int c, size_t offset);
  36. size_t ringbuf_memset(ringbuf_t dst, int c, size_t len);
  37. void *ringbuf_memcpy_into(ringbuf_t dst, const void *src, size_t count);
  38. void *ringbuf_memcpy_from(void *dst, ringbuf_t src, size_t count);
  39. #endif /* RINGBUF_H_ */