pub trait QueueFn {
// Required methods
fn fetch(&self, buffer: &mut [u8], time: TickType) -> Result<()>;
fn fetch_from_isr(&self, buffer: &mut [u8]) -> Result<()>;
fn post(&self, item: &[u8], time: TickType) -> Result<()>;
fn post_from_isr(&self, item: &[u8]) -> Result<()>;
fn delete(&mut self);
}Expand description
Raw byte-oriented queue for inter-task message passing.
This trait defines a FIFO queue that works with raw byte arrays, suitable for variable-sized messages or when type safety is not required.
§Examples
ⓘ
use osal_rs::os::{Queue, QueueFn};
let queue = Queue::new(10, 32).unwrap(); // 10 messages, 32 bytes each
let data = [1, 2, 3, 4];
queue.post(&data, 100).unwrap();
let mut buffer = [0u8; 32];
queue.fetch(&mut buffer, 100).unwrap();Required Methods§
Sourcefn fetch(&self, buffer: &mut [u8], time: TickType) -> Result<()>
fn fetch(&self, buffer: &mut [u8], time: TickType) -> Result<()>
Fetches a message from the queue (blocking).
Removes and retrieves the oldest message from the queue.
§Parameters
buffer- Buffer to receive the message datatime- Maximum ticks to wait for a message
§Returns
Ok(())- Message received successfullyErr(Error)- Timeout or other error occurred
§Examples
ⓘ
let mut buffer = [0u8; 16];
queue.fetch(&mut buffer, 1000).unwrap();Sourcefn fetch_from_isr(&self, buffer: &mut [u8]) -> Result<()>
fn fetch_from_isr(&self, buffer: &mut [u8]) -> Result<()>
Sourcefn post(&self, item: &[u8], time: TickType) -> Result<()>
fn post(&self, item: &[u8], time: TickType) -> Result<()>
Posts a message to the queue (blocking).
Adds a new message to the end of the queue.
§Parameters
item- The message data to sendtime- Maximum ticks to wait if queue is full
§Returns
Ok(())- Message sent successfullyErr(Error)- Timeout or error occurred
§Examples
ⓘ
let data = [1, 2, 3, 4];
queue.post(&data, 1000).unwrap();