QUEUE_LIB Embedded C library v1.0.0
queue.h
Go to the documentation of this file.
1
28#ifndef QUEUE_H
29#define QUEUE_H
30
31#ifdef __cplusplus
32extern "C"
33{
34#endif
35
36#include <stdint.h>
37#include <stdbool.h>
38
42 typedef enum
43 {
44 QUEUE_OK = 0U,
47 QUEUE_ERROR = 3U
49
60 typedef struct
61 {
62 void *buffer;
63 uint16_t element_size;
64 uint16_t capacity;
65 uint16_t head;
66 uint16_t tail;
67 uint16_t count;
68 } queue_t;
69
79 queue_status_t queue_init(queue_t *q, void *buffer, uint16_t element_size, uint16_t capacity);
80
89 queue_status_t queue_push(queue_t *q, const void *item);
90
99 queue_status_t queue_pop(queue_t *q, void *item);
100
106 bool queue_is_empty(const queue_t *q);
107
113 bool queue_is_full(const queue_t *q);
114
138#ifdef __cplusplus
139}
140#endif
141
142#endif /* QUEUE_H */
queue_status_t queue_push(queue_t *q, const void *item)
Push an element into the queue.
Definition: queue.c:67
queue_status_t
Queue operation status codes.
Definition: queue.h:43
@ QUEUE_FULL
Definition: queue.h:45
@ QUEUE_EMPTY
Definition: queue.h:46
@ QUEUE_ERROR
Definition: queue.h:47
@ QUEUE_OK
Definition: queue.h:44
queue_status_t queue_pop(queue_t *q, void *item)
Pop an element from the queue.
Definition: queue.c:91
queue_status_t queue_init(queue_t *q, void *buffer, uint16_t element_size, uint16_t capacity)
Initialize a queue.
Definition: queue.c:47
bool queue_is_full(const queue_t *q)
Check whether queue is full.
Definition: queue.c:120
bool queue_is_empty(const queue_t *q)
Check whether queue is empty.
Definition: queue.c:115
FIFO queue control structure.
Definition: queue.h:61
uint16_t element_size
Definition: queue.h:63
void * buffer
Definition: queue.h:62
uint16_t capacity
Definition: queue.h:64
uint16_t tail
Definition: queue.h:66
uint16_t head
Definition: queue.h:65
uint16_t count
Definition: queue.h:67