summaryrefslogtreecommitdiff
path: root/firmware/fifo.c
blob: 17551d7b06aece4b46a9a9de2d48677c65116933 (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
#include "fifo.h"

void fifo_init (fifo_t *f, uint8_t *buffer, const uint8_t size)
{
  f->count = 0;
  f->pread = f->pwrite = buffer;
  f->read2end = f->write2end = f->size = size;
}

uint8_t fifo_put (fifo_t *f, const uint8_t data)
{
  return _inline_fifo_put (f, data);
}

uint8_t fifo_get_wait (fifo_t *f)
{
  while (!f->count);
  
  return _inline_fifo_get (f);	
}

int fifo_get_nowait (fifo_t *f)
{
  if (!f->count)		return -1;
  	
  return (int) _inline_fifo_get (f);	
}