1 #ifndef _WINDOWEDFIFO_H_
2 #define _WINDOWEDFIFO_H_
7 #include "../constant.h"
9 #include "../lib/malloc_align.h"
10 #include "../lib/free_align.h"
14 WindowedFifo(unsigned size);
15 virtual ~WindowedFifo();
18 virtual unsigned reserve(void** destination, unsigned len);
19 virtual void release();
22 virtual unsigned capture(void** destination, unsigned len);
23 virtual void consume();
25 // General FIFO functions
26 virtual unsigned used() const;
27 virtual unsigned unused() const;
28 virtual unsigned size() const;
31 virtual char *getQueuePointer();
32 virtual void dmaRead(unsigned len);
33 virtual unsigned dmaStart();
34 virtual bool dmaAllowed();
35 virtual unsigned dmaWrite(const void *source, unsigned len);
50 unsigned _writeReserve;
51 unsigned _readReserve;
56 unsigned _blocked; // Blocked number the request has to wait
57 bool _activeDMA; // Is there an active DMA on this buffer