6 #define WIO_QUEUE_AT(queue, type, index) \ 7 ((type*)(queue->data+index*queue->item_size)) 8 #define WIO_QUEUE_BEGIN(queue, type) \ 10 WIO_QUEUE_AT(queue, type, ((queue->begin==0)?(queue->capacity-1):(queue->begin-1))) 11 #define WIO_QUEUE_END(queue, type) \ 13 WIO_QUEUE_AT(queue, type, queue->end) 16 typedef struct wio_queue {
uint8_t wio_status_t
WIO status type.
Definition: defs.h:40
uint16_t begin
Queue begin.
Definition: queue.h:28
uint16_t size
Queue size.
Definition: queue.h:18
uint16_t item_size
Item size.
Definition: queue.h:22
wio_status_t wio_queue_init(wio_queue_t *self, uint16_t item_size, uint16_t capacity)
Initialize a WIO queue.
Definition: queue.c:8
wio_status_t wio_queue_pop(wio_queue_t *self, void *_item)
Pop an item from the queue.
Definition: queue.c:70
uint16_t end
Queue end.
Definition: queue.h:30
uint8_t * data
Queue data.
Definition: queue.h:25
wio_status_t wio_queue_fini(wio_queue_t *self)
Finalize a WIO queue.
Definition: queue.c:33
uint16_t capacity
Queue capacity.
Definition: queue.h:20
wio_status_t wio_queue_push(wio_queue_t *self, const void *item)
Push an item into the queue.
Definition: queue.c:45
WIO circular queue type.
Definition: queue.h:16