engine_control/source/firmware/kernel/ringbuffer.h
2016-07-23 07:59:54 +02:00

50 lines
1.8 KiB
C
Executable File

/*
* 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_ */