imxrt_dma/
element.rs

1//! Trait to generalize acceptable DMA transfer elements
2
3/// Describes a transferrable DMA element; basically, an unsigned
4/// integer of any size.
5pub trait Element: Copy + private::Sealed {
6    /// An identifier describing the data transfer size
7    ///
8    /// Part of the TCD API; see documentation on TCD\[SSIZE\]
9    /// and TCD\[DSIZE\] for more information.
10    const DATA_TRANSFER_ID: u8;
11}
12
13impl Element for u8 {
14    const DATA_TRANSFER_ID: u8 = 0;
15}
16
17impl Element for u16 {
18    const DATA_TRANSFER_ID: u8 = 1;
19}
20
21impl Element for u32 {
22    const DATA_TRANSFER_ID: u8 = 2;
23}
24
25impl Element for u64 {
26    const DATA_TRANSFER_ID: u8 = 3;
27}
28
29mod private {
30    pub trait Sealed {}
31
32    impl Sealed for u8 {}
33    impl Sealed for u16 {}
34    impl Sealed for u32 {}
35    impl Sealed for u64 {}
36}