xmc4300/usb0/
gnptxsts.rs

1#[doc = "Register `GNPTXSTS` reader"]
2pub type R = crate::R<GNPTXSTS_SPEC>;
3#[doc = "Non-periodic TxFIFO Space Avail\n\nValue on reset: 16"]
4#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5#[repr(u16)]
6pub enum NPTX_FSPC_AVAIL_A {
7    #[doc = "0: Non-periodic TxFIFO is full"]
8    VALUE1 = 0,
9    #[doc = "1: 1 word available"]
10    VALUE2 = 1,
11    #[doc = "2: 2 words available"]
12    VALUE3 = 2,
13}
14impl From<NPTX_FSPC_AVAIL_A> for u16 {
15    #[inline(always)]
16    fn from(variant: NPTX_FSPC_AVAIL_A) -> Self {
17        variant as _
18    }
19}
20impl crate::FieldSpec for NPTX_FSPC_AVAIL_A {
21    type Ux = u16;
22}
23impl crate::IsEnum for NPTX_FSPC_AVAIL_A {}
24#[doc = "Field `NPTxFSpcAvail` reader - Non-periodic TxFIFO Space Avail"]
25pub type NPTX_FSPC_AVAIL_R = crate::FieldReader<NPTX_FSPC_AVAIL_A>;
26impl NPTX_FSPC_AVAIL_R {
27    #[doc = "Get enumerated values variant"]
28    #[inline(always)]
29    pub const fn variant(&self) -> Option<NPTX_FSPC_AVAIL_A> {
30        match self.bits {
31            0 => Some(NPTX_FSPC_AVAIL_A::VALUE1),
32            1 => Some(NPTX_FSPC_AVAIL_A::VALUE2),
33            2 => Some(NPTX_FSPC_AVAIL_A::VALUE3),
34            _ => None,
35        }
36    }
37    #[doc = "Non-periodic TxFIFO is full"]
38    #[inline(always)]
39    pub fn is_value1(&self) -> bool {
40        *self == NPTX_FSPC_AVAIL_A::VALUE1
41    }
42    #[doc = "1 word available"]
43    #[inline(always)]
44    pub fn is_value2(&self) -> bool {
45        *self == NPTX_FSPC_AVAIL_A::VALUE2
46    }
47    #[doc = "2 words available"]
48    #[inline(always)]
49    pub fn is_value3(&self) -> bool {
50        *self == NPTX_FSPC_AVAIL_A::VALUE3
51    }
52}
53#[doc = "Non-periodic Transmit Request Queue Space Available\n\nValue on reset: 8"]
54#[derive(Clone, Copy, Debug, PartialEq, Eq)]
55#[repr(u8)]
56pub enum NPTX_QSPC_AVAIL_A {
57    #[doc = "0: Non-periodic Transmit Request Queue is full"]
58    VALUE1 = 0,
59    #[doc = "1: 1 location available"]
60    VALUE2 = 1,
61    #[doc = "2: 2 locations available"]
62    VALUE3 = 2,
63}
64impl From<NPTX_QSPC_AVAIL_A> for u8 {
65    #[inline(always)]
66    fn from(variant: NPTX_QSPC_AVAIL_A) -> Self {
67        variant as _
68    }
69}
70impl crate::FieldSpec for NPTX_QSPC_AVAIL_A {
71    type Ux = u8;
72}
73impl crate::IsEnum for NPTX_QSPC_AVAIL_A {}
74#[doc = "Field `NPTxQSpcAvail` reader - Non-periodic Transmit Request Queue Space Available"]
75pub type NPTX_QSPC_AVAIL_R = crate::FieldReader<NPTX_QSPC_AVAIL_A>;
76impl NPTX_QSPC_AVAIL_R {
77    #[doc = "Get enumerated values variant"]
78    #[inline(always)]
79    pub const fn variant(&self) -> Option<NPTX_QSPC_AVAIL_A> {
80        match self.bits {
81            0 => Some(NPTX_QSPC_AVAIL_A::VALUE1),
82            1 => Some(NPTX_QSPC_AVAIL_A::VALUE2),
83            2 => Some(NPTX_QSPC_AVAIL_A::VALUE3),
84            _ => None,
85        }
86    }
87    #[doc = "Non-periodic Transmit Request Queue is full"]
88    #[inline(always)]
89    pub fn is_value1(&self) -> bool {
90        *self == NPTX_QSPC_AVAIL_A::VALUE1
91    }
92    #[doc = "1 location available"]
93    #[inline(always)]
94    pub fn is_value2(&self) -> bool {
95        *self == NPTX_QSPC_AVAIL_A::VALUE2
96    }
97    #[doc = "2 locations available"]
98    #[inline(always)]
99    pub fn is_value3(&self) -> bool {
100        *self == NPTX_QSPC_AVAIL_A::VALUE3
101    }
102}
103#[doc = "Top of the Non-periodic Transmit Request Queue\n\nValue on reset: 0"]
104#[derive(Clone, Copy, Debug, PartialEq, Eq)]
105#[repr(u8)]
106pub enum NPTX_QTOP_A {
107    #[doc = "0: IN/OUT token"]
108    VALUE1 = 0,
109    #[doc = "1: Zero-length transmit packet (device IN/host OUT)"]
110    VALUE2 = 1,
111    #[doc = "3: Channel halt command"]
112    VALUE4 = 3,
113}
114impl From<NPTX_QTOP_A> for u8 {
115    #[inline(always)]
116    fn from(variant: NPTX_QTOP_A) -> Self {
117        variant as _
118    }
119}
120impl crate::FieldSpec for NPTX_QTOP_A {
121    type Ux = u8;
122}
123impl crate::IsEnum for NPTX_QTOP_A {}
124#[doc = "Field `NPTxQTop` reader - Top of the Non-periodic Transmit Request Queue"]
125pub type NPTX_QTOP_R = crate::FieldReader<NPTX_QTOP_A>;
126impl NPTX_QTOP_R {
127    #[doc = "Get enumerated values variant"]
128    #[inline(always)]
129    pub const fn variant(&self) -> Option<NPTX_QTOP_A> {
130        match self.bits {
131            0 => Some(NPTX_QTOP_A::VALUE1),
132            1 => Some(NPTX_QTOP_A::VALUE2),
133            3 => Some(NPTX_QTOP_A::VALUE4),
134            _ => None,
135        }
136    }
137    #[doc = "IN/OUT token"]
138    #[inline(always)]
139    pub fn is_value1(&self) -> bool {
140        *self == NPTX_QTOP_A::VALUE1
141    }
142    #[doc = "Zero-length transmit packet (device IN/host OUT)"]
143    #[inline(always)]
144    pub fn is_value2(&self) -> bool {
145        *self == NPTX_QTOP_A::VALUE2
146    }
147    #[doc = "Channel halt command"]
148    #[inline(always)]
149    pub fn is_value4(&self) -> bool {
150        *self == NPTX_QTOP_A::VALUE4
151    }
152}
153impl R {
154    #[doc = "Bits 0:15 - Non-periodic TxFIFO Space Avail"]
155    #[inline(always)]
156    pub fn nptx_fspc_avail(&self) -> NPTX_FSPC_AVAIL_R {
157        NPTX_FSPC_AVAIL_R::new((self.bits & 0xffff) as u16)
158    }
159    #[doc = "Bits 16:23 - Non-periodic Transmit Request Queue Space Available"]
160    #[inline(always)]
161    pub fn nptx_qspc_avail(&self) -> NPTX_QSPC_AVAIL_R {
162        NPTX_QSPC_AVAIL_R::new(((self.bits >> 16) & 0xff) as u8)
163    }
164    #[doc = "Bits 24:30 - Top of the Non-periodic Transmit Request Queue"]
165    #[inline(always)]
166    pub fn nptx_qtop(&self) -> NPTX_QTOP_R {
167        NPTX_QTOP_R::new(((self.bits >> 24) & 0x7f) as u8)
168    }
169}
170#[doc = "Non-Periodic Transmit FIFO/Queue Status Register\n\nYou can [`read`](crate::Reg::read) this register and get [`gnptxsts::R`](R). See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
171pub struct GNPTXSTS_SPEC;
172impl crate::RegisterSpec for GNPTXSTS_SPEC {
173    type Ux = u32;
174}
175#[doc = "`read()` method returns [`gnptxsts::R`](R) reader structure"]
176impl crate::Readable for GNPTXSTS_SPEC {}
177#[doc = "`reset()` method sets GNPTXSTS to value 0x0008_0010"]
178impl crate::Resettable for GNPTXSTS_SPEC {
179    const RESET_VALUE: u32 = 0x0008_0010;
180}