kernel::utilities::registers

Struct Aliased

Source
pub struct Aliased<T, R = (), W = ()>{ /* private fields */ }
Expand description

Read-only and write-only registers aliased to the same address.

Unlike the ReadWrite register, this represents a register which has different meanings based on if it is written or read. This might be found on a device where control and status registers are accessed via the same memory address via writes and reads, respectively.

This register implements Readable and Writeable, but in general does not implement ReadWriteable (only if the type parameters R and W are identical, in which case a ReadWrite register might be a better choice).

Trait Implementations§

Source§

impl<T, R, W> Readable for Aliased<T, R, W>

Source§

type T = T

Source§

type R = R

Source§

fn get(&self) -> <Aliased<T, R, W> as Readable>::T

Get the raw register value
Source§

fn read(&self, field: Field<Self::T, Self::R>) -> Self::T

Read the value of the given field
Source§

fn read_as_enum<E>(&self, field: Field<Self::T, Self::R>) -> Option<E>
where E: TryFromValue<Self::T, EnumType = E>,

Set the raw register value Read more
Source§

fn extract(&self) -> LocalRegisterCopy<Self::T, Self::R>

Make a local copy of the register
Source§

fn is_set(&self, field: Field<Self::T, Self::R>) -> bool

Check if one or more bits in a field are set
Source§

fn any_matching_bits_set(&self, field: FieldValue<Self::T, Self::R>) -> bool

Check if any bits corresponding to the mask in the passed FieldValue are set. This function is identical to is_set() but operates on a FieldValue rather than a Field, allowing for checking if any bits are set across multiple, non-contiguous portions of a bitfield.
Source§

fn matches_all(&self, field: FieldValue<Self::T, Self::R>) -> bool

Check if all specified parts of a field match
Source§

fn matches_any(&self, fields: &[FieldValue<Self::T, Self::R>]) -> bool

Check if any of the passed parts of a field exactly match the contained value. This allows for matching on unset bits, or matching on specific values in multi-bit fields.
Source§

impl<T, R, W> Writeable for Aliased<T, R, W>

Source§

type T = T

Source§

type R = W

Source§

fn set(&self, value: <Aliased<T, R, W> as Writeable>::T)

Set the raw register value
Source§

fn write(&self, field: FieldValue<Self::T, Self::R>)

Write the value of one or more fields, overwriting the other fields with zero
Source§

fn modify_no_read( &self, original: LocalRegisterCopy<Self::T, Self::R>, field: FieldValue<Self::T, Self::R>, )

Write the value of one or more fields, maintaining the value of unchanged fields via a provided original value, rather than a register read.

Auto Trait Implementations§

§

impl<T, R = (), W = ()> !Freeze for Aliased<T, R, W>

§

impl<T, R = (), W = ()> !RefUnwindSafe for Aliased<T, R, W>

§

impl<T, R, W> Send for Aliased<T, R, W>
where T: Send, R: Send, W: Send,

§

impl<T, R = (), W = ()> !Sync for Aliased<T, R, W>

§

impl<T, R, W> Unpin for Aliased<T, R, W>
where T: Unpin, R: Unpin, W: Unpin,

§

impl<T, R, W> UnwindSafe for Aliased<T, R, W>
where T: UnwindSafe, R: UnwindSafe, W: 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> Debuggable for T
where T: Readable,

Source§

fn debug(&self) -> RegisterDebugValue<Self::T, Self::R>
where Self::R: RegisterDebugInfo<Self::T>,

Returns a RegisterDebugValue that implements core::fmt::Debug, the debug information is extracted from <Register>::DebugInfo.
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, R, S> ReadWriteable for S
where R: RegisterLongName, S: Readable<T = T, R = R> + Writeable<T = T, R = R>, T: UIntLike,

Source§

type T = T

Source§

type R = R

Source§

fn modify( &self, field: FieldValue<<S as ReadWriteable>::T, <S as ReadWriteable>::R>, )

Write the value of one or more fields, leaving the other fields unchanged
Source§

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

Source§

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>,

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.