ringbuffer.h File Reference
`#include <gwenhywfar/types.h>`
`#include <gwenhywfar/gwenhywfarapi.h>`

Go to the source code of this file.

## Typedefs

typedef struct GWEN_RINGBUFFER | GWEN_RINGBUFFER

## Functions

Constructor And Destructor
GWENHYWFAR_API void | GWEN_RingBuffer_free (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API GWEN_RINGBUFFER * | GWEN_RingBuffer_new (unsigned int size)
Reading And Writing
GWENHYWFAR_API int | GWEN_RingBuffer_ReadByte (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API int | GWEN_RingBuffer_ReadBytes (GWEN_RINGBUFFER *rb, char *buffer, uint32_t *size)
GWENHYWFAR_API int | GWEN_RingBuffer_WriteByte (GWEN_RINGBUFFER *rb, char c)
GWENHYWFAR_API int | GWEN_RingBuffer_WriteBytes (GWEN_RINGBUFFER *rb, const char *buffer, uint32_t *size)
Informational Functions
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetBufferSize (const GWEN_RINGBUFFER *rb)
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetBytesLeft (const GWEN_RINGBUFFER *rb)
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetUsedBytes (const GWEN_RINGBUFFER *rb)
Statistical Functions
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetEmptyCounter (const GWEN_RINGBUFFER *rb)
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetFullCounter (const GWEN_RINGBUFFER *rb)
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetMaxUsedBytes (const GWEN_RINGBUFFER *rb)
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetThroughput (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API void | GWEN_RingBuffer_Reset (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API void | GWEN_RingBuffer_ResetEmptyCounter (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API void | GWEN_RingBuffer_ResetFullCounter (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API void | GWEN_RingBuffer_ResetMaxUsedBytes (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API void | GWEN_RingBuffer_ResetThroughput (GWEN_RINGBUFFER *rb)
Functions For Direct Manipulation Of The Buffer
Please use these functions with care. These function are supported in order to avoid unnecessary copying.
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetMaxUnsegmentedRead (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API uint32_t | GWEN_RingBuffer_GetMaxUnsegmentedWrite (GWEN_RINGBUFFER *rb)
GWENHYWFAR_API const char * | GWEN_RingBuffer_GetReadPointer (const GWEN_RINGBUFFER *rb)
GWENHYWFAR_API char * | GWEN_RingBuffer_GetWritePointer (const GWEN_RINGBUFFER *rb)
GWENHYWFAR_API void | GWEN_RingBuffer_SkipBytesRead (GWEN_RINGBUFFER *rb, uint32_t psize)
GWENHYWFAR_API void | GWEN_RingBuffer_SkipBytesWrite (GWEN_RINGBUFFER *rb, uint32_t psize)

## Typedef Documentation

## GWEN_RINGBUFFER

typedef struct GWEN_RINGBUFFER GWEN_RINGBUFFER

Definition at line 48 of file ringbuffer.h.

## Function Documentation

## GWEN_RingBuffer_free()

GWENHYWFAR_API void GWEN_RingBuffer_free | ( | GWEN_RINGBUFFER * | rb | ) |

Destructor.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetBufferSize()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetBufferSize | ( | const GWEN_RINGBUFFER * | rb | ) |

Returns the size of the ring buffer.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetBytesLeft()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetBytesLeft | ( | const GWEN_RINGBUFFER * | rb | ) |

Returns the number of bytes which still can be stored inside the ring buffer.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetEmptyCounter()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetEmptyCounter | ( | const GWEN_RINGBUFFER * | rb | ) |

Returns the number of times the buffer was empty.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetFullCounter()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetFullCounter | ( | const GWEN_RINGBUFFER * | rb | ) |

Returns the number of times the buffer was full.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetMaxUnsegmentedRead()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUnsegmentedRead | ( | GWEN_RINGBUFFER * | rb | ) |

Returns the maximum number of bytes which can be read with a following call to GWEN_RingBuffer_ReadBytes. This value (if not 0) can be used for GWEN_RingBuffer_SkipBytesRead.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetMaxUnsegmentedWrite()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUnsegmentedWrite | ( | GWEN_RINGBUFFER * | rb | ) |

Returns the maximum number of bytes which can be written with a following call to GWEN_RingBuffer_WriteBytes. This value (if not 0) can be used for GWEN_RingBuffer_SkipBytesWrite.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetMaxUsedBytes()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetMaxUsedBytes | ( | const GWEN_RINGBUFFER * | rb | ) |

Returns the maximum number of bytes which has been stored in the buffer.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetReadPointer()

GWENHYWFAR_API const char * GWEN_RingBuffer_GetReadPointer | ( | const GWEN_RINGBUFFER * | rb | ) |

Returne the current read pointer. Please note that the return value of GWEN_RingBuffer_GetMaxUnsegmentedRead indicates the maximum number of bytes at this position available! Trying to access bytes beyond that boundary will most likely result in segmentation faults. Please make sure that you call GWEN_RingBuffer_SkipBytesRead after taking data from the buffer in order to keep the internal structure intact.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetThroughput()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetThroughput | ( | GWEN_RINGBUFFER * | rb | ) |

Returns the number of bytes which have passed through this buffer (i.e. bytes that have been written to and read from the buffer.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetUsedBytes()

GWENHYWFAR_API uint32_t GWEN_RingBuffer_GetUsedBytes | ( | const GWEN_RINGBUFFER * | rb | ) |

Returns the number of bytes stored inside the ring buffer.

References GWENHYWFAR_API.

## GWEN_RingBuffer_GetWritePointer()

GWENHYWFAR_API char * GWEN_RingBuffer_GetWritePointer | ( | const GWEN_RINGBUFFER * | rb | ) |

Returne the current write pointer. Please note that the return value of GWEN_RingBuffer_GetMaxUnsegmentedWrite indicates the maximum number of bytes at this position available! Trying to access bytes beyond that boundary will most likely result in segmentation faults. Please make sure that you call GWEN_RingBuffer_SkipBytesWrite after writing data to the buffer in order to keep the internal structure intact.

## GWEN_RingBuffer_new()

GWENHYWFAR_API GWEN_RINGBUFFER * GWEN_RingBuffer_new | ( | unsigned int | size | ) |

Creates a new ring buffer

Parameters

  size | maximum size of the ring buffer

References GWENHYWFAR_API.

## GWEN_RingBuffer_ReadByte()

GWENHYWFAR_API int GWEN_RingBuffer_ReadByte | ( | GWEN_RINGBUFFER * | rb | ) |

Reads a single byte from the ring buffer.

References GWENHYWFAR_API.

## GWEN_RingBuffer_ReadBytes()

GWENHYWFAR_API int GWEN_RingBuffer_ReadBytes | ( | GWEN_RINGBUFFER * | rb,
|  | char * | buffer,
|  | uint32_t * | size )

Read bytes from the ring buffer.

Parameters

  rb | ring buffer
  buffer | pointer to the destination buffer
  size | pointer to a variable that contains the number of bytes to read. Upon return this variable contains the number of bytes actually copied.

References GWENHYWFAR_API.

## GWEN_RingBuffer_Reset()

GWENHYWFAR_API void GWEN_RingBuffer_Reset | ( | GWEN_RINGBUFFER * | rb | ) |

References GWENHYWFAR_API.

## GWEN_RingBuffer_ResetEmptyCounter()

GWENHYWFAR_API void GWEN_RingBuffer_ResetEmptyCounter | ( | GWEN_RINGBUFFER * | rb | ) |

References GWENHYWFAR_API.

## GWEN_RingBuffer_ResetFullCounter()

GWENHYWFAR_API void GWEN_RingBuffer_ResetFullCounter | ( | GWEN_RINGBUFFER * | rb | ) |

References GWENHYWFAR_API.

## GWEN_RingBuffer_ResetMaxUsedBytes()

GWENHYWFAR_API void GWEN_RingBuffer_ResetMaxUsedBytes | ( | GWEN_RINGBUFFER * | rb | ) |

Resets the counter for the maximum number of bytes stored in the buffer.

References GWENHYWFAR_API.

## GWEN_RingBuffer_ResetThroughput()

GWENHYWFAR_API void GWEN_RingBuffer_ResetThroughput | ( | GWEN_RINGBUFFER * | rb | ) |

Resets the buffers throughput counter to zero.

References GWENHYWFAR_API.

## GWEN_RingBuffer_SkipBytesRead()

GWENHYWFAR_API void GWEN_RingBuffer_SkipBytesRead | ( | GWEN_RINGBUFFER * | rb,
|  | uint32_t | psize )

Adjusts the internal pointers and statistical data as if GWEN_RingBuffer_ReadBytes had been called. Please note that the size value given here MUST be <= the value returned by GWEN_RingBuffer_GetMaxUnsegmentedRead !

References GWENHYWFAR_API.

## GWEN_RingBuffer_SkipBytesWrite()

GWENHYWFAR_API void GWEN_RingBuffer_SkipBytesWrite | ( | GWEN_RINGBUFFER * | rb,
|  | uint32_t | psize )

Adjusts the internal pointers and statistical data as if GWEN_RingBuffer_WriteBytes had been called. Please note that the size value given here MUST be <= the value returned by GWEN_RingBuffer_GetMaxUnsegmentedWrite !

References GWENHYWFAR_API.

## GWEN_RingBuffer_WriteByte()

GWENHYWFAR_API int GWEN_RingBuffer_WriteByte | ( | GWEN_RINGBUFFER * | rb,
|  | char | c )

Writes a single byte to the ring buffer.

References GWENHYWFAR_API.

## GWEN_RingBuffer_WriteBytes()

GWENHYWFAR_API int GWEN_RingBuffer_WriteBytes | ( | GWEN_RINGBUFFER * | rb,
|  | const char * | buffer,
|  | uint32_t * | size )

Writes the given bytes into the ring buffer.

Parameters

  rb | ring buffer
  buffer | pointer to bytes to write
  size | pointer to a variable that contains the number of bytes to write. Upon return this variable contains the number of bytes actually copied.

References GWENHYWFAR_API.