blob: 10bc8ffd9ed2581b7e017dc197a15b36d714d60f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include "kernel.h"
#include "log.h"
#include "fifo.h"
#include "ringbuffer.h"
#include <stddef.h>
static ringbuffer fifo_ringbuffers[FIFO_MAX_RINGBUFFERS];
static ringbuffer_c=0;
bool fifo_put(fifo* f,uint8_t c)
{
return f->put(f->data,c);
}
uint8_t fifo_get(fifo* f)
{
return f->get(f->data);
}
bool fifo_has(fifo* f)
{
return f->has(f->data);
}
fifo fifo_create_buffered(uint8_t size)
{
if (ringbuffer_c>=FIFO_MAX_RINGBUFFERS) kpanic("ran out of ringbuffers for fifos");
fifo f;
fifo_ringbuffers[ringbuffer_c]=ringbuffer_init(size);
f.data=&fifo_ringbuffers[ringbuffer_c];
ringbuffer_c++;
f.put=ringbuffer_put;
f.get=ringbuffer_get;
f.has=ringbuffer_has;
return f;
}
|