1#[doc = "Register `SCAPABILITIES` reader"]
2pub struct R(crate::R<SCAPABILITIES_SPEC>);
3impl core::ops::Deref for R {
4 type Target = crate::R<SCAPABILITIES_SPEC>;
5 #[inline(always)]
6 fn deref(&self) -> &Self::Target {
7 &self.0
8 }
9}
10impl From<crate::R<SCAPABILITIES_SPEC>> for R {
11 #[inline(always)]
12 fn from(reader: crate::R<SCAPABILITIES_SPEC>) -> Self {
13 R(reader)
14 }
15}
16#[doc = "Field `IDENA` reader - ID 48b handler"]
17pub type IDENA_R = crate::FieldReader<u8, IDENA_A>;
18#[doc = "ID 48b handler\n\nValue on reset: 0"]
19#[derive(Clone, Copy, Debug, PartialEq, Eq)]
20#[repr(u8)]
21pub enum IDENA_A {
22 #[doc = "0: APPLICATION"]
23 APPLICATION = 0,
24 #[doc = "1: HW"]
25 HW = 1,
26 #[doc = "2: HW_BUT"]
27 HW_BUT = 2,
28 #[doc = "3: PARTNO"]
29 PARTNO = 3,
30}
31impl From<IDENA_A> for u8 {
32 #[inline(always)]
33 fn from(variant: IDENA_A) -> Self {
34 variant as _
35 }
36}
37impl IDENA_R {
38 #[doc = "Get enumerated values variant"]
39 #[inline(always)]
40 pub fn variant(&self) -> IDENA_A {
41 match self.bits {
42 0 => IDENA_A::APPLICATION,
43 1 => IDENA_A::HW,
44 2 => IDENA_A::HW_BUT,
45 3 => IDENA_A::PARTNO,
46 _ => unreachable!(),
47 }
48 }
49 #[doc = "Checks if the value of the field is `APPLICATION`"]
50 #[inline(always)]
51 pub fn is_application(&self) -> bool {
52 *self == IDENA_A::APPLICATION
53 }
54 #[doc = "Checks if the value of the field is `HW`"]
55 #[inline(always)]
56 pub fn is_hw(&self) -> bool {
57 *self == IDENA_A::HW
58 }
59 #[doc = "Checks if the value of the field is `HW_BUT`"]
60 #[inline(always)]
61 pub fn is_hw_but(&self) -> bool {
62 *self == IDENA_A::HW_BUT
63 }
64 #[doc = "Checks if the value of the field is `PARTNO`"]
65 #[inline(always)]
66 pub fn is_partno(&self) -> bool {
67 *self == IDENA_A::PARTNO
68 }
69}
70#[doc = "Field `IDREG` reader - ID register"]
71pub type IDREG_R = crate::FieldReader<u8, u8>;
72#[doc = "Field `HDRSUPP` reader - HDR support"]
73pub type HDRSUPP_R = crate::FieldReader<u8, u8>;
74#[doc = "Field `MASTER` reader - Master"]
75pub type MASTER_R = crate::BitReader<MASTER_A>;
76#[doc = "Master\n\nValue on reset: 1"]
77#[derive(Clone, Copy, Debug, PartialEq, Eq)]
78pub enum MASTER_A {
79 #[doc = "0: MASTERNOTSUPPORTED"]
80 MASTERNOTSUPPORTED = 0,
81 #[doc = "1: MASTERSUPPORTED"]
82 MASTERSUPPORTED = 1,
83}
84impl From<MASTER_A> for bool {
85 #[inline(always)]
86 fn from(variant: MASTER_A) -> Self {
87 variant as u8 != 0
88 }
89}
90impl MASTER_R {
91 #[doc = "Get enumerated values variant"]
92 #[inline(always)]
93 pub fn variant(&self) -> MASTER_A {
94 match self.bits {
95 false => MASTER_A::MASTERNOTSUPPORTED,
96 true => MASTER_A::MASTERSUPPORTED,
97 }
98 }
99 #[doc = "Checks if the value of the field is `MASTERNOTSUPPORTED`"]
100 #[inline(always)]
101 pub fn is_masternotsupported(&self) -> bool {
102 *self == MASTER_A::MASTERNOTSUPPORTED
103 }
104 #[doc = "Checks if the value of the field is `MASTERSUPPORTED`"]
105 #[inline(always)]
106 pub fn is_mastersupported(&self) -> bool {
107 *self == MASTER_A::MASTERSUPPORTED
108 }
109}
110#[doc = "Field `SADDR` reader - Static address"]
111pub type SADDR_R = crate::FieldReader<u8, SADDR_A>;
112#[doc = "Static address\n\nValue on reset: 3"]
113#[derive(Clone, Copy, Debug, PartialEq, Eq)]
114#[repr(u8)]
115pub enum SADDR_A {
116 #[doc = "0: NO_STATIC"]
117 NO_STATIC = 0,
118 #[doc = "1: STATIC"]
119 STATIC = 1,
120 #[doc = "2: HW_CONTROL"]
121 HW_CONTROL = 2,
122 #[doc = "3: CONFIG"]
123 CONFIG = 3,
124}
125impl From<SADDR_A> for u8 {
126 #[inline(always)]
127 fn from(variant: SADDR_A) -> Self {
128 variant as _
129 }
130}
131impl SADDR_R {
132 #[doc = "Get enumerated values variant"]
133 #[inline(always)]
134 pub fn variant(&self) -> SADDR_A {
135 match self.bits {
136 0 => SADDR_A::NO_STATIC,
137 1 => SADDR_A::STATIC,
138 2 => SADDR_A::HW_CONTROL,
139 3 => SADDR_A::CONFIG,
140 _ => unreachable!(),
141 }
142 }
143 #[doc = "Checks if the value of the field is `NO_STATIC`"]
144 #[inline(always)]
145 pub fn is_no_static(&self) -> bool {
146 *self == SADDR_A::NO_STATIC
147 }
148 #[doc = "Checks if the value of the field is `STATIC`"]
149 #[inline(always)]
150 pub fn is_static(&self) -> bool {
151 *self == SADDR_A::STATIC
152 }
153 #[doc = "Checks if the value of the field is `HW_CONTROL`"]
154 #[inline(always)]
155 pub fn is_hw_control(&self) -> bool {
156 *self == SADDR_A::HW_CONTROL
157 }
158 #[doc = "Checks if the value of the field is `CONFIG`"]
159 #[inline(always)]
160 pub fn is_config(&self) -> bool {
161 *self == SADDR_A::CONFIG
162 }
163}
164#[doc = "Field `CCCHANDLE` reader - Common Command Codes (CCC) handling"]
165pub type CCCHANDLE_R = crate::FieldReader<u8, u8>;
166#[doc = "Field `IBI_MR_HJ` reader - In-Band Interrupts, Master Requests, Hot Join events"]
167pub type IBI_MR_HJ_R = crate::FieldReader<u8, u8>;
168#[doc = "Field `TIMECTRL` reader - Time control"]
169pub type TIMECTRL_R = crate::BitReader<TIMECTRL_A>;
170#[doc = "Time control\n\nValue on reset: 1"]
171#[derive(Clone, Copy, Debug, PartialEq, Eq)]
172pub enum TIMECTRL_A {
173 #[doc = "0: NO_TIME_CONTROL_TYPE"]
174 NO_TIME_CONTROL_TYPE = 0,
175 #[doc = "1: NO_TIME_CONTROL_TYPE"]
176 ATLEAST1_TIME_CONTROL = 1,
177}
178impl From<TIMECTRL_A> for bool {
179 #[inline(always)]
180 fn from(variant: TIMECTRL_A) -> Self {
181 variant as u8 != 0
182 }
183}
184impl TIMECTRL_R {
185 #[doc = "Get enumerated values variant"]
186 #[inline(always)]
187 pub fn variant(&self) -> TIMECTRL_A {
188 match self.bits {
189 false => TIMECTRL_A::NO_TIME_CONTROL_TYPE,
190 true => TIMECTRL_A::ATLEAST1_TIME_CONTROL,
191 }
192 }
193 #[doc = "Checks if the value of the field is `NO_TIME_CONTROL_TYPE`"]
194 #[inline(always)]
195 pub fn is_no_time_control_type(&self) -> bool {
196 *self == TIMECTRL_A::NO_TIME_CONTROL_TYPE
197 }
198 #[doc = "Checks if the value of the field is `ATLEAST1_TIME_CONTROL`"]
199 #[inline(always)]
200 pub fn is_atleast1_time_control(&self) -> bool {
201 *self == TIMECTRL_A::ATLEAST1_TIME_CONTROL
202 }
203}
204#[doc = "Field `EXTFIFO` reader - External FIFO"]
205pub type EXTFIFO_R = crate::FieldReader<u8, EXTFIFO_A>;
206#[doc = "External FIFO\n\nValue on reset: 0"]
207#[derive(Clone, Copy, Debug, PartialEq, Eq)]
208#[repr(u8)]
209pub enum EXTFIFO_A {
210 #[doc = "1: STD_EXT_FIFO:"]
211 STD_EXT_FIFO = 1,
212}
213impl From<EXTFIFO_A> for u8 {
214 #[inline(always)]
215 fn from(variant: EXTFIFO_A) -> Self {
216 variant as _
217 }
218}
219impl EXTFIFO_R {
220 #[doc = "Get enumerated values variant"]
221 #[inline(always)]
222 pub fn variant(&self) -> Option<EXTFIFO_A> {
223 match self.bits {
224 1 => Some(EXTFIFO_A::STD_EXT_FIFO),
225 _ => None,
226 }
227 }
228 #[doc = "Checks if the value of the field is `STD_EXT_FIFO`"]
229 #[inline(always)]
230 pub fn is_std_ext_fifo(&self) -> bool {
231 *self == EXTFIFO_A::STD_EXT_FIFO
232 }
233}
234#[doc = "Field `FIFOTX` reader - FIFO transmit"]
235pub type FIFOTX_R = crate::FieldReader<u8, FIFOTX_A>;
236#[doc = "FIFO transmit\n\nValue on reset: 2"]
237#[derive(Clone, Copy, Debug, PartialEq, Eq)]
238#[repr(u8)]
239pub enum FIFOTX_A {
240 #[doc = "0: FIFO_2BYTE"]
241 FIFO_2BYTE = 0,
242 #[doc = "1: FIFO_4BYTE"]
243 FIFO_4BYTE = 1,
244 #[doc = "2: FIFO_8BYTE"]
245 FIFO_8BYTE = 2,
246 #[doc = "3: FIFO_16BYTE"]
247 FIFO_16BYTE = 3,
248}
249impl From<FIFOTX_A> for u8 {
250 #[inline(always)]
251 fn from(variant: FIFOTX_A) -> Self {
252 variant as _
253 }
254}
255impl FIFOTX_R {
256 #[doc = "Get enumerated values variant"]
257 #[inline(always)]
258 pub fn variant(&self) -> FIFOTX_A {
259 match self.bits {
260 0 => FIFOTX_A::FIFO_2BYTE,
261 1 => FIFOTX_A::FIFO_4BYTE,
262 2 => FIFOTX_A::FIFO_8BYTE,
263 3 => FIFOTX_A::FIFO_16BYTE,
264 _ => unreachable!(),
265 }
266 }
267 #[doc = "Checks if the value of the field is `FIFO_2BYTE`"]
268 #[inline(always)]
269 pub fn is_fifo_2byte(&self) -> bool {
270 *self == FIFOTX_A::FIFO_2BYTE
271 }
272 #[doc = "Checks if the value of the field is `FIFO_4BYTE`"]
273 #[inline(always)]
274 pub fn is_fifo_4byte(&self) -> bool {
275 *self == FIFOTX_A::FIFO_4BYTE
276 }
277 #[doc = "Checks if the value of the field is `FIFO_8BYTE`"]
278 #[inline(always)]
279 pub fn is_fifo_8byte(&self) -> bool {
280 *self == FIFOTX_A::FIFO_8BYTE
281 }
282 #[doc = "Checks if the value of the field is `FIFO_16BYTE`"]
283 #[inline(always)]
284 pub fn is_fifo_16byte(&self) -> bool {
285 *self == FIFOTX_A::FIFO_16BYTE
286 }
287}
288#[doc = "Field `FIFORX` reader - FIFO receive"]
289pub type FIFORX_R = crate::FieldReader<u8, FIFORX_A>;
290#[doc = "FIFO receive\n\nValue on reset: 2"]
291#[derive(Clone, Copy, Debug, PartialEq, Eq)]
292#[repr(u8)]
293pub enum FIFORX_A {
294 #[doc = "0: FIFO_2BYTE"]
295 FIFO_2BYTE = 0,
296 #[doc = "1: FIFO_4BYTE"]
297 FIFO_4BYTE = 1,
298 #[doc = "2: FIFO_8BYTE"]
299 FIFO_8BYTE = 2,
300 #[doc = "3: FIFO_16BYTE"]
301 FIFO_16BYTE = 3,
302}
303impl From<FIFORX_A> for u8 {
304 #[inline(always)]
305 fn from(variant: FIFORX_A) -> Self {
306 variant as _
307 }
308}
309impl FIFORX_R {
310 #[doc = "Get enumerated values variant"]
311 #[inline(always)]
312 pub fn variant(&self) -> FIFORX_A {
313 match self.bits {
314 0 => FIFORX_A::FIFO_2BYTE,
315 1 => FIFORX_A::FIFO_4BYTE,
316 2 => FIFORX_A::FIFO_8BYTE,
317 3 => FIFORX_A::FIFO_16BYTE,
318 _ => unreachable!(),
319 }
320 }
321 #[doc = "Checks if the value of the field is `FIFO_2BYTE`"]
322 #[inline(always)]
323 pub fn is_fifo_2byte(&self) -> bool {
324 *self == FIFORX_A::FIFO_2BYTE
325 }
326 #[doc = "Checks if the value of the field is `FIFO_4BYTE`"]
327 #[inline(always)]
328 pub fn is_fifo_4byte(&self) -> bool {
329 *self == FIFORX_A::FIFO_4BYTE
330 }
331 #[doc = "Checks if the value of the field is `FIFO_8BYTE`"]
332 #[inline(always)]
333 pub fn is_fifo_8byte(&self) -> bool {
334 *self == FIFORX_A::FIFO_8BYTE
335 }
336 #[doc = "Checks if the value of the field is `FIFO_16BYTE`"]
337 #[inline(always)]
338 pub fn is_fifo_16byte(&self) -> bool {
339 *self == FIFORX_A::FIFO_16BYTE
340 }
341}
342#[doc = "Field `INT` reader - Interrupt"]
343pub type INT_R = crate::BitReader<INT_A>;
344#[doc = "Interrupt\n\nValue on reset: 1"]
345#[derive(Clone, Copy, Debug, PartialEq, Eq)]
346pub enum INT_A {
347 #[doc = "0: Interrupts are not supported"]
348 INTERRUPTSNO = 0,
349 #[doc = "1: Interrupts are supported."]
350 INTERRUPTSYES = 1,
351}
352impl From<INT_A> for bool {
353 #[inline(always)]
354 fn from(variant: INT_A) -> Self {
355 variant as u8 != 0
356 }
357}
358impl INT_R {
359 #[doc = "Get enumerated values variant"]
360 #[inline(always)]
361 pub fn variant(&self) -> INT_A {
362 match self.bits {
363 false => INT_A::INTERRUPTSNO,
364 true => INT_A::INTERRUPTSYES,
365 }
366 }
367 #[doc = "Checks if the value of the field is `INTERRUPTSNO`"]
368 #[inline(always)]
369 pub fn is_interruptsno(&self) -> bool {
370 *self == INT_A::INTERRUPTSNO
371 }
372 #[doc = "Checks if the value of the field is `INTERRUPTSYES`"]
373 #[inline(always)]
374 pub fn is_interruptsyes(&self) -> bool {
375 *self == INT_A::INTERRUPTSYES
376 }
377}
378#[doc = "Field `DMA` reader - DMA"]
379pub type DMA_R = crate::BitReader<DMA_A>;
380#[doc = "DMA\n\nValue on reset: 1"]
381#[derive(Clone, Copy, Debug, PartialEq, Eq)]
382pub enum DMA_A {
383 #[doc = "0: DMA is not supported"]
384 DMANO = 0,
385 #[doc = "1: DMA is supported"]
386 DMAYES = 1,
387}
388impl From<DMA_A> for bool {
389 #[inline(always)]
390 fn from(variant: DMA_A) -> Self {
391 variant as u8 != 0
392 }
393}
394impl DMA_R {
395 #[doc = "Get enumerated values variant"]
396 #[inline(always)]
397 pub fn variant(&self) -> DMA_A {
398 match self.bits {
399 false => DMA_A::DMANO,
400 true => DMA_A::DMAYES,
401 }
402 }
403 #[doc = "Checks if the value of the field is `DMANO`"]
404 #[inline(always)]
405 pub fn is_dmano(&self) -> bool {
406 *self == DMA_A::DMANO
407 }
408 #[doc = "Checks if the value of the field is `DMAYES`"]
409 #[inline(always)]
410 pub fn is_dmayes(&self) -> bool {
411 *self == DMA_A::DMAYES
412 }
413}
414impl R {
415 #[doc = "Bits 0:1 - ID 48b handler"]
416 #[inline(always)]
417 pub fn idena(&self) -> IDENA_R {
418 IDENA_R::new((self.bits & 3) as u8)
419 }
420 #[doc = "Bits 2:5 - ID register"]
421 #[inline(always)]
422 pub fn idreg(&self) -> IDREG_R {
423 IDREG_R::new(((self.bits >> 2) & 0x0f) as u8)
424 }
425 #[doc = "Bits 6:8 - HDR support"]
426 #[inline(always)]
427 pub fn hdrsupp(&self) -> HDRSUPP_R {
428 HDRSUPP_R::new(((self.bits >> 6) & 7) as u8)
429 }
430 #[doc = "Bit 9 - Master"]
431 #[inline(always)]
432 pub fn master(&self) -> MASTER_R {
433 MASTER_R::new(((self.bits >> 9) & 1) != 0)
434 }
435 #[doc = "Bits 10:11 - Static address"]
436 #[inline(always)]
437 pub fn saddr(&self) -> SADDR_R {
438 SADDR_R::new(((self.bits >> 10) & 3) as u8)
439 }
440 #[doc = "Bits 12:15 - Common Command Codes (CCC) handling"]
441 #[inline(always)]
442 pub fn ccchandle(&self) -> CCCHANDLE_R {
443 CCCHANDLE_R::new(((self.bits >> 12) & 0x0f) as u8)
444 }
445 #[doc = "Bits 16:20 - In-Band Interrupts, Master Requests, Hot Join events"]
446 #[inline(always)]
447 pub fn ibi_mr_hj(&self) -> IBI_MR_HJ_R {
448 IBI_MR_HJ_R::new(((self.bits >> 16) & 0x1f) as u8)
449 }
450 #[doc = "Bit 21 - Time control"]
451 #[inline(always)]
452 pub fn timectrl(&self) -> TIMECTRL_R {
453 TIMECTRL_R::new(((self.bits >> 21) & 1) != 0)
454 }
455 #[doc = "Bits 23:25 - External FIFO"]
456 #[inline(always)]
457 pub fn extfifo(&self) -> EXTFIFO_R {
458 EXTFIFO_R::new(((self.bits >> 23) & 7) as u8)
459 }
460 #[doc = "Bits 26:27 - FIFO transmit"]
461 #[inline(always)]
462 pub fn fifotx(&self) -> FIFOTX_R {
463 FIFOTX_R::new(((self.bits >> 26) & 3) as u8)
464 }
465 #[doc = "Bits 28:29 - FIFO receive"]
466 #[inline(always)]
467 pub fn fiforx(&self) -> FIFORX_R {
468 FIFORX_R::new(((self.bits >> 28) & 3) as u8)
469 }
470 #[doc = "Bit 30 - Interrupt"]
471 #[inline(always)]
472 pub fn int(&self) -> INT_R {
473 INT_R::new(((self.bits >> 30) & 1) != 0)
474 }
475 #[doc = "Bit 31 - DMA"]
476 #[inline(always)]
477 pub fn dma(&self) -> DMA_R {
478 DMA_R::new(((self.bits >> 31) & 1) != 0)
479 }
480}
481#[doc = "Slave Capabilities Register\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [scapabilities](index.html) module"]
482pub struct SCAPABILITIES_SPEC;
483impl crate::RegisterSpec for SCAPABILITIES_SPEC {
484 type Ux = u32;
485}
486#[doc = "`read()` method returns [scapabilities::R](R) reader structure"]
487impl crate::Readable for SCAPABILITIES_SPEC {
488 type Reader = R;
489}
490#[doc = "`reset()` method sets SCAPABILITIES to value 0xe83f_fe78"]
491impl crate::Resettable for SCAPABILITIES_SPEC {
492 const RESET_VALUE: Self::Ux = 0xe83f_fe78;
493}