saml10e16a/dmac/
crcctrl.rs1#[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}