fifo.h 1.79 KB
#ifndef _FIFO_H_
#define _FIFO_H_

typedef struct {
	U8		*fifo_start_addr;
	U8		*fifo_end_addr;
	unsigned long	fifo_length;
	U8		*pRead;
	U8		*pWrite;
	unsigned long	rLen;
	unsigned long	wLen;	
	U8		wlen_H;

//	long start_addr; 		//start read write addr in stream
	unsigned long start_pos;			//start read write position in file
//	long stream_start_pos;	 /*audio stream start pos*/	
	unsigned long stream_len; 		//file len
	//long wpos;				//current write position
	//long rpos;     			//current read position
	U16 entry;				//flie index
	U16 stream_margin;
	U8 valid;
//	U8	overwrite	:	1;
//	U8	valid		:	1;
//	U8	user_data	:	1;
//	U8	open		:	5;  //had been opened count
	
} FIFO;

#define STREAM_LENTH_UNKNOWN 0xffffffff

void fifo_init ( FIFO *pFifo, U8 *pBuf,unsigned long len, int empty);
void fifo_init_w_data ( FIFO *pFifo, U8 *pBuf,unsigned long len,unsigned long dlen);
void fifo_create_file_stream ( FIFO *pFifo,unsigned long start_pos, unsigned long stream_len, U16 entry,U16 stream_margin);
I16 fifo_file_stream_flush ( FIFO *pFifo);

long fifo_get_free_space (FIFO *pFifo);
long fifo_get_data_len (FIFO *pFifo);
long fifo_put_data (FIFO *pFifo, U8 *pBuf,unsigned long len);
long fifo_get_data (FIFO *pFifo, U8 *pBuf,unsigned long len);
I8 fifo_file_stream_seek (FIFO *pFifo,unsigned long pos);
long fifo_get_OLA_data (FIFO *pFifo, U8 *pBuf, long rlen, long slen);
BOOL fifo_set_data_len (FIFO *pFifo, long len);

long fifo_put_data_one_byte (FIFO *pFifo, U8 *pBuf);

long fifo_get_fifo_4byte_data_len (FIFO *pFifo);
long fifo_get_4byte_data (FIFO *pFifo, U8 *pBuf, long len);
long fifo_get_4byte_ir_data (FIFO *pFifo, U16 *pBuf);

unsigned long fifo_get_fifo_data_wlen (FIFO *pFifo);
unsigned long fifo_discard_data (FIFO *pFifo,unsigned long len);
unsigned long fifo_get_fifo_data_len (FIFO *pFifo);

#endif //_FIFO_H_