// -------------------------------------------------------------- #ifndef _RADIO_RINGBUF_H_ #define _RADIO_RINGBUF_H_ #include #include "radio_types.h" // -------------------------------------------------------------- // Types // -------------------------------------------------------------- typedef struct _rbuf_t { uint32_t size, iw, ir, dist; radio_float_t *pData; } rbuf_t; typedef struct _fifo_t { uint32_t size_max; uint32_t size; uint32_t ir; uint32_t iw; uint32_t *pData; } fifo_t; // -------------------------------------------------------------- #ifdef __cplusplus extern "C" { #endif // -------------------------------------------------------------- // Functions // -------------------------------------------------------------- // RingBuffer void RBufInit(rbuf_t *pObj, uint32_t size); void RBufFree(rbuf_t *pObj); void RBufPut(rbuf_t *pObj, radio_float_t x); radio_float_t RBufGet(rbuf_t *pObj); radio_float_t RBufGetAfter(rbuf_t *pObj, int32_t delay); radio_float_t RBufGetAt(rbuf_t *pObj, uint32_t index); // Fifo void FifoInit(fifo_t *pObj, uint32_t max_size); void FifoFree(fifo_t *pObj); uint32_t FifoSize(fifo_t *pObj); uint32_t FifoSizeMax(fifo_t *pObj); uint32_t FifoFront(fifo_t *pObj); uint32_t FifoBack(fifo_t *pObj); void FifoPushBack(fifo_t *pObj, uint32_t item); void FifoPushFront(fifo_t *pObj, uint32_t item); void FifoPopBack(fifo_t *pObj); void FifoPopFront(fifo_t *pObj); // -------------------------------------------------------------- #ifdef __cplusplus } #endif // __cplusplus // -------------------------------------------------------------- #endif // _RADIO_RINGBUF_H_