QueueStreamedFn

Trait QueueStreamedFn 

Source
pub trait QueueStreamedFn<T>
where T: Deserialize + Sized,
{ // Required methods fn fetch(&self, buffer: &mut T, time: TickType) -> Result<()>; fn fetch_from_isr(&self, buffer: &mut T) -> Result<()>; fn post(&self, item: &T, time: TickType) -> Result<()>; fn post_from_isr(&self, item: &T) -> Result<()>; fn delete(&mut self); }
Expand description

Type-safe queue for structured message passing.

This trait provides a queue that works with specific types, offering compile-time type safety for queue operations.

§Type Parameters

  • T - The message type (must implement ToBytes)

§Examples

use osal_rs::os::{QueueStreamed, QueueStreamedFn, ToBytes};
 
struct Message {
    id: u32,
    value: i16,
}
 
let queue = QueueStreamed::<Message>::new(10, size_of::<Message>()).unwrap();
 
let msg = Message { id: 1, value: 42 };
queue.post(&msg, 100).unwrap();
 
let mut received = Message { id: 0, value: 0 };
queue.fetch(&mut received, 100).unwrap();

Required Methods§

Source

fn fetch(&self, buffer: &mut T, time: TickType) -> Result<()>

Fetches a typed message from the queue (blocking).

§Parameters
  • buffer - Mutable reference to receive the message
  • time - Maximum ticks to wait
§Returns
  • Ok(()) - Message received
  • Err(Error) - Timeout or error
Source

fn fetch_from_isr(&self, buffer: &mut T) -> Result<()>

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

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

fn post(&self, item: &T, time: TickType) -> Result<()>

Posts a typed message to the queue (blocking).

§Parameters
  • item - Reference to the message to send
  • time - Maximum ticks to wait if full
§Returns
  • Ok(()) - Message sent
  • Err(Error) - Timeout or error
Source

fn post_from_isr(&self, item: &T) -> Result<()>

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

§Parameters
  • item - Reference to the message 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§

Source§

impl<T> QueueStreamed<T> for QueueStreamed<T>
where T: StructSerde,

Available on non-crate feature serde only.