QUEUE_LIB Embedded C library v1.0.0
queue.h
Go to the documentation of this file.
1
35#ifndef QUEUE_H
36#define QUEUE_H
37
38#ifdef __cplusplus
39extern "C"
40{
41#endif
42
43#include <stdint.h>
44#include <stdbool.h>
61 typedef enum
62 {
63 QUEUE_OK = 0U,
66 QUEUE_ERROR = 3U
68
81 typedef struct
82 {
83 void *buffer;
85 uint16_t capacity;
86 uint16_t head;
87 uint16_t tail;
88 uint16_t count;
89 } queue_t;
90
105 queue_status_t queue_init(queue_t *q, void *buffer, uint16_t buffer_element_size, uint16_t queue_capacity);
106
120 queue_status_t queue_push(queue_t *q, const void *item);
121
135 queue_status_t queue_pop(queue_t *q, void *item);
136
145 bool queue_is_empty(const queue_t *q);
146
155 bool queue_is_full(const queue_t *q);
156 /* end of queue group */
180
181#ifdef __cplusplus
182}
183#endif
184
185#endif /* QUEUE_H */
queue_status_t queue_push(queue_t *q, const void *item)
Push (enqueue) one element into the queue.
Definition: queue.c:63
queue_status_t
Queue operation status codes.
Definition: queue.h:62
queue_status_t queue_pop(queue_t *q, void *item)
Pop (dequeue) one element from the queue.
Definition: queue.c:90
bool queue_is_full(const queue_t *q)
Check if queue is full.
Definition: queue.c:129
bool queue_is_empty(const queue_t *q)
Check if queue is empty.
Definition: queue.c:117
queue_status_t queue_init(queue_t *q, void *buffer, uint16_t buffer_element_size, uint16_t queue_capacity)
Initialize a queue instance.
Definition: queue.c:42
@ QUEUE_FULL
Definition: queue.h:64
@ QUEUE_EMPTY
Definition: queue.h:65
@ QUEUE_ERROR
Definition: queue.h:66
@ QUEUE_OK
Definition: queue.h:63
FIFO queue control structure.
Definition: queue.h:82
void * buffer
Definition: queue.h:83
uint16_t buffer_element_size
Definition: queue.h:84
uint16_t capacity
Definition: queue.h:85
uint16_t tail
Definition: queue.h:87
uint16_t head
Definition: queue.h:86
uint16_t count
Definition: queue.h:88