13#ifndef ZEPHYR_INCLUDE_SYS_RINGQ_H_
14#define ZEPHYR_INCLUDE_SYS_RINGQ_H_
35 ring_buf_idx_t item_size;
41#define SYS_RINGQ_INIT(buf, item_sz, item_capacity) \
43 .rb = RING_BUF_INIT(buf, item_sz * item_capacity), \
44 .item_size = item_sz, \
58#define SYS_RINGQ_DEFINE(name, item_size, item_capacity) \
59 static uint8_t __noinit CONCAT(_ringq_data_, name)[item_size * item_capacity]; \
60 struct sys_ringq name = SYS_RINGQ_INIT(CONCAT(_ringq_data_, name), item_size, item_capacity)
78 __ASSERT(data != NULL,
"Data buffer should not be NULL");
79 __ASSERT(item_size > 0,
"item_size should be greater than 0");
82 data_size = (data_size / item_size) * item_size;
83 __ASSERT(data_size > 0,
"data_size should be a multiple of item_size and greater than 0");
86 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:248
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:287
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:275
static void ring_buf_reset(struct ring_buf *buf)
Reset ring buffer state.
Definition ring_buffer.h:236
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:186
static bool ring_buf_is_empty(const struct ring_buf *buf)
Determine if a ring buffer is empty.
Definition ring_buffer.h:226
static bool sys_ringq_full(const struct sys_ringq *ringq)
Determine if a sys_ringq is full.
Definition ringq.h:118
static size_t sys_ringq_size(const struct sys_ringq *ringq)
Determine size of available data in a ringq queue.
Definition ringq.h:154
static int sys_ringq_put(struct sys_ringq *ringq, const void *element)
Write (copy) data to a ringq queue.
Definition ringq.h:169
static bool sys_ringq_empty(const struct sys_ringq *ringq)
Determine if a sys_ringq is empty.
Definition ringq.h:106
static int sys_ringq_get(struct sys_ringq *ringq, void *element)
Read data from a sys_ringq queue.
Definition ringq.h:185
static size_t sys_ringq_capacity(const struct sys_ringq *ringq)
Return ringq queue capacity.
Definition ringq.h:142
static size_t sys_ringq_space(const struct sys_ringq *ringq)
Determine free space in a ringq queue.
Definition ringq.h:130
static void sys_ringq_reset(struct sys_ringq *ringq)
Reset ringq queue state to its initial state.
Definition ringq.h:94
static int sys_ringq_peek(struct sys_ringq *ringq, void *data)
Peek first element from a sys_ringq queue.
Definition ringq.h:198
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:75
#define ENODATA
Missing expected message data.
Definition errno.h:77
#define ENOSPC
No space left on device.
Definition errno.h:66
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
A structure to represent a ring buffer.
Definition ring_buffer.h:62
An opaque structure representing a ringq queue.
Definition ringq.h:32