diff options
author | Leo C | 2014-08-21 11:36:14 +0200 |
---|---|---|
committer | Leo C | 2014-08-21 11:36:14 +0200 |
commit | 21a24f90c5aaaaf13f91716208b32cde163c5918 (patch) | |
tree | efc6f9ebab5f84d3af20493821444f220b957962 /avr/ring.h | |
parent | dea9a31523216caa153c589426b175d52aa43634 (diff) | |
download | z180-stamp-21a24f90c5aaaaf13f91716208b32cde163c5918.zip |
Create include directory
Diffstat (limited to 'avr/ring.h')
-rw-r--r-- | avr/ring.h | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/avr/ring.h b/avr/ring.h deleted file mode 100644 index d57f9aa..0000000 --- a/avr/ring.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef RING_H -#define RING_H - -struct ring { - uint8_t *data; - uint_fast8_t mask; - volatile uint_fast8_t begin; - volatile uint_fast8_t end; -}; - - -static inline -void ring_init(struct ring *ring, uint8_t *buf, int size) -{ - ring->data = buf; - ring->mask = (size-1) & 0xff; - ring->begin = 0; - ring->end = 0; -} - -static inline -int ring_write_ch(struct ring *ring, uint8_t ch) -{ - uint_fast8_t ep = ring->end; - - ring->data[ep] = ch; - ep = (ep + 1) & ring->mask; - - if ((ep) != ring->begin) { - ring->end = ep; - return 1; - } - - return -1; -} - -#if 0 -static inline -int ring_write(struct ring *ring, uint8_t *data, int size) -{ - int i; - - for (i = 0; i < size; i++) { - if (ring_write_ch(ring, data[i]) < 0) - return -i; - } - - return i; -} -#endif - -static inline -int ring_read_ch(struct ring *ring) -{ - int ret = -1; - uint_fast8_t bp = ring->begin; - - if (bp != ring->end) { - ret = ring->data[bp]; - ring->begin = (bp + 1) & ring->mask; - } - - return ret; -} - - -static inline -int_fast8_t ring_is_empty(struct ring *ring) -{ - return ring->begin == ring->end; -} - -#endif /* RING_H */ - |