Subversion Repositories NaviCtrl

Rev

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"
244 killagreg 6
#define NO_ITLine 0xFFFF
41 ingob 7
 
8
// the fifo object
9
typedef struct
10
{
244 killagreg 11
        u8 *buffer;                             // pointer to start of the ringbuffer
12
        u16 count;                              // number of bytes in FIFO
13
        u16 size;                               // buffer size
14
        u8 *pread;                              // read pointer
15
        u8 *pwrite;                             // write pointer
16
        u16 putvicsource;               // IRQ source to block, during put
17
        u16 getvicsource;               // IRQ source to block, during get
41 ingob 18
} fifo_t;
19
 
380 holgerb 20
extern fifo_t UART1_rx_fifo;
41 ingob 21
/*
22
The initialization of the FIFO sets the read/write pointers etc..
23
The FIFO uses the buffer 'buf' which byte length must 'size'.
24
Returns 1 on success ans 0 in case of an error.
25
*/
244 killagreg 26
u8 fifo_init (fifo_t* f, u8* buffer, const u16 size, u16 putvicsource, u16 getvicsource);
41 ingob 27
 
28
/*
29
Puts a byte into the FIFO. Returns 1 on success and 0 in case of FIFO overflow.
30
*/
31
u8 fifo_put (fifo_t* f, const u8 data);
32
 
33
/*
153 killagreg 34
Get the next byte from the FIFO. Returns 0 if the FIFO is empty.
41 ingob 35
*/
36
u8 fifo_get (fifo_t* f, u8* pdata);
37
 
38
/*
39
Get the next byte out of the FIFO. If the FIFO is empty the function blocks
40
until the next byte is put into the FIFO.
41
*/
42
u8 fifo_get_wait (fifo_t* f, u8* pdata);
43
 
153 killagreg 44
/*
45
Purges the FIFO so that it is empty afterwards
46
*/
47
void fifo_purge (fifo_t* f);
41 ingob 48
 
49
#endif /* _FIFO_H_ */