printf_fifo.h
1.76 KB
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#ifndef _PRINTF_FIFO_H_
#define _PRINTF_FIFO_H_
struct FIFO_;
typedef int (*FIFO_CALLBACK) ( struct FIFO_ *fifo);
typedef struct FIFO_ {
U8 *buf;
U32 maxsize;
U8 *head;
U8 *tail;
U32 size;
FIFO_CALLBACK getCallback;
FIFO_CALLBACK putCallback;
FIFO_CALLBACK emptyCallback;
FIFO_CALLBACK fullCallback;
FIFO_CALLBACK halfEmptyCallbk;
FIFO_CALLBACK halfFullCallbk;
} PRINTF_FIFO;
//The macro below is for increasing efficiency.
#define FiFo_GetEmptySpace( fifo ) ((fifo->maxsize) - (fifo->size))
#define FiFo_Put(fifo, src, size) (fifoPut( (fifo), (src), (size), (FALSE) ))
#define FiFo_iPut(fifo, src, size) (fifoPut( (fifo), (src), (size), (TRUE) ))
#define FiFo_GetDataSize(fifo) (fifo->size)
#define FiFo_Get(fifo, dst, size) (fifoGet( (fifo), (dst), (size), (FALSE) ) )
#define FiFo_iGet(fifo, dst, size) (fifoGet( (fifo), (dst), (size), (TRUE) ) )
//#define FiFo_HalfEmptyCallback(fifo) (fifoHalfEmptyCallback(fifo))
//#define FiFo_FullCallback(fifo) (fifoFullCallback(fifo))
void printf_fifo_init( PRINTF_FIFO *fifo, U8 *buf, U32 bufsize,
FIFO_CALLBACK pput, FIFO_CALLBACK pget, FIFO_CALLBACK pempty, FIFO_CALLBACK pfull,
FIFO_CALLBACK phalfEmpty, FIFO_CALLBACK phalfFull );
U32 fifo_getDataSize( PRINTF_FIFO *fifo );
U32 fifo_getEmptySpace( PRINTF_FIFO *fifo );
U32 fifo_put( PRINTF_FIFO *fifo, U8 *src, U32 size );
U32 fifo_iput( PRINTF_FIFO *fifo, U8 *src, U32 size );
U32 fifo_get( PRINTF_FIFO *fifo, U8 *dst, U32 size );
U32 fifo_iget( PRINTF_FIFO *fifo, U8 *dst, U32 size );
//static U32 fifoPut( PRINTF_FIFO *fifo, U8 *src, U32 size, BOOL isr );
U32 fifoPut( PRINTF_FIFO *fifo, U8 *src, U32 size, BOOL isr );
U32 fifo_peekChar( PRINTF_FIFO *fifo, U8 cha );
void fifo_clear( PRINTF_FIFO *fifo );
#endif //_PRINTF_FIFO_H_