QueueFn

Trait QueueFn 

Source
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§

Source

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 data
  • time - Maximum ticks to wait for a message
§Returns
  • Ok(()) - Message received successfully
  • Err(Error) - Timeout or other error occurred
§Examples
let mut buffer = [0u8; 16];
queue.fetch(&mut buffer, 1000).unwrap();
Source

fn fetch_from_isr(&self, buffer: &mut [u8]) -> Result<()>

Fetches a message from ISR context (non-blocking).

ISR-safe version of fetch(). Does not block.

§Parameters
  • buffer - Buffer to receive the message data
§Returns
  • Ok(()) - Message received
  • Err(Error) - Queue empty or error
Source

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 send
  • time - Maximum ticks to wait if queue is full
§Returns
  • Ok(()) - Message sent successfully
  • Err(Error) - Timeout or error occurred
§Examples
let data = [1, 2, 3, 4];
queue.post(&data, 1000).unwrap();
Source

fn post_from_isr(&self, item: &[u8]) -> Result<()>

Posts a message from ISR context (non-blocking).

ISR-safe version of post(). Does not block.

§Parameters
  • item - The message data to send
§Returns
  • Ok(()) - Message sent
  • Err(Error) - Queue full or error
Source

fn delete(&mut self)

Deletes the queue and frees its resources.

§Safety

Ensure no tasks are blocked on this queue before deletion.

Implementors§