Go to most recent revision | Details | 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 | { |
||
10 | u8 *buffer; // pointrer to start of the ringbuffer |
||
11 | u8 count; // number of characters in FIFO |
||
12 | u8 size; // buffer size |
||
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 | */ |
||
22 | u8 fifo_init (fifo_t* f, u8* buf, const u8 size); |
||
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 | /* |
||
30 | Get the next byte from the FIFO as int. Returns 0 if the FIFO is empty. |
||
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 | |||
40 | |||
41 | |||
42 | |||
43 | |||
44 | |||
45 | #endif /* _FIFO_H_ */ |