Skip to main content

CameraTransfer

Struct CameraTransfer 

Source
pub struct CameraTransfer<'d, BUF: DmaRxBuffer, Dm: DriverMode = Blocking> { /* private fields */ }
Expand description

Represents an ongoing (or potentially stopped) transfer from the Camera to a DMA buffer.

Implementations§

Source§

impl<'d, BUF: DmaRxBuffer, Dm: DriverMode> CameraTransfer<'d, BUF, Dm>

Source

pub fn is_done(&self) -> bool

Returns whether Self::wait will not block.

Source

pub fn stop(self) -> (Camera<'d, Dm>, BUF::Final)

Stops this transfer on the spot and returns the peripheral and buffer.

Source

pub fn wait(self) -> (Result<(), DmaError>, Camera<'d, Dm>, BUF::Final)

Waits for the transfer to stop and returns the peripheral and buffer.

The camera does not really “finish” its transfer, so this typically waits for a DMA error. Call Self::stop once the needed data is available.

Source§

impl<BUF: DmaRxBuffer> CameraTransfer<'_, BUF, Async>

Source

pub async fn wait_for_dma_eof(&mut self) -> Result<(), DmaError>

Waits for a DMA EOF or receive error in this transfer.

The EOF boundary is configured by Config::with_eof_mode. Reception can start partway through a frame, so EOF alone does not guarantee that a complete frame has been received.

This does not stop the camera or DMA. Call Self::stop to return the camera and buffer. After a successful wait, another call can wait for a later EOF. Receive errors are retained for this transfer. EOF status is latched: multiple EOFs before the wait consumes the status are reported as one event.

§Errors

Returns DmaError::DescriptorError if DMA reports an invalid descriptor, descriptor exhaustion, or an error EOF. Receive errors take precedence over a pending EOF.

§Cancellation Safety

Dropping the future does not stop the camera or DMA. The wait can be retried.

Trait Implementations§

Source§

impl<BUF: DmaRxBuffer, Dm: DriverMode> Deref for CameraTransfer<'_, BUF, Dm>

Available on crate feature unstable only.
Source§

type Target = <BUF as DmaRxBuffer>::View

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<BUF: DmaRxBuffer, Dm: DriverMode> DerefMut for CameraTransfer<'_, BUF, Dm>

Available on crate feature unstable only.
Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<BUF: DmaRxBuffer, Dm: DriverMode> Drop for CameraTransfer<'_, BUF, Dm>

Available on crate feature unstable only.
Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'d, BUF, Dm = Blocking> !RefUnwindSafe for CameraTransfer<'d, BUF, Dm>

§

impl<'d, BUF, Dm = Blocking> !UnwindSafe for CameraTransfer<'d, BUF, Dm>

§

impl<'d, BUF, Dm> Freeze for CameraTransfer<'d, BUF, Dm>
where ManuallyDrop<Camera<'d, Dm>>: Freeze, ManuallyDrop<<BUF as DmaRxBuffer>::View>: Freeze,

§

impl<'d, BUF, Dm> Send for CameraTransfer<'d, BUF, Dm>
where ManuallyDrop<Camera<'d, Dm>>: Send, ManuallyDrop<<BUF as DmaRxBuffer>::View>: Send,

§

impl<'d, BUF, Dm> Sync for CameraTransfer<'d, BUF, Dm>
where ManuallyDrop<Camera<'d, Dm>>: Sync, ManuallyDrop<<BUF as DmaRxBuffer>::View>: Sync,

§

impl<'d, BUF, Dm> Unpin for CameraTransfer<'d, BUF, Dm>
where ManuallyDrop<Camera<'d, Dm>>: Unpin, ManuallyDrop<<BUF as DmaRxBuffer>::View>: Unpin,

§

impl<'d, BUF, Dm> UnsafeUnpin for CameraTransfer<'d, BUF, Dm>
where ManuallyDrop<Camera<'d, Dm>>: UnsafeUnpin, ManuallyDrop<<BUF as DmaRxBuffer>::View>: UnsafeUnpin,

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CryptoRng for T
where T: DerefMut, <T as Deref>::Target: CryptoRng,

Source§

impl<R> CryptoRng for R
where R: TryCryptoRng<Error = !> + ?Sized,

§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<R> Rng for R
where R: TryRng<Error = !> + ?Sized,

Source§

fn next_u32(&mut self) -> u32

Return the next random u32.
Source§

fn next_u64(&mut self) -> u64

Return the next random u64.
Source§

fn fill_bytes(&mut self, dst: &mut [u8])

Fill dest with random data. Read more
Source§

impl<T> RngCore for T
where T: DerefMut, <T as Deref>::Target: RngCore,

Source§

fn next_u32(&mut self) -> u32

Return the next random u32. Read more
Source§

fn next_u64(&mut self) -> u64

Return the next random u64. Read more
Source§

fn fill_bytes(&mut self, dst: &mut [u8])

Fill dest with random data. Read more
Source§

impl<R> RngCore for R
where R: Rng,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<R> TryCryptoRng for R
where R: CryptoRng + ?Sized,

Source§

impl<R> TryCryptoRng for R
where R: DerefMut, <R as Deref>::Target: TryCryptoRng,

§

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

§

type Error = !

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

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

Performs the conversion.
§

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.
§

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

Performs the conversion.
Source§

impl<R> TryRng for R
where R: DerefMut, <R as Deref>::Target: TryRng,

Source§

type Error = <<R as Deref>::Target as TryRng>::Error

The type returned in the event of a RNG error. Read more
Source§

fn try_next_u32(&mut self) -> Result<u32, <R as TryRng>::Error>

Return the next random u32.
Source§

fn try_next_u64(&mut self) -> Result<u64, <R as TryRng>::Error>

Return the next random u64.
Source§

fn try_fill_bytes(&mut self, dst: &mut [u8]) -> Result<(), <R as TryRng>::Error>

Fill dst entirely with random data.
Source§

impl<R> TryRngCore for R
where R: RngCore + ?Sized,

Source§

type Error = !

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

fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>

Return the next random u32.
Source§

fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>

Return the next random u64.
Source§

fn try_fill_bytes( &mut self, dst: &mut [u8], ) -> Result<(), <R as TryRngCore>::Error>

Fill dest entirely with random data.
Source§

fn unwrap_err(self) -> UnwrapErr<Self>
where Self: Sized,

Wrap RNG with the UnwrapErr wrapper.
Source§

fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>

Wrap RNG with the UnwrapMut wrapper.
Source§

impl<R> TryRngCore for R
where R: TryRng,

Source§

type Error = <R as TryRng>::Error

👎Deprecated since 0.10.0:

use TryRng instead

Error type.