mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-18 14:28:33 +03:00
basic ringbuffer implementation
This commit is contained in:
34
firmware/src_simtrace/ringbuffer.c
Normal file
34
firmware/src_simtrace/ringbuffer.c
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
typedef struct ringbuf {
|
||||||
|
uint8_t buf[BUFLEN];
|
||||||
|
uint8_t *buf_end;
|
||||||
|
uint8_t *reader;
|
||||||
|
uint8_t *writer;
|
||||||
|
} ringbuf;
|
||||||
|
|
||||||
|
void rbuf_init(ringbuf *rb)
|
||||||
|
{
|
||||||
|
rb->buf_end = buf[BUFLEN-1];
|
||||||
|
rb->buf = {0};
|
||||||
|
rb->reader = rb->buf[0];
|
||||||
|
rb->writer = rb->buf[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t rbuf_read(ringbuf *rb)
|
||||||
|
{
|
||||||
|
uint8_t val = *(rb->reader);
|
||||||
|
if (rb->reader == rb->buf_end) {
|
||||||
|
rb->reader = rb->buf;
|
||||||
|
} else{
|
||||||
|
rb->reader++;
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
void rbuf_write(ringbuf *rb, uint8_t item) {
|
||||||
|
*(rb->writer) = item;
|
||||||
|
if (rb->writer == rb->buf_end) {
|
||||||
|
rb->writer = rb->buf;
|
||||||
|
} else{
|
||||||
|
rb->writer++;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user