mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-11-09 02:53:10 +03:00
Change directory structure to align with Atmel softpack
This way we can easily check with 'diff' for differences in our code and Atmel softpack. Also, this layout is more suitable for building various different firmware images (e.g. factory-test, dfu-loader, main application) for a variety of different boards (simtrace, owhw, qmod).
This commit is contained in:
1 parent
7ed6f3bc37
commit
3f5e3ddffc
81 files changed
+1218
-12
No files matched your search
@@ -0,0 +1,70 @@
|
||||
#include "ringbuffer.h"
|
||||
#include "trace.h"
|
||||
#include "utils.h"
|
||||
|
||||
void rbuf_reset(volatile ringbuf * rb)
|
||||
{
|
||||
unsigned long state;
|
||||
|
||||
local_irq_save(state);
|
||||
rb->ird = 0;
|
||||
rb->iwr = 0;
|
||||
local_irq_restore(state);
|
||||
}
|
||||
|
||||
uint8_t rbuf_read(volatile ringbuf * rb)
|
||||
{
|
||||
unsigned long state;
|
||||
uint8_t val;
|
||||
|
||||
local_irq_save(state);
|
||||
val = rb->buf[rb->ird];
|
||||
rb->ird = (rb->ird + 1) % RING_BUFLEN;
|
||||
local_irq_restore(state);
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
uint8_t rbuf_peek(volatile ringbuf * rb)
|
||||
{
|
||||
return rb->buf[rb->ird];
|
||||
}
|
||||
|
||||
bool rbuf_is_empty(volatile ringbuf * rb)
|
||||
{
|
||||
return rb->ird == rb->iwr;
|
||||
}
|
||||
|
||||
static bool __rbuf_is_full(volatile ringbuf * rb)
|
||||
{
|
||||
return rb->ird == (rb->iwr + 1) % RING_BUFLEN;
|
||||
}
|
||||
|
||||
bool rbuf_is_full(volatile ringbuf * rb)
|
||||
{
|
||||
unsigned long state;
|
||||
bool rc;
|
||||
|
||||
local_irq_save(state);
|
||||
rc = rb->ird == (rb->iwr + 1) % RING_BUFLEN;
|
||||
local_irq_restore(state);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void rbuf_write(volatile volatile ringbuf * rb, uint8_t item)
|
||||
{
|
||||
unsigned long state;
|
||||
|
||||
local_irq_save(state);
|
||||
if (!__rbuf_is_full(rb)) {
|
||||
rb->buf[rb->iwr] = item;
|
||||
rb->iwr = (rb->iwr + 1) % RING_BUFLEN;
|
||||
local_irq_restore(state);
|
||||
} else {
|
||||
local_irq_restore(state);
|
||||
TRACE_ERROR("Ringbuffer full, losing bytes!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user