summaryrefslogtreecommitdiff
path: root/py/ringbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/ringbuf.c')
-rw-r--r--py/ringbuf.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/py/ringbuf.c b/py/ringbuf.c
index 8795e1eda..83887b300 100644
--- a/py/ringbuf.c
+++ b/py/ringbuf.c
@@ -26,6 +26,18 @@
#include "ringbuf.h"
int ringbuf_get16(ringbuf_t *r) {
+ int v = ringbuf_peek16(r);
+ if (v == -1) {
+ return v;
+ }
+ r->iget += 2;
+ if (r->iget >= r->size) {
+ r->iget -= r->size;
+ }
+ return v;
+}
+
+int ringbuf_peek16(ringbuf_t *r) {
if (r->iget == r->iput) {
return -1;
}
@@ -36,12 +48,7 @@ int ringbuf_get16(ringbuf_t *r) {
if (iget_a == r->iput) {
return -1;
}
- uint16_t v = (r->buf[r->iget] << 8) | (r->buf[iget_a]);
- r->iget = iget_a + 1;
- if (r->iget == r->size) {
- r->iget = 0;
- }
- return v;
+ return (r->buf[r->iget] << 8) | (r->buf[iget_a]);
}
int ringbuf_put16(ringbuf_t *r, uint16_t v) {