Subversion Repositories NaviCtrl

Rev

Rev 153 | Rev 380 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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