7#ifndef ZEPHYR_INCLUDE_SYS_RINGQ_H_
8#define ZEPHYR_INCLUDE_SYS_RINGQ_H_
30 ring_buf_idx_t item_size;
36#define SYS_RINGQ_INIT(buf, item_sz, item_capacity) \
38 .rb = RING_BUF_INIT(buf, item_sz * item_capacity), \
39 .item_size = item_sz, \
53#define SYS_RINGQ_DEFINE(name, item_size, item_capacity) \
54 static uint8_t __noinit CONCAT(_ringq_data_, name)[item_size * item_capacity]; \
55 struct sys_ringq name = SYS_RINGQ_INIT(CONCAT(_ringq_data_, name), item_size, item_capacity)
73 __ASSERT(data !=
NULL,
"Data buffer should not be NULL");
74 __ASSERT(item_size > 0,
"item_size should be greater than 0");
77 data_size = (data_size / item_size) * item_size;
78 __ASSERT(data_size > 0,
"data_size should be a multiple of item_size and greater than 0");
81 ringq->item_size = item_size;
uint32_t ring_buf_get(struct ring_buf *buf, uint8_t *data, uint32_t size)
Read data from a ring buffer.
static uint32_t ring_buf_space_get(const struct ring_buf *buf)
Determine free space in a ring buffer.
Definition ring_buffer.h:236
static uint32_t ring_buf_size_get(const struct ring_buf *buf)
Determine size of available data in a ring buffer.
Definition ring_buffer.h:275
uint32_t ring_buf_put(struct ring_buf *buf, const uint8_t *data, uint32_t size)
Write (copy) data to a ring buffer.
uint32_t ring_buf_peek(struct ring_buf *buf, uint8_t *data, uint32_t size)
Peek at data from a ring buffer.
static uint32_t ring_buf_capacity_get(const struct ring_buf *buf)
Return ring buffer capacity.
Definition ring_buffer.h:263
static void ring_buf_reset(struct ring_buf *buf)
Reset ring buffer state.
Definition ring_buffer.h:224
static void ring_buf_init(struct ring_buf *buf, uint32_t size, uint8_t *data)
Initialize a ring buffer for byte data.
Definition ring_buffer.h:174
static bool ring_buf_is_empty(const struct ring_buf *buf)
Determine if a ring buffer is empty.
Definition ring_buffer.h:214
static bool sys_ringq_full(const struct sys_ringq *ringq)
Determine if a sys_ringq is full.
Definition ringq.h:113
static size_t sys_ringq_size(const struct sys_ringq *ringq)
Determine size of available data in a ringq queue.
Definition ringq.h:149
static int sys_ringq_put(struct sys_ringq *ringq, const void *element)
Write (copy) data to a ringq queue.
Definition ringq.h:164
static bool sys_ringq_empty(const struct sys_ringq *ringq)
Determine if a sys_ringq is empty.
Definition ringq.h:101
static int sys_ringq_get(struct sys_ringq *ringq, void *element)
Read data from a sys_ringq queue.
Definition ringq.h:180
static size_t sys_ringq_capacity(const struct sys_ringq *ringq)
Return ringq queue capacity.
Definition ringq.h:137
static size_t sys_ringq_space(const struct sys_ringq *ringq)
Determine free space in a ringq queue.
Definition ringq.h:125
static void sys_ringq_reset(struct sys_ringq *ringq)
Reset ringq queue state to its initial state.
Definition ringq.h:89
static int sys_ringq_peek(struct sys_ringq *ringq, void *data)
Peek first element from a sys_ringq queue.
Definition ringq.h:193
static void sys_ringq_init(struct sys_ringq *ringq, uint8_t *data, size_t data_size, size_t item_size)
Initialize a ringq queue.
Definition ringq.h:70
#define ENODATA
Missing expected message data.
Definition errno.h:77
#define ENOSPC
No space left on device.
Definition errno.h:66
#define NULL
Definition iar_missing_defs.h:20
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
A structure to represent a ring buffer.
Definition ring_buffer.h:50
A structure to represent a ringq queue.
Definition ringq.h:27