summaryrefslogtreecommitdiff
path: root/py
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2020-04-21 22:40:12 -0400
committerDan Halbert <halbert@halwitz.org>2020-04-21 22:40:12 -0400
commitfbc8719fadbffd9b3e4ba1ceb42182c4370d0621 (patch)
treea5cc1cda9749f4748786ec86512567d49455fe71 /py
parent77cd93ac2d8ebce240055caf81f1b6bdd7c9bfcc (diff)
ringbuf tested
Diffstat (limited to 'py')
-rw-r--r--py/ringbuf.c10
-rw-r--r--py/ringbuf.h5
2 files changed, 11 insertions, 4 deletions
diff --git a/py/ringbuf.c b/py/ringbuf.c
index 70245461f..c19f1d44b 100644
--- a/py/ringbuf.c
+++ b/py/ringbuf.c
@@ -37,6 +37,12 @@ bool ringbuf_alloc(ringbuf_t *r, size_t capacity, bool long_lived) {
return r->buf != NULL;
}
+void ringbuf_free(ringbuf_t *r) {
+ gc_free(r->buf);
+ r->size = 0;
+ ringbuf_clear(r);
+}
+
size_t ringbuf_capacity(ringbuf_t *r) {
return r->size - 1;
}
@@ -72,12 +78,12 @@ void ringbuf_clear(ringbuf_t *r) {
}
// Number of free slots that can be written.
-size_t ringbuf_free(ringbuf_t *r) {
+size_t ringbuf_num_empty(ringbuf_t *r) {
return (r->size + r->iget - r->iput - 1) % r->size;
}
// Number of bytes available to read.
-size_t ringbuf_avail(ringbuf_t *r) {
+size_t ringbuf_num_filled(ringbuf_t *r) {
return (r->size + r->iput - r->iget) % r->size;
}
diff --git a/py/ringbuf.h b/py/ringbuf.h
index 1e01091ab..476bd428f 100644
--- a/py/ringbuf.h
+++ b/py/ringbuf.h
@@ -45,12 +45,13 @@ typedef struct _ringbuf_t {
// ringbuf_t buf = {buf_array, sizeof(buf_array)};
bool ringbuf_alloc(ringbuf_t *r, size_t capacity, bool long_lived);
+void ringbuf_free(ringbuf_t *r);
size_t ringbuf_capacity(ringbuf_t *r);
int ringbuf_get(ringbuf_t *r);
int ringbuf_put(ringbuf_t *r, uint8_t v);
void ringbuf_clear(ringbuf_t *r);
-size_t ringbuf_free(ringbuf_t *r);
-size_t ringbuf_avail(ringbuf_t *r);
+size_t ringbuf_num_empty(ringbuf_t *r);
+size_t ringbuf_num_filled(ringbuf_t *r);
size_t ringbuf_put_n(ringbuf_t* r, uint8_t* buf, size_t bufsize);
size_t ringbuf_get_n(ringbuf_t* r, uint8_t* buf, size_t bufsize);