37 (pipe_capacity_bytes > 0u) &&
65 uint8_t message_bytes) {
95 uint8_t message_bytes) {
182 for (uint8_t i = 0; i < message_bytes; i++) {
205 for (uint8_t i = 0; i < message_bytes; i++) {
#define ICARUS_MAX_MESSAGE_BYTES
Maximum bytes per message pipe buffer.
#define ICARUS_MAX_MESSAGE_QUEUES
Maximum number of message queues (pipes)
ICARUS Kernel Core - State and Initialization.
icarus_pipe_t * message_pipe_list[64]
Array of pointers to all message pipes.
volatile uint32_t os_tick_count
System tick counter.
uint32_t task_active_sleep(uint32_t ticks)
Sleep for specified ticks (cooperative, via SVC)
uint16_t __pipe_get_count(uint8_t pipe_idx)
Privileged implementation of pipe_get_count.
bool __pipe_init(uint8_t pipe_idx, uint16_t pipe_capacity_bytes)
Privileged implementation of pipe_init.
uint16_t __pipe_get_max_count(uint8_t pipe_idx)
Privileged implementation of pipe_get_max_count.
bool __pipe_enqueue(uint8_t pipe_idx, uint8_t *message, uint8_t message_bytes)
Privileged implementation of pipe_enqueue.
bool __pipe_dequeue(uint8_t pipe_idx, uint8_t *message, uint8_t message_bytes)
Privileged implementation of pipe_dequeue.
void __pipe_write_bytes(uint8_t pipe_idx, uint8_t *message, uint8_t message_bytes)
Privileged write gate: write bytes to pipe buffer.
bool __pipe_can_dequeue(uint8_t pipe_idx, uint8_t message_bytes)
Privileged call gate: can pipe deliver message_bytes bytes?
void __pipe_read_bytes(uint8_t pipe_idx, uint8_t *message, uint8_t message_bytes)
Privileged write gate: read bytes from pipe buffer.
bool __pipe_can_enqueue(uint8_t pipe_idx, uint8_t message_bytes)
Privileged call gate: can pipe accept message_bytes bytes?
ICARUS Pipe - Message Pipes (Circular Buffer Queues)
void pipe_read_bytes(uint8_t pipe_idx, uint8_t *message, uint8_t message_bytes)
Read bytes from pipe (SVC call gate)
bool pipe_can_dequeue(uint8_t pipe_idx, uint8_t message_bytes)
Check if pipe has data available (SVC call gate)
bool pipe_can_enqueue(uint8_t pipe_idx, uint8_t message_bytes)
Check if pipe can accept data (SVC call gate)
void pipe_write_bytes(uint8_t pipe_idx, uint8_t *message, uint8_t message_bytes)
Write bytes to pipe (SVC call gate)
ICARUS Scheduler - Task Scheduling and Timing.
uint16_t count
Current number of bytes in buffer.
uint16_t dequeue_idx
Read index (circular)
uint16_t max_count
Maximum buffer capacity in bytes.
uint16_t enqueue_idx
Write index (circular)
uint8_t buffer[512]
Circular message buffer.
uint32_t tick_updated_at
Last modification timestamp.
bool engaged
true if pipe is initialized and active