ether2ser 0.1.0
Ethernet <-> synchronous V.24 bridge firmware for RP2040 + W5500
Loading...
Searching...
No Matches
ringbuffer.h
Go to the documentation of this file.
1/*
2 * ether2ser - Ethernet <-> synchronous V.24 (RS-232/V.28) bridge
3 *
4 * File: src/system/ringbuffer.h
5 * Purpose: Ring buffer data structure and API.
6 *
7 * SPDX-License-Identifier: Apache-2.0
8 *
9 * Copyright (c) 2026 Florian <f.leuze@outlook.de>
10 */
11
12#ifndef RINGBUFFER_H
13#define RINGBUFFER_H
14
15// Related headers
16
17// Standard library headers
18#include <stddef.h>
19
20// Project Headers
21
22// Generated headers
23
27typedef struct
28{
30 void* buffer;
32 void* bufferEnd;
34 size_t capacity;
36 size_t count;
40 void* head;
42 void* tail;
44
53int RbInit(Ringbuffer* bufferStruct, void* bufferPointer, size_t capacity, size_t itemSizeInByte);
54
61int RbPushBack(Ringbuffer* bufferStruct, const void* element);
62
69int RbPopFront(Ringbuffer* bufferStruct, void* element);
70
76void RbPushBackWrap(Ringbuffer* bufferStruct, const void* element);
77#endif /* RINGBUFFER_H */
int RbInit(Ringbuffer *bufferStruct, void *bufferPointer, size_t capacity, size_t itemSizeInByte)
Initialize ring buffer instance.
Definition ringbuffer.c:27
void RbPushBackWrap(Ringbuffer *bufferStruct, const void *element)
Push one element and overwrite oldest entry when full.
Definition ringbuffer.c:76
int RbPopFront(Ringbuffer *bufferStruct, void *element)
Pop one element from front.
Definition ringbuffer.c:60
int RbPushBack(Ringbuffer *bufferStruct, const void *element)
Push one element at tail/head end.
Definition ringbuffer.c:44
Generic fixed-size ring buffer state.
Definition ringbuffer.h:28
void * bufferEnd
Definition ringbuffer.h:32
void * buffer
Definition ringbuffer.h:30
size_t capacity
Definition ringbuffer.h:34
void * head
Definition ringbuffer.h:40
size_t itemSizeInByte
Definition ringbuffer.h:38
size_t count
Definition ringbuffer.h:36
void * tail
Definition ringbuffer.h:42