50 lines
1.8 KiB
C
50 lines
1.8 KiB
C
|
/*
|
||
|
* ringbuffer.h
|
||
|
*
|
||
|
* Created on: Jul 24, 2012
|
||
|
* Author: tkl
|
||
|
*/
|
||
|
|
||
|
#ifndef RINGBUFFER_H_
|
||
|
#define RINGBUFFER_H_
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
//! \brief A ring buffer object.
|
||
|
struct ringbuffer {
|
||
|
char *buffer; //!< The buffer.
|
||
|
char *read; //!< Read access.
|
||
|
char *write; //!< Write access.
|
||
|
int size; //!< Buffer size.
|
||
|
int used; //!< Buffer in use.
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
//! \brief Read out n characters from ring buffer.
|
||
|
//! \param this The ring buffer to read from.
|
||
|
//! \param buffer to read to.
|
||
|
//! \param size The maximum number of characters to read.
|
||
|
//! \retval -1 in error case, otherwise the number of read characters.
|
||
|
int ringbuffer_read(struct ringbuffer *this, char *buffer, int size);
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
//! \brief Write n characters to ring buffer.
|
||
|
//! \param this The ring buffer to write to.
|
||
|
//! \param buffer to write.
|
||
|
//! \param size The number of characters to write.
|
||
|
//! \retval -1 in error case, otherwise the number of written characters.
|
||
|
int ringbuffer_write(struct ringbuffer *this, const char *buffer, int size);
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
//! \brief Check if ring buffer is full.
|
||
|
//! \param this The ring buffer to check.
|
||
|
//! \retval -1 in error case, otherwise 1 (true) / 0 (false).
|
||
|
int ringbuffer_is_full(const struct ringbuffer *this);
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
//! \brief Check if ring buffer is empty.
|
||
|
//! \param this The ring buffer to check.
|
||
|
//! \retval -1 in error case, otherwise 1 (true) / 0 (false).
|
||
|
int ringbuffer_is_empty(const struct ringbuffer *this);
|
||
|
|
||
|
#endif /* RINGBUFFER_H_ */
|