pub struct BlockingPartition<'a, M: RawMutex, T: NorFlash> { /* private fields */ }
Expand description

A logical partition of an underlying shared flash

A partition holds an offset and a size of the flash, and is restricted to operate with that range. There is no guarantee that muliple partitions on the same flash operate on mutually exclusive ranges - such a separation is up to the user to guarantee.

Implementations§

source§

impl<'a, M: RawMutex, T: NorFlash> BlockingPartition<'a, M, T>

source

pub const fn new( flash: &'a Mutex<M, RefCell<T>>, offset: u32, size: u32 ) -> Self

Create a new partition

source

pub const fn offset(&self) -> u32

Get the partition offset within the flash

source

pub const fn size(&self) -> u32

Get the partition size

Trait Implementations§

source§

impl<M: RawMutex, T: NorFlash> ErrorType for BlockingPartition<'_, M, T>

§

type Error = Error<<T as ErrorType>::Error>

Errors returned by this NOR flash.
source§

impl<M: RawMutex, T: NorFlash> NorFlash for BlockingPartition<'_, M, T>

source§

const WRITE_SIZE: usize = T::WRITE_SIZE

The minumum number of bytes the storage peripheral can write
source§

const ERASE_SIZE: usize = T::ERASE_SIZE

The minumum number of bytes the storage peripheral can erase
source§

fn write(&mut self, offset: u32, bytes: &[u8]) -> Result<(), Self::Error>

If power is lost during write, the contents of the written words are undefined, but the rest of the page is guaranteed to be unchanged. It is not allowed to write to the same word twice. Read more
source§

fn erase(&mut self, from: u32, to: u32) -> Result<(), Self::Error>

Erase the given storage range, clearing all data within [from..to]. The given range will contain all 1s afterwards. Read more
source§

impl<M: RawMutex, T: NorFlash> ReadNorFlash for BlockingPartition<'_, M, T>

source§

const READ_SIZE: usize = T::READ_SIZE

The minumum number of bytes the storage peripheral can read
source§

fn read(&mut self, offset: u32, bytes: &mut [u8]) -> Result<(), Self::Error>

Read a slice of data from the storage peripheral, starting the read operation at the given address offset, and reading bytes.len() bytes. Read more
source§

fn capacity(&self) -> usize

The capacity of the peripheral in bytes.

Auto Trait Implementations§

§

impl<'a, M, T> Freeze for BlockingPartition<'a, M, T>

§

impl<'a, M, T> !RefUnwindSafe for BlockingPartition<'a, M, T>

§

impl<'a, M, T> Send for BlockingPartition<'a, M, T>
where M: Sync, T: Send,

§

impl<'a, M, T> Sync for BlockingPartition<'a, M, T>
where M: Sync, T: Send,

§

impl<'a, M, T> Unpin for BlockingPartition<'a, M, T>

§

impl<'a, M, T> !UnwindSafe for BlockingPartition<'a, M, T>

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, 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, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.