saml10e16a/dmac/
crcctrl.rs

1#[doc = "Reader of register CRCCTRL"]
2pub type R = crate::R<u16, super::CRCCTRL>;
3#[doc = "Writer for register CRCCTRL"]
4pub type W = crate::W<u16, super::CRCCTRL>;
5#[doc = "Register CRCCTRL `reset()`'s with value 0"]
6impl crate::ResetValue for super::CRCCTRL {
7    type Type = u16;
8    #[inline(always)]
9    fn reset_value() -> Self::Type {
10        0
11    }
12}
13#[doc = "Possible values of the field `CRCBEATSIZE`"]
14#[derive(Clone, Copy, Debug, PartialEq)]
15pub enum CRCBEATSIZE_A {
16    #[doc = "8-bit bus transfer"]
17    BYTE,
18    #[doc = "16-bit bus transfer"]
19    HWORD,
20    #[doc = "32-bit bus transfer"]
21    WORD,
22}
23impl crate::ToBits<u8> for CRCBEATSIZE_A {
24    #[inline(always)]
25    fn _bits(&self) -> u8 {
26        match *self {
27            CRCBEATSIZE_A::BYTE => 0,
28            CRCBEATSIZE_A::HWORD => 1,
29            CRCBEATSIZE_A::WORD => 2,
30        }
31    }
32}
33#[doc = "Reader of field `CRCBEATSIZE`"]
34pub type CRCBEATSIZE_R = crate::R<u8, CRCBEATSIZE_A>;
35impl CRCBEATSIZE_R {
36    #[doc = r"Get enumerated values variant"]
37    #[inline(always)]
38    pub fn variant(&self) -> crate::Variant<u8, CRCBEATSIZE_A> {
39        use crate::Variant::*;
40        match self.bits {
41            0 => Val(CRCBEATSIZE_A::BYTE),
42            1 => Val(CRCBEATSIZE_A::HWORD),
43            2 => Val(CRCBEATSIZE_A::WORD),
44            i => Res(i),
45        }
46    }
47    #[doc = "Checks if the value of the field is `BYTE`"]
48    #[inline(always)]
49    pub fn is_byte(&self) -> bool {
50        *self == CRCBEATSIZE_A::BYTE
51    }
52    #[doc = "Checks if the value of the field is `HWORD`"]
53    #[inline(always)]
54    pub fn is_hword(&self) -> bool {
55        *self == CRCBEATSIZE_A::HWORD
56    }
57    #[doc = "Checks if the value of the field is `WORD`"]
58    #[inline(always)]
59    pub fn is_word(&self) -> bool {
60        *self == CRCBEATSIZE_A::WORD
61    }
62}
63#[doc = "Write proxy for field `CRCBEATSIZE`"]
64pub struct CRCBEATSIZE_W<'a> {
65    w: &'a mut W,
66}
67impl<'a> CRCBEATSIZE_W<'a> {
68    #[doc = r"Writes `variant` to the field"]
69    #[inline(always)]
70    pub fn variant(self, variant: CRCBEATSIZE_A) -> &'a mut W {
71        use crate::ToBits;
72        unsafe { self.bits(variant._bits()) }
73    }
74    #[doc = "8-bit bus transfer"]
75    #[inline(always)]
76    pub fn byte(self) -> &'a mut W {
77        self.variant(CRCBEATSIZE_A::BYTE)
78    }
79    #[doc = "16-bit bus transfer"]
80    #[inline(always)]
81    pub fn hword(self) -> &'a mut W {
82        self.variant(CRCBEATSIZE_A::HWORD)
83    }
84    #[doc = "32-bit bus transfer"]
85    #[inline(always)]
86    pub fn word(self) -> &'a mut W {
87        self.variant(CRCBEATSIZE_A::WORD)
88    }
89    #[doc = r"Writes raw bits to the field"]
90    #[inline(always)]
91    pub unsafe fn bits(self, value: u8) -> &'a mut W {
92        self.w.bits = (self.w.bits & !0x03) | ((value as u16) & 0x03);
93        self.w
94    }
95}
96#[doc = "Possible values of the field `CRCPOLY`"]
97#[derive(Clone, Copy, Debug, PartialEq)]
98pub enum CRCPOLY_A {
99    #[doc = "CRC-16 (CRC-CCITT)"]
100    CRC16,
101    #[doc = "CRC32 (IEEE 802.3)"]
102    CRC32,
103}
104impl crate::ToBits<u8> for CRCPOLY_A {
105    #[inline(always)]
106    fn _bits(&self) -> u8 {
107        match *self {
108            CRCPOLY_A::CRC16 => 0,
109            CRCPOLY_A::CRC32 => 1,
110        }
111    }
112}
113#[doc = "Reader of field `CRCPOLY`"]
114pub type CRCPOLY_R = crate::R<u8, CRCPOLY_A>;
115impl CRCPOLY_R {
116    #[doc = r"Get enumerated values variant"]
117    #[inline(always)]
118    pub fn variant(&self) -> crate::Variant<u8, CRCPOLY_A> {
119        use crate::Variant::*;
120        match self.bits {
121            0 => Val(CRCPOLY_A::CRC16),
122            1 => Val(CRCPOLY_A::CRC32),
123            i => Res(i),
124        }
125    }
126    #[doc = "Checks if the value of the field is `CRC16`"]
127    #[inline(always)]
128    pub fn is_crc16(&self) -> bool {
129        *self == CRCPOLY_A::CRC16
130    }
131    #[doc = "Checks if the value of the field is `CRC32`"]
132    #[inline(always)]
133    pub fn is_crc32(&self) -> bool {
134        *self == CRCPOLY_A::CRC32
135    }
136}
137#[doc = "Write proxy for field `CRCPOLY`"]
138pub struct CRCPOLY_W<'a> {
139    w: &'a mut W,
140}
141impl<'a> CRCPOLY_W<'a> {
142    #[doc = r"Writes `variant` to the field"]
143    #[inline(always)]
144    pub fn variant(self, variant: CRCPOLY_A) -> &'a mut W {
145        use crate::ToBits;
146        unsafe { self.bits(variant._bits()) }
147    }
148    #[doc = "CRC-16 (CRC-CCITT)"]
149    #[inline(always)]
150    pub fn crc16(self) -> &'a mut W {
151        self.variant(CRCPOLY_A::CRC16)
152    }
153    #[doc = "CRC32 (IEEE 802.3)"]
154    #[inline(always)]
155    pub fn crc32(self) -> &'a mut W {
156        self.variant(CRCPOLY_A::CRC32)
157    }
158    #[doc = r"Writes raw bits to the field"]
159    #[inline(always)]
160    pub unsafe fn bits(self, value: u8) -> &'a mut W {
161        self.w.bits = (self.w.bits & !(0x03 << 2)) | (((value as u16) & 0x03) << 2);
162        self.w
163    }
164}
165#[doc = "Possible values of the field `CRCSRC`"]
166#[derive(Clone, Copy, Debug, PartialEq)]
167pub enum CRCSRC_A {
168    #[doc = "No action"]
169    NOACT,
170    #[doc = "I/O interface"]
171    IO,
172}
173impl crate::ToBits<u8> for CRCSRC_A {
174    #[inline(always)]
175    fn _bits(&self) -> u8 {
176        match *self {
177            CRCSRC_A::NOACT => 0,
178            CRCSRC_A::IO => 1,
179        }
180    }
181}
182#[doc = "Reader of field `CRCSRC`"]
183pub type CRCSRC_R = crate::R<u8, CRCSRC_A>;
184impl CRCSRC_R {
185    #[doc = r"Get enumerated values variant"]
186    #[inline(always)]
187    pub fn variant(&self) -> crate::Variant<u8, CRCSRC_A> {
188        use crate::Variant::*;
189        match self.bits {
190            0 => Val(CRCSRC_A::NOACT),
191            1 => Val(CRCSRC_A::IO),
192            i => Res(i),
193        }
194    }
195    #[doc = "Checks if the value of the field is `NOACT`"]
196    #[inline(always)]
197    pub fn is_noact(&self) -> bool {
198        *self == CRCSRC_A::NOACT
199    }
200    #[doc = "Checks if the value of the field is `IO`"]
201    #[inline(always)]
202    pub fn is_io(&self) -> bool {
203        *self == CRCSRC_A::IO
204    }
205}
206#[doc = "Write proxy for field `CRCSRC`"]
207pub struct CRCSRC_W<'a> {
208    w: &'a mut W,
209}
210impl<'a> CRCSRC_W<'a> {
211    #[doc = r"Writes `variant` to the field"]
212    #[inline(always)]
213    pub fn variant(self, variant: CRCSRC_A) -> &'a mut W {
214        use crate::ToBits;
215        unsafe { self.bits(variant._bits()) }
216    }
217    #[doc = "No action"]
218    #[inline(always)]
219    pub fn noact(self) -> &'a mut W {
220        self.variant(CRCSRC_A::NOACT)
221    }
222    #[doc = "I/O interface"]
223    #[inline(always)]
224    pub fn io(self) -> &'a mut W {
225        self.variant(CRCSRC_A::IO)
226    }
227    #[doc = r"Writes raw bits to the field"]
228    #[inline(always)]
229    pub unsafe fn bits(self, value: u8) -> &'a mut W {
230        self.w.bits = (self.w.bits & !(0x3f << 8)) | (((value as u16) & 0x3f) << 8);
231        self.w
232    }
233}
234impl R {
235    #[doc = "Bits 0:1 - CRC Beat Size"]
236    #[inline(always)]
237    pub fn crcbeatsize(&self) -> CRCBEATSIZE_R {
238        CRCBEATSIZE_R::new((self.bits & 0x03) as u8)
239    }
240    #[doc = "Bits 2:3 - CRC Polynomial Type"]
241    #[inline(always)]
242    pub fn crcpoly(&self) -> CRCPOLY_R {
243        CRCPOLY_R::new(((self.bits >> 2) & 0x03) as u8)
244    }
245    #[doc = "Bits 8:13 - CRC Input Source"]
246    #[inline(always)]
247    pub fn crcsrc(&self) -> CRCSRC_R {
248        CRCSRC_R::new(((self.bits >> 8) & 0x3f) as u8)
249    }
250}
251impl W {
252    #[doc = "Bits 0:1 - CRC Beat Size"]
253    #[inline(always)]
254    pub fn crcbeatsize(&mut self) -> CRCBEATSIZE_W {
255        CRCBEATSIZE_W { w: self }
256    }
257    #[doc = "Bits 2:3 - CRC Polynomial Type"]
258    #[inline(always)]
259    pub fn crcpoly(&mut self) -> CRCPOLY_W {
260        CRCPOLY_W { w: self }
261    }
262    #[doc = "Bits 8:13 - CRC Input Source"]
263    #[inline(always)]
264    pub fn crcsrc(&mut self) -> CRCSRC_W {
265        CRCSRC_W { w: self }
266    }
267}