flexPTP 1.0
An IEEE 1588 PTP implementation designed for microcontrollers
Loading...
Searching...
No Matches
fifo.h
Go to the documentation of this file.
1#ifndef OSLESS_FIFO
2#define OSLESS_FIFO
3
4#include <stdbool.h>
5#include <stdint.h>
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10
16typedef void(FifoLockFn)(bool lock);
17
21typedef struct {
22 uint32_t level;
23 uint32_t len;
24 uint32_t esize;
25 uint32_t read;
26 uint32_t write;
28 uint8_t *data;
29} Fifo;
30
31#define FIFO_POOL(name, len, esize) uint8_t (name)[(len) * (esize)];
32
42void fifo_init(Fifo *f, uint32_t len, uint32_t esize, uint8_t *data, FifoLockFn lockFn);
43
53bool fifo_push(Fifo *f, void const *item);
54
62uint32_t fifo_get_level(const Fifo *f);
63
73bool fifo_pop(Fifo *f, void *item);
74
80void fifo_clear(Fifo *f);
81
82#ifdef __cplusplus
83}
84#endif
85
86#endif /* OSLESS_FIFO */
bool fifo_pop(Fifo *f, void *item)
Definition: fifo.c:48
void() FifoLockFn(bool lock)
FIFO lock function.
Definition: fifo.h:16
uint32_t fifo_get_level(const Fifo *f)
Definition: fifo.c:44
bool fifo_push(Fifo *f, void const *item)
Definition: fifo.c:17
void fifo_clear(Fifo *f)
Definition: fifo.c:75
void fifo_init(Fifo *f, uint32_t len, uint32_t esize, uint8_t *data, FifoLockFn lockFn)
Definition: fifo.c:4
FIFO object.
Definition: fifo.h:21
uint32_t read
Next item to read.
Definition: fifo.h:25
FifoLockFn * lockFn
Locking function.
Definition: fifo.h:27
uint32_t level
FIFO utilization level.
Definition: fifo.h:22
uint32_t esize
Element size.
Definition: fifo.h:24
uint32_t len
Number of slots.
Definition: fifo.h:23
uint8_t * data
Pointer to the data pool.
Definition: fifo.h:28
uint32_t write
Next item to write.
Definition: fifo.h:26