From 5a4fe6ec842454a8898f8b9d1d73e4045954cb66 Mon Sep 17 00:00:00 2001 From: Hannes Date: Fri, 13 Jan 2012 21:42:47 +0100 Subject: [PATCH] modified ringbuffer --- ringbuf_small.c | 16 +++++++++------- ringbuf_small.h | 14 +++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/ringbuf_small.c b/ringbuf_small.c index d848be9..360d3e9 100644 --- a/ringbuf_small.c +++ b/ringbuf_small.c @@ -14,7 +14,7 @@ * PUT AND GET ARE NOT REENTRANT! */ -void ringbuf_init(ringbuf_t *rb, char* buf, int size){ +void ringbuf_init(ringbuf_t *rb, uint16_t * buf, uint8_t size){ rb->startptr = buf; rb->size = size; rb->readpos = 0; @@ -24,7 +24,7 @@ void ringbuf_init(ringbuf_t *rb, char* buf, int size){ /* pushes a value onto the ringbuffer * returns 0 on success, 1 on buffer full */ -uint8_t ringbuf_put(ringbuf_t *rb, uint8_t value){ +uint8_t ringbuf_put(ringbuf_t *rb, uint16_t value){ // calculate next ptr pos uint8_t next = rb->writepos + 1; if(next >= rb->size){ @@ -41,10 +41,10 @@ uint8_t ringbuf_put(ringbuf_t *rb, uint8_t value){ } /* gets a value from the ringbuffer - * returns value on success, -1 on buffer empty + * returns 0 on success, -1 on buffer empty */ -int16_t ringbuf_get(ringbuf_t *rb){ - uint8_t value; +int8_t ringbuf_get(ringbuf_t *rb, uint16_t* data){ + //uint16_t value; uint8_t next; // calculate next ptr pos next = rb->readpos + 1; @@ -55,12 +55,14 @@ int16_t ringbuf_get(ringbuf_t *rb){ if(rb->readpos == rb->writepos){ return(-1); } - value = *(rb->startptr + rb->readpos); + *data = *(rb->startptr + rb->readpos); rb->readpos = next; - return(value); + return(0); } + + diff --git a/ringbuf_small.h b/ringbuf_small.h index ce6ff6b..220c43f 100644 --- a/ringbuf_small.h +++ b/ringbuf_small.h @@ -4,15 +4,15 @@ #include typedef struct { - char* startptr; - uint8_t size; - uint8_t readpos; - uint8_t writepos; + uint16_t* startptr; + uint16_t size; + uint16_t readpos; + uint16_t writepos; } ringbuf_t; -void ringbuf_init(ringbuf_t* rb, char* buf, int size); -uint8_t ringbuf_put(ringbuf_t *rb, uint8_t value); -int16_t ringbuf_get(ringbuf_t *rb); +void ringbuf_init(ringbuf_t* rb, uint16_t* buf, uint8_t size); +uint8_t ringbuf_put(ringbuf_t *rb, uint16_t value); +int8_t ringbuf_get(ringbuf_t *rb, uint16_t* data); #endif