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}