Skip to main content

RingWriter

Struct RingWriter 

Source
pub struct RingWriter<R> { /* private fields */ }
Expand description

The firmware end of a CDBG ring: appends frames, never waits.

Implementations§

Source§

impl<R: Region> RingWriter<R>

Source

pub unsafe fn init(region: R) -> Result<Self, RingError>

Reset region to a fresh, empty ring and write into it.

Debug SRAM often survives a warm reset, so the data area is zeroed before the cursors are parked: a stale packet header that still parses as valid would otherwise read as unread data and refuse the first real frames.

§Safety

This must be the ring’s only writer for as long as it lives: two writers would race on write_ptr and the packet data.

Source

pub unsafe fn attach(region: R) -> Result<Self, RingError>

Continue writing into the ring already in region, after validating it.

§Safety

As for init: this must be the ring’s only writer.

Source

pub fn into_region(self) -> R

The region back.

Source

pub fn snapshot(&self) -> Descriptor

A point-in-time copy of the descriptor.

Source

pub fn mark_panic(&mut self)

Latch Flags::Panic, keeping every other flag, so the reader can tell a crash from a clean end of stream.

Trait Implementations§

Source§

impl<R: Region> TransportError for RingWriter<R>

Source§

impl<R: Region> TrySendTransport for RingWriter<R>

Appends one frame as one packet.

Logs nothing: it runs inside the defmt logger, which must not re-enter defmt.

Source§

fn try_send(&mut self, frame: &[u8]) -> Result<(), TryError<RingError>>

Publish frame to the peer if the transport can take it now.
Source§

fn max_send_size(&self) -> usize

Maximum bytes transferable in a single try_send.

Auto Trait Implementations§

§

impl<R> Forget for RingWriter<R>

§

impl<R> Freeze for RingWriter<R>
where R: Freeze,

§

impl<R> RefUnwindSafe for RingWriter<R>
where R: RefUnwindSafe,

§

impl<R> Send for RingWriter<R>
where R: Send,

§

impl<R> Sync for RingWriter<R>
where R: Sync,

§

impl<R> Unpin for RingWriter<R>
where R: Unpin,

§

impl<R> UnsafeUnpin for RingWriter<R>
where R: UnsafeUnpin,

§

impl<R> UnwindSafe for RingWriter<R>
where R: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> MaybeSend for T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more