mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-17 13:48:32 +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