1#[doc = "Register `FEATURE` reader"]
2pub type R = crate::R<FEATURE_SPEC>;
3#[doc = "FMMU Operation\n\nValue on reset: 0"]
4#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5pub enum FMMU_A {
6 #[doc = "0: Bit oriented"]
7 VALUE1 = 0,
8 #[doc = "1: Byte oriented"]
9 VALUE2 = 1,
10}
11impl From<FMMU_A> for bool {
12 #[inline(always)]
13 fn from(variant: FMMU_A) -> Self {
14 variant as u8 != 0
15 }
16}
17#[doc = "Field `FMMU` reader - FMMU Operation"]
18pub type FMMU_R = crate::BitReader<FMMU_A>;
19impl FMMU_R {
20 #[doc = "Get enumerated values variant"]
21 #[inline(always)]
22 pub const fn variant(&self) -> FMMU_A {
23 match self.bits {
24 false => FMMU_A::VALUE1,
25 true => FMMU_A::VALUE2,
26 }
27 }
28 #[doc = "Bit oriented"]
29 #[inline(always)]
30 pub fn is_value1(&self) -> bool {
31 *self == FMMU_A::VALUE1
32 }
33 #[doc = "Byte oriented"]
34 #[inline(always)]
35 pub fn is_value2(&self) -> bool {
36 *self == FMMU_A::VALUE2
37 }
38}
39#[doc = "Distributed Clocks\n\nValue on reset: 1"]
40#[derive(Clone, Copy, Debug, PartialEq, Eq)]
41pub enum CLKS_A {
42 #[doc = "0: Not available"]
43 VALUE1 = 0,
44 #[doc = "1: Available"]
45 VALUE2 = 1,
46}
47impl From<CLKS_A> for bool {
48 #[inline(always)]
49 fn from(variant: CLKS_A) -> Self {
50 variant as u8 != 0
51 }
52}
53#[doc = "Field `CLKS` reader - Distributed Clocks"]
54pub type CLKS_R = crate::BitReader<CLKS_A>;
55impl CLKS_R {
56 #[doc = "Get enumerated values variant"]
57 #[inline(always)]
58 pub const fn variant(&self) -> CLKS_A {
59 match self.bits {
60 false => CLKS_A::VALUE1,
61 true => CLKS_A::VALUE2,
62 }
63 }
64 #[doc = "Not available"]
65 #[inline(always)]
66 pub fn is_value1(&self) -> bool {
67 *self == CLKS_A::VALUE1
68 }
69 #[doc = "Available"]
70 #[inline(always)]
71 pub fn is_value2(&self) -> bool {
72 *self == CLKS_A::VALUE2
73 }
74}
75#[doc = "Distributed Clocks (width)\n\nValue on reset: 1"]
76#[derive(Clone, Copy, Debug, PartialEq, Eq)]
77pub enum CLKS_W_A {
78 #[doc = "0: 32 bits"]
79 VALUE1 = 0,
80 #[doc = "1: 64 bits"]
81 VALUE2 = 1,
82}
83impl From<CLKS_W_A> for bool {
84 #[inline(always)]
85 fn from(variant: CLKS_W_A) -> Self {
86 variant as u8 != 0
87 }
88}
89#[doc = "Field `CLKS_W` reader - Distributed Clocks (width)"]
90pub type CLKS_W_R = crate::BitReader<CLKS_W_A>;
91impl CLKS_W_R {
92 #[doc = "Get enumerated values variant"]
93 #[inline(always)]
94 pub const fn variant(&self) -> CLKS_W_A {
95 match self.bits {
96 false => CLKS_W_A::VALUE1,
97 true => CLKS_W_A::VALUE2,
98 }
99 }
100 #[doc = "32 bits"]
101 #[inline(always)]
102 pub fn is_value1(&self) -> bool {
103 *self == CLKS_W_A::VALUE1
104 }
105 #[doc = "64 bits"]
106 #[inline(always)]
107 pub fn is_value2(&self) -> bool {
108 *self == CLKS_W_A::VALUE2
109 }
110}
111#[doc = "Low Jitter EBUS\n\nValue on reset: 0"]
112#[derive(Clone, Copy, Debug, PartialEq, Eq)]
113pub enum LJ_EBUS_A {
114 #[doc = "0: Not available, standard jitter"]
115 VALUE1 = 0,
116 #[doc = "1: Available, jitter minimized"]
117 VALUE2 = 1,
118}
119impl From<LJ_EBUS_A> for bool {
120 #[inline(always)]
121 fn from(variant: LJ_EBUS_A) -> Self {
122 variant as u8 != 0
123 }
124}
125#[doc = "Field `LJ_EBUS` reader - Low Jitter EBUS"]
126pub type LJ_EBUS_R = crate::BitReader<LJ_EBUS_A>;
127impl LJ_EBUS_R {
128 #[doc = "Get enumerated values variant"]
129 #[inline(always)]
130 pub const fn variant(&self) -> LJ_EBUS_A {
131 match self.bits {
132 false => LJ_EBUS_A::VALUE1,
133 true => LJ_EBUS_A::VALUE2,
134 }
135 }
136 #[doc = "Not available, standard jitter"]
137 #[inline(always)]
138 pub fn is_value1(&self) -> bool {
139 *self == LJ_EBUS_A::VALUE1
140 }
141 #[doc = "Available, jitter minimized"]
142 #[inline(always)]
143 pub fn is_value2(&self) -> bool {
144 *self == LJ_EBUS_A::VALUE2
145 }
146}
147#[doc = "Enhanced Link Detection EBUS\n\nValue on reset: 0"]
148#[derive(Clone, Copy, Debug, PartialEq, Eq)]
149pub enum ELD_EBUS_A {
150 #[doc = "0: Not available"]
151 VALUE1 = 0,
152 #[doc = "1: Available"]
153 VALUE2 = 1,
154}
155impl From<ELD_EBUS_A> for bool {
156 #[inline(always)]
157 fn from(variant: ELD_EBUS_A) -> Self {
158 variant as u8 != 0
159 }
160}
161#[doc = "Field `ELD_EBUS` reader - Enhanced Link Detection EBUS"]
162pub type ELD_EBUS_R = crate::BitReader<ELD_EBUS_A>;
163impl ELD_EBUS_R {
164 #[doc = "Get enumerated values variant"]
165 #[inline(always)]
166 pub const fn variant(&self) -> ELD_EBUS_A {
167 match self.bits {
168 false => ELD_EBUS_A::VALUE1,
169 true => ELD_EBUS_A::VALUE2,
170 }
171 }
172 #[doc = "Not available"]
173 #[inline(always)]
174 pub fn is_value1(&self) -> bool {
175 *self == ELD_EBUS_A::VALUE1
176 }
177 #[doc = "Available"]
178 #[inline(always)]
179 pub fn is_value2(&self) -> bool {
180 *self == ELD_EBUS_A::VALUE2
181 }
182}
183#[doc = "Enhanced Link Detection MII\n\nValue on reset: 1"]
184#[derive(Clone, Copy, Debug, PartialEq, Eq)]
185pub enum ELD_MII_A {
186 #[doc = "0: Not available"]
187 VALUE1 = 0,
188 #[doc = "1: Available"]
189 VALUE2 = 1,
190}
191impl From<ELD_MII_A> for bool {
192 #[inline(always)]
193 fn from(variant: ELD_MII_A) -> Self {
194 variant as u8 != 0
195 }
196}
197#[doc = "Field `ELD_MII` reader - Enhanced Link Detection MII"]
198pub type ELD_MII_R = crate::BitReader<ELD_MII_A>;
199impl ELD_MII_R {
200 #[doc = "Get enumerated values variant"]
201 #[inline(always)]
202 pub const fn variant(&self) -> ELD_MII_A {
203 match self.bits {
204 false => ELD_MII_A::VALUE1,
205 true => ELD_MII_A::VALUE2,
206 }
207 }
208 #[doc = "Not available"]
209 #[inline(always)]
210 pub fn is_value1(&self) -> bool {
211 *self == ELD_MII_A::VALUE1
212 }
213 #[doc = "Available"]
214 #[inline(always)]
215 pub fn is_value2(&self) -> bool {
216 *self == ELD_MII_A::VALUE2
217 }
218}
219#[doc = "Separate Handling of FCS Errors\n\nValue on reset: 1"]
220#[derive(Clone, Copy, Debug, PartialEq, Eq)]
221pub enum SH_FCSE_A {
222 #[doc = "0: Not supported"]
223 VALUE1 = 0,
224 #[doc = "1: Supported, frames with wrong FCS and additional nibble will be counted separately in Forwarded RX Error Counter"]
225 VALUE2 = 1,
226}
227impl From<SH_FCSE_A> for bool {
228 #[inline(always)]
229 fn from(variant: SH_FCSE_A) -> Self {
230 variant as u8 != 0
231 }
232}
233#[doc = "Field `SH_FCSE` reader - Separate Handling of FCS Errors"]
234pub type SH_FCSE_R = crate::BitReader<SH_FCSE_A>;
235impl SH_FCSE_R {
236 #[doc = "Get enumerated values variant"]
237 #[inline(always)]
238 pub const fn variant(&self) -> SH_FCSE_A {
239 match self.bits {
240 false => SH_FCSE_A::VALUE1,
241 true => SH_FCSE_A::VALUE2,
242 }
243 }
244 #[doc = "Not supported"]
245 #[inline(always)]
246 pub fn is_value1(&self) -> bool {
247 *self == SH_FCSE_A::VALUE1
248 }
249 #[doc = "Supported, frames with wrong FCS and additional nibble will be counted separately in Forwarded RX Error Counter"]
250 #[inline(always)]
251 pub fn is_value2(&self) -> bool {
252 *self == SH_FCSE_A::VALUE2
253 }
254}
255#[doc = "Enhanced DC SYNC Activation\n\nValue on reset: 1"]
256#[derive(Clone, Copy, Debug, PartialEq, Eq)]
257pub enum EDC_SYNCA_A {
258 #[doc = "0: Not available"]
259 VALUE1 = 0,
260 #[doc = "1: Available"]
261 VALUE2 = 1,
262}
263impl From<EDC_SYNCA_A> for bool {
264 #[inline(always)]
265 fn from(variant: EDC_SYNCA_A) -> Self {
266 variant as u8 != 0
267 }
268}
269#[doc = "Field `EDC_SYNCA` reader - Enhanced DC SYNC Activation"]
270pub type EDC_SYNCA_R = crate::BitReader<EDC_SYNCA_A>;
271impl EDC_SYNCA_R {
272 #[doc = "Get enumerated values variant"]
273 #[inline(always)]
274 pub const fn variant(&self) -> EDC_SYNCA_A {
275 match self.bits {
276 false => EDC_SYNCA_A::VALUE1,
277 true => EDC_SYNCA_A::VALUE2,
278 }
279 }
280 #[doc = "Not available"]
281 #[inline(always)]
282 pub fn is_value1(&self) -> bool {
283 *self == EDC_SYNCA_A::VALUE1
284 }
285 #[doc = "Available"]
286 #[inline(always)]
287 pub fn is_value2(&self) -> bool {
288 *self == EDC_SYNCA_A::VALUE2
289 }
290}
291#[doc = "EtherCAT LRW command support\n\nValue on reset: 0"]
292#[derive(Clone, Copy, Debug, PartialEq, Eq)]
293pub enum LRW_CS_A {
294 #[doc = "0: Supported"]
295 VALUE1 = 0,
296 #[doc = "1: Not supported"]
297 VALUE2 = 1,
298}
299impl From<LRW_CS_A> for bool {
300 #[inline(always)]
301 fn from(variant: LRW_CS_A) -> Self {
302 variant as u8 != 0
303 }
304}
305#[doc = "Field `LRW_CS` reader - EtherCAT LRW command support"]
306pub type LRW_CS_R = crate::BitReader<LRW_CS_A>;
307impl LRW_CS_R {
308 #[doc = "Get enumerated values variant"]
309 #[inline(always)]
310 pub const fn variant(&self) -> LRW_CS_A {
311 match self.bits {
312 false => LRW_CS_A::VALUE1,
313 true => LRW_CS_A::VALUE2,
314 }
315 }
316 #[doc = "Supported"]
317 #[inline(always)]
318 pub fn is_value1(&self) -> bool {
319 *self == LRW_CS_A::VALUE1
320 }
321 #[doc = "Not supported"]
322 #[inline(always)]
323 pub fn is_value2(&self) -> bool {
324 *self == LRW_CS_A::VALUE2
325 }
326}
327#[doc = "EtherCAT read/write command support (BRW, APRW, FPRW)\n\nValue on reset: 0"]
328#[derive(Clone, Copy, Debug, PartialEq, Eq)]
329pub enum RW_CS_A {
330 #[doc = "0: Supported"]
331 VALUE1 = 0,
332 #[doc = "1: Not supported"]
333 VALUE2 = 1,
334}
335impl From<RW_CS_A> for bool {
336 #[inline(always)]
337 fn from(variant: RW_CS_A) -> Self {
338 variant as u8 != 0
339 }
340}
341#[doc = "Field `RW_CS` reader - EtherCAT read/write command support (BRW, APRW, FPRW)"]
342pub type RW_CS_R = crate::BitReader<RW_CS_A>;
343impl RW_CS_R {
344 #[doc = "Get enumerated values variant"]
345 #[inline(always)]
346 pub const fn variant(&self) -> RW_CS_A {
347 match self.bits {
348 false => RW_CS_A::VALUE1,
349 true => RW_CS_A::VALUE2,
350 }
351 }
352 #[doc = "Supported"]
353 #[inline(always)]
354 pub fn is_value1(&self) -> bool {
355 *self == RW_CS_A::VALUE1
356 }
357 #[doc = "Not supported"]
358 #[inline(always)]
359 pub fn is_value2(&self) -> bool {
360 *self == RW_CS_A::VALUE2
361 }
362}
363#[doc = "Fixed FMMU/SyncManager configuration\n\nValue on reset: 0"]
364#[derive(Clone, Copy, Debug, PartialEq, Eq)]
365pub enum FX_CONF_A {
366 #[doc = "0: Variable configuration"]
367 VALUE1 = 0,
368 #[doc = "1: Fixed configuration (refer to documentation of supporting ESCs)"]
369 VALUE2 = 1,
370}
371impl From<FX_CONF_A> for bool {
372 #[inline(always)]
373 fn from(variant: FX_CONF_A) -> Self {
374 variant as u8 != 0
375 }
376}
377#[doc = "Field `FX_CONF` reader - Fixed FMMU/SyncManager configuration"]
378pub type FX_CONF_R = crate::BitReader<FX_CONF_A>;
379impl FX_CONF_R {
380 #[doc = "Get enumerated values variant"]
381 #[inline(always)]
382 pub const fn variant(&self) -> FX_CONF_A {
383 match self.bits {
384 false => FX_CONF_A::VALUE1,
385 true => FX_CONF_A::VALUE2,
386 }
387 }
388 #[doc = "Variable configuration"]
389 #[inline(always)]
390 pub fn is_value1(&self) -> bool {
391 *self == FX_CONF_A::VALUE1
392 }
393 #[doc = "Fixed configuration (refer to documentation of supporting ESCs)"]
394 #[inline(always)]
395 pub fn is_value2(&self) -> bool {
396 *self == FX_CONF_A::VALUE2
397 }
398}
399impl R {
400 #[doc = "Bit 0 - FMMU Operation"]
401 #[inline(always)]
402 pub fn fmmu(&self) -> FMMU_R {
403 FMMU_R::new((self.bits & 1) != 0)
404 }
405 #[doc = "Bit 2 - Distributed Clocks"]
406 #[inline(always)]
407 pub fn clks(&self) -> CLKS_R {
408 CLKS_R::new(((self.bits >> 2) & 1) != 0)
409 }
410 #[doc = "Bit 3 - Distributed Clocks (width)"]
411 #[inline(always)]
412 pub fn clks_w(&self) -> CLKS_W_R {
413 CLKS_W_R::new(((self.bits >> 3) & 1) != 0)
414 }
415 #[doc = "Bit 4 - Low Jitter EBUS"]
416 #[inline(always)]
417 pub fn lj_ebus(&self) -> LJ_EBUS_R {
418 LJ_EBUS_R::new(((self.bits >> 4) & 1) != 0)
419 }
420 #[doc = "Bit 5 - Enhanced Link Detection EBUS"]
421 #[inline(always)]
422 pub fn eld_ebus(&self) -> ELD_EBUS_R {
423 ELD_EBUS_R::new(((self.bits >> 5) & 1) != 0)
424 }
425 #[doc = "Bit 6 - Enhanced Link Detection MII"]
426 #[inline(always)]
427 pub fn eld_mii(&self) -> ELD_MII_R {
428 ELD_MII_R::new(((self.bits >> 6) & 1) != 0)
429 }
430 #[doc = "Bit 7 - Separate Handling of FCS Errors"]
431 #[inline(always)]
432 pub fn sh_fcse(&self) -> SH_FCSE_R {
433 SH_FCSE_R::new(((self.bits >> 7) & 1) != 0)
434 }
435 #[doc = "Bit 8 - Enhanced DC SYNC Activation"]
436 #[inline(always)]
437 pub fn edc_synca(&self) -> EDC_SYNCA_R {
438 EDC_SYNCA_R::new(((self.bits >> 8) & 1) != 0)
439 }
440 #[doc = "Bit 9 - EtherCAT LRW command support"]
441 #[inline(always)]
442 pub fn lrw_cs(&self) -> LRW_CS_R {
443 LRW_CS_R::new(((self.bits >> 9) & 1) != 0)
444 }
445 #[doc = "Bit 10 - EtherCAT read/write command support (BRW, APRW, FPRW)"]
446 #[inline(always)]
447 pub fn rw_cs(&self) -> RW_CS_R {
448 RW_CS_R::new(((self.bits >> 10) & 1) != 0)
449 }
450 #[doc = "Bit 11 - Fixed FMMU/SyncManager configuration"]
451 #[inline(always)]
452 pub fn fx_conf(&self) -> FX_CONF_R {
453 FX_CONF_R::new(((self.bits >> 11) & 1) != 0)
454 }
455}
456#[doc = "ESC Features Supported\n\nYou can [`read`](crate::Reg::read) this register and get [`feature::R`](R). See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
457pub struct FEATURE_SPEC;
458impl crate::RegisterSpec for FEATURE_SPEC {
459 type Ux = u16;
460}
461#[doc = "`read()` method returns [`feature::R`](R) reader structure"]
462impl crate::Readable for FEATURE_SPEC {}
463#[doc = "`reset()` method sets FEATURE to value 0x01cc"]
464impl crate::Resettable for FEATURE_SPEC {
465 const RESET_VALUE: u16 = 0x01cc;
466}