pub struct Rx<SM, RxSize = Word>where
SM: ValidStateMachine,{ /* private fields */ }Expand description
PIO RX FIFO handle.
Implementations§
Source§impl<SM, RxSize> Rx<SM, RxSize>where
SM: ValidStateMachine,
RxSize: TransferSize,
impl<SM, RxSize> Rx<SM, RxSize>where
SM: ValidStateMachine,
RxSize: TransferSize,
Sourcepub fn fifo_address(&self) -> *const u32
pub fn fifo_address(&self) -> *const u32
Gets the FIFO’s address.
This is useful if you want to DMA from this peripheral.
NB: You are responsible for using the pointer correctly and not underflowing the buffer.
Sourcepub fn dreq_value(&self) -> u8
pub fn dreq_value(&self) -> u8
Gets the FIFO’s DREQ value.
This is a value between 0 and 39. Each FIFO on each state machine on each PIO has a unique value.
Sourcepub fn read(&mut self) -> Option<u32>
pub fn read(&mut self) -> Option<u32>
Get the next element from RX FIFO.
Returns None if the FIFO is empty.
Sourcepub fn enable_autopush(&mut self, enable: bool)
pub fn enable_autopush(&mut self, enable: bool)
Enable/Disable the autopush feature of the state machine.
Sourcepub fn enable_rx_not_empty_interrupt(&self, id: PioIRQ)
pub fn enable_rx_not_empty_interrupt(&self, id: PioIRQ)
Enable RX FIFO not empty interrupt.
This interrupt is raised when the RX FIFO is not empty, i.e. one could read more data from it.
Sourcepub fn disable_rx_not_empty_interrupt(&self, id: PioIRQ)
pub fn disable_rx_not_empty_interrupt(&self, id: PioIRQ)
Disable RX FIFO not empty interrupt.
Sourcepub fn force_rx_not_empty_interrupt(&self, id: PioIRQ, state: bool)
pub fn force_rx_not_empty_interrupt(&self, id: PioIRQ, state: bool)
Force RX FIFO not empty interrupt.
Sourcepub fn transfer_size<RSZ>(self, size: RSZ) -> Rx<SM, RSZ>where
RSZ: TransferSize,
pub fn transfer_size<RSZ>(self, size: RSZ) -> Rx<SM, RSZ>where
RSZ: TransferSize,
Set the transfer size used in DMA transfers.
Trait Implementations§
Source§impl<SM, RxSize> ReadTarget for Rx<SM, RxSize>where
SM: ValidStateMachine,
RxSize: TransferSize,
impl<SM, RxSize> ReadTarget for Rx<SM, RxSize>where
SM: ValidStateMachine,
RxSize: TransferSize,
Source§type ReceivedWord = <RxSize as TransferSize>::Type
type ReceivedWord = <RxSize as TransferSize>::Type
Type which is transferred in a single DMA transfer.
Source§fn rx_treq() -> Option<u8>
fn rx_treq() -> Option<u8>
Returns the DREQ number for this data source (
None for memory buffers).Source§fn rx_address_count(&self) -> (u32, u32)
fn rx_address_count(&self) -> (u32, u32)
Returns the address and the maximum number of words that can be transferred from this data
source in a single DMA operation. Read more
Source§fn rx_increment(&self) -> bool
fn rx_increment(&self) -> bool
Returns whether the address shall be incremented after each transfer.
impl<SM, RxSize> EndlessReadTarget for Rx<SM, RxSize>where
SM: ValidStateMachine,
RxSize: TransferSize,
impl<SM, RxSize> Send for Rx<SM, RxSize>where
SM: ValidStateMachine + Send,
Auto Trait Implementations§
impl<SM, RxSize> Freeze for Rx<SM, RxSize>
impl<SM, RxSize = Word> !RefUnwindSafe for Rx<SM, RxSize>
impl<SM, RxSize = Word> !Sync for Rx<SM, RxSize>
impl<SM, RxSize> Unpin for Rx<SM, RxSize>
impl<SM, RxSize = Word> !UnwindSafe for Rx<SM, RxSize>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more