diff options
author | fishsoupisgood <github@madingley.org> | 2020-09-09 11:53:37 +0100 |
---|---|---|
committer | fishsoupisgood <github@madingley.org> | 2020-09-09 11:53:37 +0100 |
commit | 9d87c925a9eaa4fc256be3173c14a20d1469472d (patch) | |
tree | 50d63f87a47a0eac3f5b8058850184bcd4e6ee95 /stm32/app/ring.c | |
parent | dafd8cf2fdcdd637cc06f760d318cf8391b1a294 (diff) | |
download | heating-9d87c925a9eaa4fc256be3173c14a20d1469472d.tar.gz heating-9d87c925a9eaa4fc256be3173c14a20d1469472d.tar.bz2 heating-9d87c925a9eaa4fc256be3173c14a20d1469472d.zip |
everything, mostly, working
Diffstat (limited to 'stm32/app/ring.c')
-rw-r--r-- | stm32/app/ring.c | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/stm32/app/ring.c b/stm32/app/ring.c deleted file mode 100644 index 973f345..0000000 --- a/stm32/app/ring.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "project.h" - - -static inline size_t -ring_next (volatile ring_t *r, size_t p) -{ - p++; - - if (p >= r->size) - p -= r->size; - - return p; -} - -void -ring_init (volatile ring_t *r, uint8_t *buf, size_t len) -{ - r->data = buf; - r->size = len; - r->write = 0; - r->read = 0; -} - -int -ring_write_byte (volatile ring_t *r, uint8_t c) -{ - size_t n = ring_next (r, r->write); - - if (n == r->read) - return -EAGAIN; - - r->data[r->write] = c; - - r->write = n; - - return 0; -} - - -int -ring_read_byte (volatile ring_t *r, uint8_t *c) -{ - size_t n = ring_next (r, r->read); - - if (r->read == r->write) - return -EAGAIN; - - *c = r->data[r->read]; - r->read = n; - - return 0; -} - -int -ring_write (volatile ring_t *r, uint8_t *buf, size_t len, int blocking) -{ - while (len--) { - if (blocking) { - while (ring_write_byte (r, *buf)); - - buf++; - } else { - if (ring_write_byte (r, * (buf++))) - return -EAGAIN; - } - } - - return 0; -} - - - -int -ring_empty (volatile ring_t *r) -{ - return (r->read == r->write) ? 1 : 0; -} |