Subversion Repositories NaviCtrl

Rev

Rev 41 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
41 ingob 1
#ifndef _FIFO_H_
2
#define _FIFO_H_
3
 
4
#include <stdio.h>
5
#include "91x_lib.h"
6
 
7
// the fifo object
8
typedef struct
9
{
153 killagreg 10
        u8 *buffer;                              // pointer to start of the ringbuffer
41 ingob 11
        u8 count;                        // number of characters in FIFO
153 killagreg 12
        u16 size;                // buffer size
41 ingob 13
        u8 *pread;               // read pointer
14
        u8 *pwrite;              // write pointer
15
} fifo_t;
16
 
17
/*
18
The initialization of the FIFO sets the read/write pointers etc..
19
The FIFO uses the buffer 'buf' which byte length must 'size'.
20
Returns 1 on success ans 0 in case of an error.
21
*/
153 killagreg 22
u8 fifo_init (fifo_t* f, u8* buf, const u16 size);
41 ingob 23
 
24
/*
25
Puts a byte into the FIFO. Returns 1 on success and 0 in case of FIFO overflow.
26
*/
27
u8 fifo_put (fifo_t* f, const u8 data);
28
 
29
/*
153 killagreg 30
Get the next byte from the FIFO. Returns 0 if the FIFO is empty.
41 ingob 31
*/
32
u8 fifo_get (fifo_t* f, u8* pdata);
33
 
34
/*
35
Get the next byte out of the FIFO. If the FIFO is empty the function blocks
36
until the next byte is put into the FIFO.
37
*/
38
u8 fifo_get_wait (fifo_t* f, u8* pdata);
39
 
153 killagreg 40
/*
41
Purges the FIFO so that it is empty afterwards
42
*/
43
void fifo_purge (fifo_t* f);
41 ingob 44
 
45
#endif /* _FIFO_H_ */