1#![allow(non_camel_case_types, dead_code, clippy::should_implement_trait)]
9
10use super::mesg_num::MesgNum;
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
13#[repr(u8)]
14#[non_exhaustive]
15pub enum File {
16 Device = 1,
17 Settings = 2,
18 Sport = 3,
19 Activity = 4,
20 Workout = 5,
21 Course = 6,
22 Schedules = 7,
23 Weight = 9,
24 Totals = 10,
25 Goals = 11,
26 BloodPressure = 14,
27 MonitoringA = 15,
28 ActivitySummary = 20,
29 MonitoringDaily = 28,
30 MonitoringB = 32,
31 Segment = 34,
32 SegmentList = 35,
33 ExdConfiguration = 40,
34 MfgRangeMin = 247,
35 MfgRangeMax = 254,
36}
37
38impl File {
39 pub fn as_str(&self) -> &'static str {
41 match self {
42 File::Device => "device",
43 File::Settings => "settings",
44 File::Sport => "sport",
45 File::Activity => "activity",
46 File::Workout => "workout",
47 File::Course => "course",
48 File::Schedules => "schedules",
49 File::Weight => "weight",
50 File::Totals => "totals",
51 File::Goals => "goals",
52 File::BloodPressure => "blood_pressure",
53 File::MonitoringA => "monitoring_a",
54 File::ActivitySummary => "activity_summary",
55 File::MonitoringDaily => "monitoring_daily",
56 File::MonitoringB => "monitoring_b",
57 File::Segment => "segment",
58 File::SegmentList => "segment_list",
59 File::ExdConfiguration => "exd_configuration",
60 File::MfgRangeMin => "mfg_range_min",
61 File::MfgRangeMax => "mfg_range_max",
62 }
63 }
64
65 pub fn from_value(value: u8) -> Option<Self> {
67 match value {
68 1 => Some(File::Device),
69 2 => Some(File::Settings),
70 3 => Some(File::Sport),
71 4 => Some(File::Activity),
72 5 => Some(File::Workout),
73 6 => Some(File::Course),
74 7 => Some(File::Schedules),
75 9 => Some(File::Weight),
76 10 => Some(File::Totals),
77 11 => Some(File::Goals),
78 14 => Some(File::BloodPressure),
79 15 => Some(File::MonitoringA),
80 20 => Some(File::ActivitySummary),
81 28 => Some(File::MonitoringDaily),
82 32 => Some(File::MonitoringB),
83 34 => Some(File::Segment),
84 35 => Some(File::SegmentList),
85 40 => Some(File::ExdConfiguration),
86 247 => Some(File::MfgRangeMin),
87 254 => Some(File::MfgRangeMax),
88 _ => None,
89 }
90 }
91
92 pub fn from_str(name: &str) -> Option<Self> {
94 match name {
95 "device" => Some(File::Device),
96 "settings" => Some(File::Settings),
97 "sport" => Some(File::Sport),
98 "activity" => Some(File::Activity),
99 "workout" => Some(File::Workout),
100 "course" => Some(File::Course),
101 "schedules" => Some(File::Schedules),
102 "weight" => Some(File::Weight),
103 "totals" => Some(File::Totals),
104 "goals" => Some(File::Goals),
105 "blood_pressure" => Some(File::BloodPressure),
106 "monitoring_a" => Some(File::MonitoringA),
107 "activity_summary" => Some(File::ActivitySummary),
108 "monitoring_daily" => Some(File::MonitoringDaily),
109 "monitoring_b" => Some(File::MonitoringB),
110 "segment" => Some(File::Segment),
111 "segment_list" => Some(File::SegmentList),
112 "exd_configuration" => Some(File::ExdConfiguration),
113 "mfg_range_min" => Some(File::MfgRangeMin),
114 "mfg_range_max" => Some(File::MfgRangeMax),
115 _ => None,
116 }
117 }
118}
119
120#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
121#[repr(u8)]
122#[non_exhaustive]
123pub enum Checksum {
124 Clear = 0,
125 Ok = 1,
126}
127
128impl Checksum {
129 pub fn as_str(&self) -> &'static str {
131 match self {
132 Checksum::Clear => "clear",
133 Checksum::Ok => "ok",
134 }
135 }
136
137 pub fn from_value(value: u8) -> Option<Self> {
139 match value {
140 0 => Some(Checksum::Clear),
141 1 => Some(Checksum::Ok),
142 _ => None,
143 }
144 }
145
146 pub fn from_str(name: &str) -> Option<Self> {
148 match name {
149 "clear" => Some(Checksum::Clear),
150 "ok" => Some(Checksum::Ok),
151 _ => None,
152 }
153 }
154}
155
156#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
157#[repr(u8)]
158#[non_exhaustive]
159pub enum FileFlags {
160 Read = 2,
161 Write = 4,
162 Erase = 8,
163}
164
165impl FileFlags {
166 pub fn as_str(&self) -> &'static str {
168 match self {
169 FileFlags::Read => "read",
170 FileFlags::Write => "write",
171 FileFlags::Erase => "erase",
172 }
173 }
174
175 pub fn from_value(value: u8) -> Option<Self> {
177 match value {
178 2 => Some(FileFlags::Read),
179 4 => Some(FileFlags::Write),
180 8 => Some(FileFlags::Erase),
181 _ => None,
182 }
183 }
184
185 pub fn from_str(name: &str) -> Option<Self> {
187 match name {
188 "read" => Some(FileFlags::Read),
189 "write" => Some(FileFlags::Write),
190 "erase" => Some(FileFlags::Erase),
191 _ => None,
192 }
193 }
194}
195
196#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
197#[repr(u8)]
198#[non_exhaustive]
199pub enum MesgCount {
200 NumPerFile = 0,
201 MaxPerFile = 1,
202 MaxPerFileType = 2,
203}
204
205impl MesgCount {
206 pub fn as_str(&self) -> &'static str {
208 match self {
209 MesgCount::NumPerFile => "num_per_file",
210 MesgCount::MaxPerFile => "max_per_file",
211 MesgCount::MaxPerFileType => "max_per_file_type",
212 }
213 }
214
215 pub fn from_value(value: u8) -> Option<Self> {
217 match value {
218 0 => Some(MesgCount::NumPerFile),
219 1 => Some(MesgCount::MaxPerFile),
220 2 => Some(MesgCount::MaxPerFileType),
221 _ => None,
222 }
223 }
224
225 pub fn from_str(name: &str) -> Option<Self> {
227 match name {
228 "num_per_file" => Some(MesgCount::NumPerFile),
229 "max_per_file" => Some(MesgCount::MaxPerFile),
230 "max_per_file_type" => Some(MesgCount::MaxPerFileType),
231 _ => None,
232 }
233 }
234}
235
236#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
237#[repr(u32)]
238#[non_exhaustive]
239pub enum DateTime {
240 Min = 268435456,
241}
242
243impl DateTime {
244 pub fn as_str(&self) -> &'static str {
246 match self {
247 DateTime::Min => "min",
248 }
249 }
250
251 pub fn from_value(value: u32) -> Option<Self> {
253 match value {
254 268435456 => Some(DateTime::Min),
255 _ => None,
256 }
257 }
258
259 pub fn from_str(name: &str) -> Option<Self> {
261 match name {
262 "min" => Some(DateTime::Min),
263 _ => None,
264 }
265 }
266}
267
268#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
269#[repr(u32)]
270#[non_exhaustive]
271pub enum LocalDateTime {
272 Min = 268435456,
273}
274
275impl LocalDateTime {
276 pub fn as_str(&self) -> &'static str {
278 match self {
279 LocalDateTime::Min => "min",
280 }
281 }
282
283 pub fn from_value(value: u32) -> Option<Self> {
285 match value {
286 268435456 => Some(LocalDateTime::Min),
287 _ => None,
288 }
289 }
290
291 pub fn from_str(name: &str) -> Option<Self> {
293 match name {
294 "min" => Some(LocalDateTime::Min),
295 _ => None,
296 }
297 }
298}
299
300#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
301#[repr(u16)]
302#[non_exhaustive]
303pub enum MessageIndex {
304 Selected = 32768,
305 Reserved = 28672,
306 Mask = 4095,
307}
308
309impl MessageIndex {
310 pub fn as_str(&self) -> &'static str {
312 match self {
313 MessageIndex::Selected => "selected",
314 MessageIndex::Reserved => "reserved",
315 MessageIndex::Mask => "mask",
316 }
317 }
318
319 pub fn from_value(value: u16) -> Option<Self> {
321 match value {
322 32768 => Some(MessageIndex::Selected),
323 28672 => Some(MessageIndex::Reserved),
324 4095 => Some(MessageIndex::Mask),
325 _ => None,
326 }
327 }
328
329 pub fn from_str(name: &str) -> Option<Self> {
331 match name {
332 "selected" => Some(MessageIndex::Selected),
333 "reserved" => Some(MessageIndex::Reserved),
334 "mask" => Some(MessageIndex::Mask),
335 _ => None,
336 }
337 }
338}
339
340#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
341#[repr(u8)]
342#[non_exhaustive]
343pub enum DeviceIndex {
344 Creator = 0,
345}
346
347impl DeviceIndex {
348 pub fn as_str(&self) -> &'static str {
350 match self {
351 DeviceIndex::Creator => "creator",
352 }
353 }
354
355 pub fn from_value(value: u8) -> Option<Self> {
357 match value {
358 0 => Some(DeviceIndex::Creator),
359 _ => None,
360 }
361 }
362
363 pub fn from_str(name: &str) -> Option<Self> {
365 match name {
366 "creator" => Some(DeviceIndex::Creator),
367 _ => None,
368 }
369 }
370}
371
372#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
373#[repr(u8)]
374#[non_exhaustive]
375pub enum Gender {
376 Female = 0,
377 Male = 1,
378}
379
380impl Gender {
381 pub fn as_str(&self) -> &'static str {
383 match self {
384 Gender::Female => "female",
385 Gender::Male => "male",
386 }
387 }
388
389 pub fn from_value(value: u8) -> Option<Self> {
391 match value {
392 0 => Some(Gender::Female),
393 1 => Some(Gender::Male),
394 _ => None,
395 }
396 }
397
398 pub fn from_str(name: &str) -> Option<Self> {
400 match name {
401 "female" => Some(Gender::Female),
402 "male" => Some(Gender::Male),
403 _ => None,
404 }
405 }
406}
407
408#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
409#[repr(u8)]
410#[non_exhaustive]
411pub enum Language {
412 English = 0,
413 French = 1,
414 Italian = 2,
415 German = 3,
416 Spanish = 4,
417 Croatian = 5,
418 Czech = 6,
419 Danish = 7,
420 Dutch = 8,
421 Finnish = 9,
422 Greek = 10,
423 Hungarian = 11,
424 Norwegian = 12,
425 Polish = 13,
426 Portuguese = 14,
427 Slovakian = 15,
428 Slovenian = 16,
429 Swedish = 17,
430 Russian = 18,
431 Turkish = 19,
432 Latvian = 20,
433 Ukrainian = 21,
434 Arabic = 22,
435 Farsi = 23,
436 Bulgarian = 24,
437 Romanian = 25,
438 Chinese = 26,
439 Japanese = 27,
440 Korean = 28,
441 Taiwanese = 29,
442 Thai = 30,
443 Hebrew = 31,
444 BrazilianPortuguese = 32,
445 Indonesian = 33,
446 Malaysian = 34,
447 Vietnamese = 35,
448 Burmese = 36,
449 Mongolian = 37,
450 Custom = 254,
451}
452
453impl Language {
454 pub fn as_str(&self) -> &'static str {
456 match self {
457 Language::English => "english",
458 Language::French => "french",
459 Language::Italian => "italian",
460 Language::German => "german",
461 Language::Spanish => "spanish",
462 Language::Croatian => "croatian",
463 Language::Czech => "czech",
464 Language::Danish => "danish",
465 Language::Dutch => "dutch",
466 Language::Finnish => "finnish",
467 Language::Greek => "greek",
468 Language::Hungarian => "hungarian",
469 Language::Norwegian => "norwegian",
470 Language::Polish => "polish",
471 Language::Portuguese => "portuguese",
472 Language::Slovakian => "slovakian",
473 Language::Slovenian => "slovenian",
474 Language::Swedish => "swedish",
475 Language::Russian => "russian",
476 Language::Turkish => "turkish",
477 Language::Latvian => "latvian",
478 Language::Ukrainian => "ukrainian",
479 Language::Arabic => "arabic",
480 Language::Farsi => "farsi",
481 Language::Bulgarian => "bulgarian",
482 Language::Romanian => "romanian",
483 Language::Chinese => "chinese",
484 Language::Japanese => "japanese",
485 Language::Korean => "korean",
486 Language::Taiwanese => "taiwanese",
487 Language::Thai => "thai",
488 Language::Hebrew => "hebrew",
489 Language::BrazilianPortuguese => "brazilian_portuguese",
490 Language::Indonesian => "indonesian",
491 Language::Malaysian => "malaysian",
492 Language::Vietnamese => "vietnamese",
493 Language::Burmese => "burmese",
494 Language::Mongolian => "mongolian",
495 Language::Custom => "custom",
496 }
497 }
498
499 pub fn from_value(value: u8) -> Option<Self> {
501 match value {
502 0 => Some(Language::English),
503 1 => Some(Language::French),
504 2 => Some(Language::Italian),
505 3 => Some(Language::German),
506 4 => Some(Language::Spanish),
507 5 => Some(Language::Croatian),
508 6 => Some(Language::Czech),
509 7 => Some(Language::Danish),
510 8 => Some(Language::Dutch),
511 9 => Some(Language::Finnish),
512 10 => Some(Language::Greek),
513 11 => Some(Language::Hungarian),
514 12 => Some(Language::Norwegian),
515 13 => Some(Language::Polish),
516 14 => Some(Language::Portuguese),
517 15 => Some(Language::Slovakian),
518 16 => Some(Language::Slovenian),
519 17 => Some(Language::Swedish),
520 18 => Some(Language::Russian),
521 19 => Some(Language::Turkish),
522 20 => Some(Language::Latvian),
523 21 => Some(Language::Ukrainian),
524 22 => Some(Language::Arabic),
525 23 => Some(Language::Farsi),
526 24 => Some(Language::Bulgarian),
527 25 => Some(Language::Romanian),
528 26 => Some(Language::Chinese),
529 27 => Some(Language::Japanese),
530 28 => Some(Language::Korean),
531 29 => Some(Language::Taiwanese),
532 30 => Some(Language::Thai),
533 31 => Some(Language::Hebrew),
534 32 => Some(Language::BrazilianPortuguese),
535 33 => Some(Language::Indonesian),
536 34 => Some(Language::Malaysian),
537 35 => Some(Language::Vietnamese),
538 36 => Some(Language::Burmese),
539 37 => Some(Language::Mongolian),
540 254 => Some(Language::Custom),
541 _ => None,
542 }
543 }
544
545 pub fn from_str(name: &str) -> Option<Self> {
547 match name {
548 "english" => Some(Language::English),
549 "french" => Some(Language::French),
550 "italian" => Some(Language::Italian),
551 "german" => Some(Language::German),
552 "spanish" => Some(Language::Spanish),
553 "croatian" => Some(Language::Croatian),
554 "czech" => Some(Language::Czech),
555 "danish" => Some(Language::Danish),
556 "dutch" => Some(Language::Dutch),
557 "finnish" => Some(Language::Finnish),
558 "greek" => Some(Language::Greek),
559 "hungarian" => Some(Language::Hungarian),
560 "norwegian" => Some(Language::Norwegian),
561 "polish" => Some(Language::Polish),
562 "portuguese" => Some(Language::Portuguese),
563 "slovakian" => Some(Language::Slovakian),
564 "slovenian" => Some(Language::Slovenian),
565 "swedish" => Some(Language::Swedish),
566 "russian" => Some(Language::Russian),
567 "turkish" => Some(Language::Turkish),
568 "latvian" => Some(Language::Latvian),
569 "ukrainian" => Some(Language::Ukrainian),
570 "arabic" => Some(Language::Arabic),
571 "farsi" => Some(Language::Farsi),
572 "bulgarian" => Some(Language::Bulgarian),
573 "romanian" => Some(Language::Romanian),
574 "chinese" => Some(Language::Chinese),
575 "japanese" => Some(Language::Japanese),
576 "korean" => Some(Language::Korean),
577 "taiwanese" => Some(Language::Taiwanese),
578 "thai" => Some(Language::Thai),
579 "hebrew" => Some(Language::Hebrew),
580 "brazilian_portuguese" => Some(Language::BrazilianPortuguese),
581 "indonesian" => Some(Language::Indonesian),
582 "malaysian" => Some(Language::Malaysian),
583 "vietnamese" => Some(Language::Vietnamese),
584 "burmese" => Some(Language::Burmese),
585 "mongolian" => Some(Language::Mongolian),
586 "custom" => Some(Language::Custom),
587 _ => None,
588 }
589 }
590}
591
592#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
593#[repr(u8)]
594#[non_exhaustive]
595pub enum LanguageBits0 {
596 English = 1,
597 French = 2,
598 Italian = 4,
599 German = 8,
600 Spanish = 16,
601 Croatian = 32,
602 Czech = 64,
603 Danish = 128,
604}
605
606impl LanguageBits0 {
607 pub fn as_str(&self) -> &'static str {
609 match self {
610 LanguageBits0::English => "english",
611 LanguageBits0::French => "french",
612 LanguageBits0::Italian => "italian",
613 LanguageBits0::German => "german",
614 LanguageBits0::Spanish => "spanish",
615 LanguageBits0::Croatian => "croatian",
616 LanguageBits0::Czech => "czech",
617 LanguageBits0::Danish => "danish",
618 }
619 }
620
621 pub fn from_value(value: u8) -> Option<Self> {
623 match value {
624 1 => Some(LanguageBits0::English),
625 2 => Some(LanguageBits0::French),
626 4 => Some(LanguageBits0::Italian),
627 8 => Some(LanguageBits0::German),
628 16 => Some(LanguageBits0::Spanish),
629 32 => Some(LanguageBits0::Croatian),
630 64 => Some(LanguageBits0::Czech),
631 128 => Some(LanguageBits0::Danish),
632 _ => None,
633 }
634 }
635
636 pub fn from_str(name: &str) -> Option<Self> {
638 match name {
639 "english" => Some(LanguageBits0::English),
640 "french" => Some(LanguageBits0::French),
641 "italian" => Some(LanguageBits0::Italian),
642 "german" => Some(LanguageBits0::German),
643 "spanish" => Some(LanguageBits0::Spanish),
644 "croatian" => Some(LanguageBits0::Croatian),
645 "czech" => Some(LanguageBits0::Czech),
646 "danish" => Some(LanguageBits0::Danish),
647 _ => None,
648 }
649 }
650}
651
652#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
653#[repr(u8)]
654#[non_exhaustive]
655pub enum LanguageBits1 {
656 Dutch = 1,
657 Finnish = 2,
658 Greek = 4,
659 Hungarian = 8,
660 Norwegian = 16,
661 Polish = 32,
662 Portuguese = 64,
663 Slovakian = 128,
664}
665
666impl LanguageBits1 {
667 pub fn as_str(&self) -> &'static str {
669 match self {
670 LanguageBits1::Dutch => "dutch",
671 LanguageBits1::Finnish => "finnish",
672 LanguageBits1::Greek => "greek",
673 LanguageBits1::Hungarian => "hungarian",
674 LanguageBits1::Norwegian => "norwegian",
675 LanguageBits1::Polish => "polish",
676 LanguageBits1::Portuguese => "portuguese",
677 LanguageBits1::Slovakian => "slovakian",
678 }
679 }
680
681 pub fn from_value(value: u8) -> Option<Self> {
683 match value {
684 1 => Some(LanguageBits1::Dutch),
685 2 => Some(LanguageBits1::Finnish),
686 4 => Some(LanguageBits1::Greek),
687 8 => Some(LanguageBits1::Hungarian),
688 16 => Some(LanguageBits1::Norwegian),
689 32 => Some(LanguageBits1::Polish),
690 64 => Some(LanguageBits1::Portuguese),
691 128 => Some(LanguageBits1::Slovakian),
692 _ => None,
693 }
694 }
695
696 pub fn from_str(name: &str) -> Option<Self> {
698 match name {
699 "dutch" => Some(LanguageBits1::Dutch),
700 "finnish" => Some(LanguageBits1::Finnish),
701 "greek" => Some(LanguageBits1::Greek),
702 "hungarian" => Some(LanguageBits1::Hungarian),
703 "norwegian" => Some(LanguageBits1::Norwegian),
704 "polish" => Some(LanguageBits1::Polish),
705 "portuguese" => Some(LanguageBits1::Portuguese),
706 "slovakian" => Some(LanguageBits1::Slovakian),
707 _ => None,
708 }
709 }
710}
711
712#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
713#[repr(u8)]
714#[non_exhaustive]
715pub enum LanguageBits2 {
716 Slovenian = 1,
717 Swedish = 2,
718 Russian = 4,
719 Turkish = 8,
720 Latvian = 16,
721 Ukrainian = 32,
722 Arabic = 64,
723 Farsi = 128,
724}
725
726impl LanguageBits2 {
727 pub fn as_str(&self) -> &'static str {
729 match self {
730 LanguageBits2::Slovenian => "slovenian",
731 LanguageBits2::Swedish => "swedish",
732 LanguageBits2::Russian => "russian",
733 LanguageBits2::Turkish => "turkish",
734 LanguageBits2::Latvian => "latvian",
735 LanguageBits2::Ukrainian => "ukrainian",
736 LanguageBits2::Arabic => "arabic",
737 LanguageBits2::Farsi => "farsi",
738 }
739 }
740
741 pub fn from_value(value: u8) -> Option<Self> {
743 match value {
744 1 => Some(LanguageBits2::Slovenian),
745 2 => Some(LanguageBits2::Swedish),
746 4 => Some(LanguageBits2::Russian),
747 8 => Some(LanguageBits2::Turkish),
748 16 => Some(LanguageBits2::Latvian),
749 32 => Some(LanguageBits2::Ukrainian),
750 64 => Some(LanguageBits2::Arabic),
751 128 => Some(LanguageBits2::Farsi),
752 _ => None,
753 }
754 }
755
756 pub fn from_str(name: &str) -> Option<Self> {
758 match name {
759 "slovenian" => Some(LanguageBits2::Slovenian),
760 "swedish" => Some(LanguageBits2::Swedish),
761 "russian" => Some(LanguageBits2::Russian),
762 "turkish" => Some(LanguageBits2::Turkish),
763 "latvian" => Some(LanguageBits2::Latvian),
764 "ukrainian" => Some(LanguageBits2::Ukrainian),
765 "arabic" => Some(LanguageBits2::Arabic),
766 "farsi" => Some(LanguageBits2::Farsi),
767 _ => None,
768 }
769 }
770}
771
772#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
773#[repr(u8)]
774#[non_exhaustive]
775pub enum LanguageBits3 {
776 Bulgarian = 1,
777 Romanian = 2,
778 Chinese = 4,
779 Japanese = 8,
780 Korean = 16,
781 Taiwanese = 32,
782 Thai = 64,
783 Hebrew = 128,
784}
785
786impl LanguageBits3 {
787 pub fn as_str(&self) -> &'static str {
789 match self {
790 LanguageBits3::Bulgarian => "bulgarian",
791 LanguageBits3::Romanian => "romanian",
792 LanguageBits3::Chinese => "chinese",
793 LanguageBits3::Japanese => "japanese",
794 LanguageBits3::Korean => "korean",
795 LanguageBits3::Taiwanese => "taiwanese",
796 LanguageBits3::Thai => "thai",
797 LanguageBits3::Hebrew => "hebrew",
798 }
799 }
800
801 pub fn from_value(value: u8) -> Option<Self> {
803 match value {
804 1 => Some(LanguageBits3::Bulgarian),
805 2 => Some(LanguageBits3::Romanian),
806 4 => Some(LanguageBits3::Chinese),
807 8 => Some(LanguageBits3::Japanese),
808 16 => Some(LanguageBits3::Korean),
809 32 => Some(LanguageBits3::Taiwanese),
810 64 => Some(LanguageBits3::Thai),
811 128 => Some(LanguageBits3::Hebrew),
812 _ => None,
813 }
814 }
815
816 pub fn from_str(name: &str) -> Option<Self> {
818 match name {
819 "bulgarian" => Some(LanguageBits3::Bulgarian),
820 "romanian" => Some(LanguageBits3::Romanian),
821 "chinese" => Some(LanguageBits3::Chinese),
822 "japanese" => Some(LanguageBits3::Japanese),
823 "korean" => Some(LanguageBits3::Korean),
824 "taiwanese" => Some(LanguageBits3::Taiwanese),
825 "thai" => Some(LanguageBits3::Thai),
826 "hebrew" => Some(LanguageBits3::Hebrew),
827 _ => None,
828 }
829 }
830}
831
832#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
833#[repr(u8)]
834#[non_exhaustive]
835pub enum LanguageBits4 {
836 BrazilianPortuguese = 1,
837 Indonesian = 2,
838 Malaysian = 4,
839 Vietnamese = 8,
840 Burmese = 16,
841 Mongolian = 32,
842}
843
844impl LanguageBits4 {
845 pub fn as_str(&self) -> &'static str {
847 match self {
848 LanguageBits4::BrazilianPortuguese => "brazilian_portuguese",
849 LanguageBits4::Indonesian => "indonesian",
850 LanguageBits4::Malaysian => "malaysian",
851 LanguageBits4::Vietnamese => "vietnamese",
852 LanguageBits4::Burmese => "burmese",
853 LanguageBits4::Mongolian => "mongolian",
854 }
855 }
856
857 pub fn from_value(value: u8) -> Option<Self> {
859 match value {
860 1 => Some(LanguageBits4::BrazilianPortuguese),
861 2 => Some(LanguageBits4::Indonesian),
862 4 => Some(LanguageBits4::Malaysian),
863 8 => Some(LanguageBits4::Vietnamese),
864 16 => Some(LanguageBits4::Burmese),
865 32 => Some(LanguageBits4::Mongolian),
866 _ => None,
867 }
868 }
869
870 pub fn from_str(name: &str) -> Option<Self> {
872 match name {
873 "brazilian_portuguese" => Some(LanguageBits4::BrazilianPortuguese),
874 "indonesian" => Some(LanguageBits4::Indonesian),
875 "malaysian" => Some(LanguageBits4::Malaysian),
876 "vietnamese" => Some(LanguageBits4::Vietnamese),
877 "burmese" => Some(LanguageBits4::Burmese),
878 "mongolian" => Some(LanguageBits4::Mongolian),
879 _ => None,
880 }
881 }
882}
883
884#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
885#[repr(u8)]
886#[non_exhaustive]
887pub enum TimeZone {
888 Almaty = 0,
889 Bangkok = 1,
890 Bombay = 2,
891 Brasilia = 3,
892 Cairo = 4,
893 CapeVerdeIs = 5,
894 Darwin = 6,
895 Eniwetok = 7,
896 Fiji = 8,
897 HongKong = 9,
898 Islamabad = 10,
899 Kabul = 11,
900 Magadan = 12,
901 MidAtlantic = 13,
902 Moscow = 14,
903 Muscat = 15,
904 Newfoundland = 16,
905 Samoa = 17,
906 Sydney = 18,
907 Tehran = 19,
908 Tokyo = 20,
909 UsAlaska = 21,
910 UsAtlantic = 22,
911 UsCentral = 23,
912 UsEastern = 24,
913 UsHawaii = 25,
914 UsMountain = 26,
915 UsPacific = 27,
916 Other = 28,
917 Auckland = 29,
918 Kathmandu = 30,
919 EuropeWesternWet = 31,
920 EuropeCentralCet = 32,
921 EuropeEasternEet = 33,
922 Jakarta = 34,
923 Perth = 35,
924 Adelaide = 36,
925 Brisbane = 37,
926 Tasmania = 38,
927 Iceland = 39,
928 Amsterdam = 40,
929 Athens = 41,
930 Barcelona = 42,
931 Berlin = 43,
932 Brussels = 44,
933 Budapest = 45,
934 Copenhagen = 46,
935 Dublin = 47,
936 Helsinki = 48,
937 Lisbon = 49,
938 London = 50,
939 Madrid = 51,
940 Munich = 52,
941 Oslo = 53,
942 Paris = 54,
943 Prague = 55,
944 Reykjavik = 56,
945 Rome = 57,
946 Stockholm = 58,
947 Vienna = 59,
948 Warsaw = 60,
949 Zurich = 61,
950 Quebec = 62,
951 Ontario = 63,
952 Manitoba = 64,
953 Saskatchewan = 65,
954 Alberta = 66,
955 BritishColumbia = 67,
956 Boise = 68,
957 Boston = 69,
958 Chicago = 70,
959 Dallas = 71,
960 Denver = 72,
961 KansasCity = 73,
962 LasVegas = 74,
963 LosAngeles = 75,
964 Miami = 76,
965 Minneapolis = 77,
966 NewYork = 78,
967 NewOrleans = 79,
968 Phoenix = 80,
969 SantaFe = 81,
970 Seattle = 82,
971 WashingtonDc = 83,
972 UsArizona = 84,
973 Chita = 85,
974 Ekaterinburg = 86,
975 Irkutsk = 87,
976 Kaliningrad = 88,
977 Krasnoyarsk = 89,
978 Novosibirsk = 90,
979 PetropavlovskKamchatskiy = 91,
980 Samara = 92,
981 Vladivostok = 93,
982 MexicoCentral = 94,
983 MexicoMountain = 95,
984 MexicoPacific = 96,
985 CapeTown = 97,
986 Winkhoek = 98,
987 Lagos = 99,
988 Riyahd = 100,
989 Venezuela = 101,
990 AustraliaLh = 102,
991 Santiago = 103,
992 Manual = 253,
993 Automatic = 254,
994}
995
996impl TimeZone {
997 pub fn as_str(&self) -> &'static str {
999 match self {
1000 TimeZone::Almaty => "almaty",
1001 TimeZone::Bangkok => "bangkok",
1002 TimeZone::Bombay => "bombay",
1003 TimeZone::Brasilia => "brasilia",
1004 TimeZone::Cairo => "cairo",
1005 TimeZone::CapeVerdeIs => "cape_verde_is",
1006 TimeZone::Darwin => "darwin",
1007 TimeZone::Eniwetok => "eniwetok",
1008 TimeZone::Fiji => "fiji",
1009 TimeZone::HongKong => "hong_kong",
1010 TimeZone::Islamabad => "islamabad",
1011 TimeZone::Kabul => "kabul",
1012 TimeZone::Magadan => "magadan",
1013 TimeZone::MidAtlantic => "mid_atlantic",
1014 TimeZone::Moscow => "moscow",
1015 TimeZone::Muscat => "muscat",
1016 TimeZone::Newfoundland => "newfoundland",
1017 TimeZone::Samoa => "samoa",
1018 TimeZone::Sydney => "sydney",
1019 TimeZone::Tehran => "tehran",
1020 TimeZone::Tokyo => "tokyo",
1021 TimeZone::UsAlaska => "us_alaska",
1022 TimeZone::UsAtlantic => "us_atlantic",
1023 TimeZone::UsCentral => "us_central",
1024 TimeZone::UsEastern => "us_eastern",
1025 TimeZone::UsHawaii => "us_hawaii",
1026 TimeZone::UsMountain => "us_mountain",
1027 TimeZone::UsPacific => "us_pacific",
1028 TimeZone::Other => "other",
1029 TimeZone::Auckland => "auckland",
1030 TimeZone::Kathmandu => "kathmandu",
1031 TimeZone::EuropeWesternWet => "europe_western_wet",
1032 TimeZone::EuropeCentralCet => "europe_central_cet",
1033 TimeZone::EuropeEasternEet => "europe_eastern_eet",
1034 TimeZone::Jakarta => "jakarta",
1035 TimeZone::Perth => "perth",
1036 TimeZone::Adelaide => "adelaide",
1037 TimeZone::Brisbane => "brisbane",
1038 TimeZone::Tasmania => "tasmania",
1039 TimeZone::Iceland => "iceland",
1040 TimeZone::Amsterdam => "amsterdam",
1041 TimeZone::Athens => "athens",
1042 TimeZone::Barcelona => "barcelona",
1043 TimeZone::Berlin => "berlin",
1044 TimeZone::Brussels => "brussels",
1045 TimeZone::Budapest => "budapest",
1046 TimeZone::Copenhagen => "copenhagen",
1047 TimeZone::Dublin => "dublin",
1048 TimeZone::Helsinki => "helsinki",
1049 TimeZone::Lisbon => "lisbon",
1050 TimeZone::London => "london",
1051 TimeZone::Madrid => "madrid",
1052 TimeZone::Munich => "munich",
1053 TimeZone::Oslo => "oslo",
1054 TimeZone::Paris => "paris",
1055 TimeZone::Prague => "prague",
1056 TimeZone::Reykjavik => "reykjavik",
1057 TimeZone::Rome => "rome",
1058 TimeZone::Stockholm => "stockholm",
1059 TimeZone::Vienna => "vienna",
1060 TimeZone::Warsaw => "warsaw",
1061 TimeZone::Zurich => "zurich",
1062 TimeZone::Quebec => "quebec",
1063 TimeZone::Ontario => "ontario",
1064 TimeZone::Manitoba => "manitoba",
1065 TimeZone::Saskatchewan => "saskatchewan",
1066 TimeZone::Alberta => "alberta",
1067 TimeZone::BritishColumbia => "british_columbia",
1068 TimeZone::Boise => "boise",
1069 TimeZone::Boston => "boston",
1070 TimeZone::Chicago => "chicago",
1071 TimeZone::Dallas => "dallas",
1072 TimeZone::Denver => "denver",
1073 TimeZone::KansasCity => "kansas_city",
1074 TimeZone::LasVegas => "las_vegas",
1075 TimeZone::LosAngeles => "los_angeles",
1076 TimeZone::Miami => "miami",
1077 TimeZone::Minneapolis => "minneapolis",
1078 TimeZone::NewYork => "new_york",
1079 TimeZone::NewOrleans => "new_orleans",
1080 TimeZone::Phoenix => "phoenix",
1081 TimeZone::SantaFe => "santa_fe",
1082 TimeZone::Seattle => "seattle",
1083 TimeZone::WashingtonDc => "washington_dc",
1084 TimeZone::UsArizona => "us_arizona",
1085 TimeZone::Chita => "chita",
1086 TimeZone::Ekaterinburg => "ekaterinburg",
1087 TimeZone::Irkutsk => "irkutsk",
1088 TimeZone::Kaliningrad => "kaliningrad",
1089 TimeZone::Krasnoyarsk => "krasnoyarsk",
1090 TimeZone::Novosibirsk => "novosibirsk",
1091 TimeZone::PetropavlovskKamchatskiy => "petropavlovsk_kamchatskiy",
1092 TimeZone::Samara => "samara",
1093 TimeZone::Vladivostok => "vladivostok",
1094 TimeZone::MexicoCentral => "mexico_central",
1095 TimeZone::MexicoMountain => "mexico_mountain",
1096 TimeZone::MexicoPacific => "mexico_pacific",
1097 TimeZone::CapeTown => "cape_town",
1098 TimeZone::Winkhoek => "winkhoek",
1099 TimeZone::Lagos => "lagos",
1100 TimeZone::Riyahd => "riyahd",
1101 TimeZone::Venezuela => "venezuela",
1102 TimeZone::AustraliaLh => "australia_lh",
1103 TimeZone::Santiago => "santiago",
1104 TimeZone::Manual => "manual",
1105 TimeZone::Automatic => "automatic",
1106 }
1107 }
1108
1109 pub fn from_value(value: u8) -> Option<Self> {
1111 match value {
1112 0 => Some(TimeZone::Almaty),
1113 1 => Some(TimeZone::Bangkok),
1114 2 => Some(TimeZone::Bombay),
1115 3 => Some(TimeZone::Brasilia),
1116 4 => Some(TimeZone::Cairo),
1117 5 => Some(TimeZone::CapeVerdeIs),
1118 6 => Some(TimeZone::Darwin),
1119 7 => Some(TimeZone::Eniwetok),
1120 8 => Some(TimeZone::Fiji),
1121 9 => Some(TimeZone::HongKong),
1122 10 => Some(TimeZone::Islamabad),
1123 11 => Some(TimeZone::Kabul),
1124 12 => Some(TimeZone::Magadan),
1125 13 => Some(TimeZone::MidAtlantic),
1126 14 => Some(TimeZone::Moscow),
1127 15 => Some(TimeZone::Muscat),
1128 16 => Some(TimeZone::Newfoundland),
1129 17 => Some(TimeZone::Samoa),
1130 18 => Some(TimeZone::Sydney),
1131 19 => Some(TimeZone::Tehran),
1132 20 => Some(TimeZone::Tokyo),
1133 21 => Some(TimeZone::UsAlaska),
1134 22 => Some(TimeZone::UsAtlantic),
1135 23 => Some(TimeZone::UsCentral),
1136 24 => Some(TimeZone::UsEastern),
1137 25 => Some(TimeZone::UsHawaii),
1138 26 => Some(TimeZone::UsMountain),
1139 27 => Some(TimeZone::UsPacific),
1140 28 => Some(TimeZone::Other),
1141 29 => Some(TimeZone::Auckland),
1142 30 => Some(TimeZone::Kathmandu),
1143 31 => Some(TimeZone::EuropeWesternWet),
1144 32 => Some(TimeZone::EuropeCentralCet),
1145 33 => Some(TimeZone::EuropeEasternEet),
1146 34 => Some(TimeZone::Jakarta),
1147 35 => Some(TimeZone::Perth),
1148 36 => Some(TimeZone::Adelaide),
1149 37 => Some(TimeZone::Brisbane),
1150 38 => Some(TimeZone::Tasmania),
1151 39 => Some(TimeZone::Iceland),
1152 40 => Some(TimeZone::Amsterdam),
1153 41 => Some(TimeZone::Athens),
1154 42 => Some(TimeZone::Barcelona),
1155 43 => Some(TimeZone::Berlin),
1156 44 => Some(TimeZone::Brussels),
1157 45 => Some(TimeZone::Budapest),
1158 46 => Some(TimeZone::Copenhagen),
1159 47 => Some(TimeZone::Dublin),
1160 48 => Some(TimeZone::Helsinki),
1161 49 => Some(TimeZone::Lisbon),
1162 50 => Some(TimeZone::London),
1163 51 => Some(TimeZone::Madrid),
1164 52 => Some(TimeZone::Munich),
1165 53 => Some(TimeZone::Oslo),
1166 54 => Some(TimeZone::Paris),
1167 55 => Some(TimeZone::Prague),
1168 56 => Some(TimeZone::Reykjavik),
1169 57 => Some(TimeZone::Rome),
1170 58 => Some(TimeZone::Stockholm),
1171 59 => Some(TimeZone::Vienna),
1172 60 => Some(TimeZone::Warsaw),
1173 61 => Some(TimeZone::Zurich),
1174 62 => Some(TimeZone::Quebec),
1175 63 => Some(TimeZone::Ontario),
1176 64 => Some(TimeZone::Manitoba),
1177 65 => Some(TimeZone::Saskatchewan),
1178 66 => Some(TimeZone::Alberta),
1179 67 => Some(TimeZone::BritishColumbia),
1180 68 => Some(TimeZone::Boise),
1181 69 => Some(TimeZone::Boston),
1182 70 => Some(TimeZone::Chicago),
1183 71 => Some(TimeZone::Dallas),
1184 72 => Some(TimeZone::Denver),
1185 73 => Some(TimeZone::KansasCity),
1186 74 => Some(TimeZone::LasVegas),
1187 75 => Some(TimeZone::LosAngeles),
1188 76 => Some(TimeZone::Miami),
1189 77 => Some(TimeZone::Minneapolis),
1190 78 => Some(TimeZone::NewYork),
1191 79 => Some(TimeZone::NewOrleans),
1192 80 => Some(TimeZone::Phoenix),
1193 81 => Some(TimeZone::SantaFe),
1194 82 => Some(TimeZone::Seattle),
1195 83 => Some(TimeZone::WashingtonDc),
1196 84 => Some(TimeZone::UsArizona),
1197 85 => Some(TimeZone::Chita),
1198 86 => Some(TimeZone::Ekaterinburg),
1199 87 => Some(TimeZone::Irkutsk),
1200 88 => Some(TimeZone::Kaliningrad),
1201 89 => Some(TimeZone::Krasnoyarsk),
1202 90 => Some(TimeZone::Novosibirsk),
1203 91 => Some(TimeZone::PetropavlovskKamchatskiy),
1204 92 => Some(TimeZone::Samara),
1205 93 => Some(TimeZone::Vladivostok),
1206 94 => Some(TimeZone::MexicoCentral),
1207 95 => Some(TimeZone::MexicoMountain),
1208 96 => Some(TimeZone::MexicoPacific),
1209 97 => Some(TimeZone::CapeTown),
1210 98 => Some(TimeZone::Winkhoek),
1211 99 => Some(TimeZone::Lagos),
1212 100 => Some(TimeZone::Riyahd),
1213 101 => Some(TimeZone::Venezuela),
1214 102 => Some(TimeZone::AustraliaLh),
1215 103 => Some(TimeZone::Santiago),
1216 253 => Some(TimeZone::Manual),
1217 254 => Some(TimeZone::Automatic),
1218 _ => None,
1219 }
1220 }
1221
1222 pub fn from_str(name: &str) -> Option<Self> {
1224 match name {
1225 "almaty" => Some(TimeZone::Almaty),
1226 "bangkok" => Some(TimeZone::Bangkok),
1227 "bombay" => Some(TimeZone::Bombay),
1228 "brasilia" => Some(TimeZone::Brasilia),
1229 "cairo" => Some(TimeZone::Cairo),
1230 "cape_verde_is" => Some(TimeZone::CapeVerdeIs),
1231 "darwin" => Some(TimeZone::Darwin),
1232 "eniwetok" => Some(TimeZone::Eniwetok),
1233 "fiji" => Some(TimeZone::Fiji),
1234 "hong_kong" => Some(TimeZone::HongKong),
1235 "islamabad" => Some(TimeZone::Islamabad),
1236 "kabul" => Some(TimeZone::Kabul),
1237 "magadan" => Some(TimeZone::Magadan),
1238 "mid_atlantic" => Some(TimeZone::MidAtlantic),
1239 "moscow" => Some(TimeZone::Moscow),
1240 "muscat" => Some(TimeZone::Muscat),
1241 "newfoundland" => Some(TimeZone::Newfoundland),
1242 "samoa" => Some(TimeZone::Samoa),
1243 "sydney" => Some(TimeZone::Sydney),
1244 "tehran" => Some(TimeZone::Tehran),
1245 "tokyo" => Some(TimeZone::Tokyo),
1246 "us_alaska" => Some(TimeZone::UsAlaska),
1247 "us_atlantic" => Some(TimeZone::UsAtlantic),
1248 "us_central" => Some(TimeZone::UsCentral),
1249 "us_eastern" => Some(TimeZone::UsEastern),
1250 "us_hawaii" => Some(TimeZone::UsHawaii),
1251 "us_mountain" => Some(TimeZone::UsMountain),
1252 "us_pacific" => Some(TimeZone::UsPacific),
1253 "other" => Some(TimeZone::Other),
1254 "auckland" => Some(TimeZone::Auckland),
1255 "kathmandu" => Some(TimeZone::Kathmandu),
1256 "europe_western_wet" => Some(TimeZone::EuropeWesternWet),
1257 "europe_central_cet" => Some(TimeZone::EuropeCentralCet),
1258 "europe_eastern_eet" => Some(TimeZone::EuropeEasternEet),
1259 "jakarta" => Some(TimeZone::Jakarta),
1260 "perth" => Some(TimeZone::Perth),
1261 "adelaide" => Some(TimeZone::Adelaide),
1262 "brisbane" => Some(TimeZone::Brisbane),
1263 "tasmania" => Some(TimeZone::Tasmania),
1264 "iceland" => Some(TimeZone::Iceland),
1265 "amsterdam" => Some(TimeZone::Amsterdam),
1266 "athens" => Some(TimeZone::Athens),
1267 "barcelona" => Some(TimeZone::Barcelona),
1268 "berlin" => Some(TimeZone::Berlin),
1269 "brussels" => Some(TimeZone::Brussels),
1270 "budapest" => Some(TimeZone::Budapest),
1271 "copenhagen" => Some(TimeZone::Copenhagen),
1272 "dublin" => Some(TimeZone::Dublin),
1273 "helsinki" => Some(TimeZone::Helsinki),
1274 "lisbon" => Some(TimeZone::Lisbon),
1275 "london" => Some(TimeZone::London),
1276 "madrid" => Some(TimeZone::Madrid),
1277 "munich" => Some(TimeZone::Munich),
1278 "oslo" => Some(TimeZone::Oslo),
1279 "paris" => Some(TimeZone::Paris),
1280 "prague" => Some(TimeZone::Prague),
1281 "reykjavik" => Some(TimeZone::Reykjavik),
1282 "rome" => Some(TimeZone::Rome),
1283 "stockholm" => Some(TimeZone::Stockholm),
1284 "vienna" => Some(TimeZone::Vienna),
1285 "warsaw" => Some(TimeZone::Warsaw),
1286 "zurich" => Some(TimeZone::Zurich),
1287 "quebec" => Some(TimeZone::Quebec),
1288 "ontario" => Some(TimeZone::Ontario),
1289 "manitoba" => Some(TimeZone::Manitoba),
1290 "saskatchewan" => Some(TimeZone::Saskatchewan),
1291 "alberta" => Some(TimeZone::Alberta),
1292 "british_columbia" => Some(TimeZone::BritishColumbia),
1293 "boise" => Some(TimeZone::Boise),
1294 "boston" => Some(TimeZone::Boston),
1295 "chicago" => Some(TimeZone::Chicago),
1296 "dallas" => Some(TimeZone::Dallas),
1297 "denver" => Some(TimeZone::Denver),
1298 "kansas_city" => Some(TimeZone::KansasCity),
1299 "las_vegas" => Some(TimeZone::LasVegas),
1300 "los_angeles" => Some(TimeZone::LosAngeles),
1301 "miami" => Some(TimeZone::Miami),
1302 "minneapolis" => Some(TimeZone::Minneapolis),
1303 "new_york" => Some(TimeZone::NewYork),
1304 "new_orleans" => Some(TimeZone::NewOrleans),
1305 "phoenix" => Some(TimeZone::Phoenix),
1306 "santa_fe" => Some(TimeZone::SantaFe),
1307 "seattle" => Some(TimeZone::Seattle),
1308 "washington_dc" => Some(TimeZone::WashingtonDc),
1309 "us_arizona" => Some(TimeZone::UsArizona),
1310 "chita" => Some(TimeZone::Chita),
1311 "ekaterinburg" => Some(TimeZone::Ekaterinburg),
1312 "irkutsk" => Some(TimeZone::Irkutsk),
1313 "kaliningrad" => Some(TimeZone::Kaliningrad),
1314 "krasnoyarsk" => Some(TimeZone::Krasnoyarsk),
1315 "novosibirsk" => Some(TimeZone::Novosibirsk),
1316 "petropavlovsk_kamchatskiy" => Some(TimeZone::PetropavlovskKamchatskiy),
1317 "samara" => Some(TimeZone::Samara),
1318 "vladivostok" => Some(TimeZone::Vladivostok),
1319 "mexico_central" => Some(TimeZone::MexicoCentral),
1320 "mexico_mountain" => Some(TimeZone::MexicoMountain),
1321 "mexico_pacific" => Some(TimeZone::MexicoPacific),
1322 "cape_town" => Some(TimeZone::CapeTown),
1323 "winkhoek" => Some(TimeZone::Winkhoek),
1324 "lagos" => Some(TimeZone::Lagos),
1325 "riyahd" => Some(TimeZone::Riyahd),
1326 "venezuela" => Some(TimeZone::Venezuela),
1327 "australia_lh" => Some(TimeZone::AustraliaLh),
1328 "santiago" => Some(TimeZone::Santiago),
1329 "manual" => Some(TimeZone::Manual),
1330 "automatic" => Some(TimeZone::Automatic),
1331 _ => None,
1332 }
1333 }
1334}
1335
1336#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1337#[repr(u8)]
1338#[non_exhaustive]
1339pub enum DisplayMeasure {
1340 Metric = 0,
1341 Statute = 1,
1342 Nautical = 2,
1343}
1344
1345impl DisplayMeasure {
1346 pub fn as_str(&self) -> &'static str {
1348 match self {
1349 DisplayMeasure::Metric => "metric",
1350 DisplayMeasure::Statute => "statute",
1351 DisplayMeasure::Nautical => "nautical",
1352 }
1353 }
1354
1355 pub fn from_value(value: u8) -> Option<Self> {
1357 match value {
1358 0 => Some(DisplayMeasure::Metric),
1359 1 => Some(DisplayMeasure::Statute),
1360 2 => Some(DisplayMeasure::Nautical),
1361 _ => None,
1362 }
1363 }
1364
1365 pub fn from_str(name: &str) -> Option<Self> {
1367 match name {
1368 "metric" => Some(DisplayMeasure::Metric),
1369 "statute" => Some(DisplayMeasure::Statute),
1370 "nautical" => Some(DisplayMeasure::Nautical),
1371 _ => None,
1372 }
1373 }
1374}
1375
1376#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1377#[repr(u8)]
1378#[non_exhaustive]
1379pub enum DisplayHeart {
1380 Bpm = 0,
1381 Max = 1,
1382 Reserve = 2,
1383}
1384
1385impl DisplayHeart {
1386 pub fn as_str(&self) -> &'static str {
1388 match self {
1389 DisplayHeart::Bpm => "bpm",
1390 DisplayHeart::Max => "max",
1391 DisplayHeart::Reserve => "reserve",
1392 }
1393 }
1394
1395 pub fn from_value(value: u8) -> Option<Self> {
1397 match value {
1398 0 => Some(DisplayHeart::Bpm),
1399 1 => Some(DisplayHeart::Max),
1400 2 => Some(DisplayHeart::Reserve),
1401 _ => None,
1402 }
1403 }
1404
1405 pub fn from_str(name: &str) -> Option<Self> {
1407 match name {
1408 "bpm" => Some(DisplayHeart::Bpm),
1409 "max" => Some(DisplayHeart::Max),
1410 "reserve" => Some(DisplayHeart::Reserve),
1411 _ => None,
1412 }
1413 }
1414}
1415
1416#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1417#[repr(u8)]
1418#[non_exhaustive]
1419pub enum DisplayPower {
1420 Watts = 0,
1421 PercentFtp = 1,
1422}
1423
1424impl DisplayPower {
1425 pub fn as_str(&self) -> &'static str {
1427 match self {
1428 DisplayPower::Watts => "watts",
1429 DisplayPower::PercentFtp => "percent_ftp",
1430 }
1431 }
1432
1433 pub fn from_value(value: u8) -> Option<Self> {
1435 match value {
1436 0 => Some(DisplayPower::Watts),
1437 1 => Some(DisplayPower::PercentFtp),
1438 _ => None,
1439 }
1440 }
1441
1442 pub fn from_str(name: &str) -> Option<Self> {
1444 match name {
1445 "watts" => Some(DisplayPower::Watts),
1446 "percent_ftp" => Some(DisplayPower::PercentFtp),
1447 _ => None,
1448 }
1449 }
1450}
1451
1452#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1453#[repr(u8)]
1454#[non_exhaustive]
1455pub enum DisplayPosition {
1456 Degree = 0,
1457 DegreeMinute = 1,
1458 DegreeMinuteSecond = 2,
1459 AustrianGrid = 3,
1460 BritishGrid = 4,
1461 DutchGrid = 5,
1462 HungarianGrid = 6,
1463 FinnishGrid = 7,
1464 GermanGrid = 8,
1465 IcelandicGrid = 9,
1466 IndonesianEquatorial = 10,
1467 IndonesianIrian = 11,
1468 IndonesianSouthern = 12,
1469 IndiaZone0 = 13,
1470 IndiaZoneIA = 14,
1471 IndiaZoneIB = 15,
1472 IndiaZoneIIA = 16,
1473 IndiaZoneIIB = 17,
1474 IndiaZoneIIIA = 18,
1475 IndiaZoneIIIB = 19,
1476 IndiaZoneIVA = 20,
1477 IndiaZoneIVB = 21,
1478 IrishTransverse = 22,
1479 IrishGrid = 23,
1480 Loran = 24,
1481 MaidenheadGrid = 25,
1482 MgrsGrid = 26,
1483 NewZealandGrid = 27,
1484 NewZealandTransverse = 28,
1485 QatarGrid = 29,
1486 ModifiedSwedishGrid = 30,
1487 SwedishGrid = 31,
1488 SouthAfricanGrid = 32,
1489 SwissGrid = 33,
1490 TaiwanGrid = 34,
1491 UnitedStatesGrid = 35,
1492 UtmUpsGrid = 36,
1493 WestMalayan = 37,
1494 BorneoRso = 38,
1495 EstonianGrid = 39,
1496 LatvianGrid = 40,
1497 SwedishRef99Grid = 41,
1498}
1499
1500impl DisplayPosition {
1501 pub fn as_str(&self) -> &'static str {
1503 match self {
1504 DisplayPosition::Degree => "degree",
1505 DisplayPosition::DegreeMinute => "degree_minute",
1506 DisplayPosition::DegreeMinuteSecond => "degree_minute_second",
1507 DisplayPosition::AustrianGrid => "austrian_grid",
1508 DisplayPosition::BritishGrid => "british_grid",
1509 DisplayPosition::DutchGrid => "dutch_grid",
1510 DisplayPosition::HungarianGrid => "hungarian_grid",
1511 DisplayPosition::FinnishGrid => "finnish_grid",
1512 DisplayPosition::GermanGrid => "german_grid",
1513 DisplayPosition::IcelandicGrid => "icelandic_grid",
1514 DisplayPosition::IndonesianEquatorial => "indonesian_equatorial",
1515 DisplayPosition::IndonesianIrian => "indonesian_irian",
1516 DisplayPosition::IndonesianSouthern => "indonesian_southern",
1517 DisplayPosition::IndiaZone0 => "india_zone_0",
1518 DisplayPosition::IndiaZoneIA => "india_zone_IA",
1519 DisplayPosition::IndiaZoneIB => "india_zone_IB",
1520 DisplayPosition::IndiaZoneIIA => "india_zone_IIA",
1521 DisplayPosition::IndiaZoneIIB => "india_zone_IIB",
1522 DisplayPosition::IndiaZoneIIIA => "india_zone_IIIA",
1523 DisplayPosition::IndiaZoneIIIB => "india_zone_IIIB",
1524 DisplayPosition::IndiaZoneIVA => "india_zone_IVA",
1525 DisplayPosition::IndiaZoneIVB => "india_zone_IVB",
1526 DisplayPosition::IrishTransverse => "irish_transverse",
1527 DisplayPosition::IrishGrid => "irish_grid",
1528 DisplayPosition::Loran => "loran",
1529 DisplayPosition::MaidenheadGrid => "maidenhead_grid",
1530 DisplayPosition::MgrsGrid => "mgrs_grid",
1531 DisplayPosition::NewZealandGrid => "new_zealand_grid",
1532 DisplayPosition::NewZealandTransverse => "new_zealand_transverse",
1533 DisplayPosition::QatarGrid => "qatar_grid",
1534 DisplayPosition::ModifiedSwedishGrid => "modified_swedish_grid",
1535 DisplayPosition::SwedishGrid => "swedish_grid",
1536 DisplayPosition::SouthAfricanGrid => "south_african_grid",
1537 DisplayPosition::SwissGrid => "swiss_grid",
1538 DisplayPosition::TaiwanGrid => "taiwan_grid",
1539 DisplayPosition::UnitedStatesGrid => "united_states_grid",
1540 DisplayPosition::UtmUpsGrid => "utm_ups_grid",
1541 DisplayPosition::WestMalayan => "west_malayan",
1542 DisplayPosition::BorneoRso => "borneo_rso",
1543 DisplayPosition::EstonianGrid => "estonian_grid",
1544 DisplayPosition::LatvianGrid => "latvian_grid",
1545 DisplayPosition::SwedishRef99Grid => "swedish_ref_99_grid",
1546 }
1547 }
1548
1549 pub fn from_value(value: u8) -> Option<Self> {
1551 match value {
1552 0 => Some(DisplayPosition::Degree),
1553 1 => Some(DisplayPosition::DegreeMinute),
1554 2 => Some(DisplayPosition::DegreeMinuteSecond),
1555 3 => Some(DisplayPosition::AustrianGrid),
1556 4 => Some(DisplayPosition::BritishGrid),
1557 5 => Some(DisplayPosition::DutchGrid),
1558 6 => Some(DisplayPosition::HungarianGrid),
1559 7 => Some(DisplayPosition::FinnishGrid),
1560 8 => Some(DisplayPosition::GermanGrid),
1561 9 => Some(DisplayPosition::IcelandicGrid),
1562 10 => Some(DisplayPosition::IndonesianEquatorial),
1563 11 => Some(DisplayPosition::IndonesianIrian),
1564 12 => Some(DisplayPosition::IndonesianSouthern),
1565 13 => Some(DisplayPosition::IndiaZone0),
1566 14 => Some(DisplayPosition::IndiaZoneIA),
1567 15 => Some(DisplayPosition::IndiaZoneIB),
1568 16 => Some(DisplayPosition::IndiaZoneIIA),
1569 17 => Some(DisplayPosition::IndiaZoneIIB),
1570 18 => Some(DisplayPosition::IndiaZoneIIIA),
1571 19 => Some(DisplayPosition::IndiaZoneIIIB),
1572 20 => Some(DisplayPosition::IndiaZoneIVA),
1573 21 => Some(DisplayPosition::IndiaZoneIVB),
1574 22 => Some(DisplayPosition::IrishTransverse),
1575 23 => Some(DisplayPosition::IrishGrid),
1576 24 => Some(DisplayPosition::Loran),
1577 25 => Some(DisplayPosition::MaidenheadGrid),
1578 26 => Some(DisplayPosition::MgrsGrid),
1579 27 => Some(DisplayPosition::NewZealandGrid),
1580 28 => Some(DisplayPosition::NewZealandTransverse),
1581 29 => Some(DisplayPosition::QatarGrid),
1582 30 => Some(DisplayPosition::ModifiedSwedishGrid),
1583 31 => Some(DisplayPosition::SwedishGrid),
1584 32 => Some(DisplayPosition::SouthAfricanGrid),
1585 33 => Some(DisplayPosition::SwissGrid),
1586 34 => Some(DisplayPosition::TaiwanGrid),
1587 35 => Some(DisplayPosition::UnitedStatesGrid),
1588 36 => Some(DisplayPosition::UtmUpsGrid),
1589 37 => Some(DisplayPosition::WestMalayan),
1590 38 => Some(DisplayPosition::BorneoRso),
1591 39 => Some(DisplayPosition::EstonianGrid),
1592 40 => Some(DisplayPosition::LatvianGrid),
1593 41 => Some(DisplayPosition::SwedishRef99Grid),
1594 _ => None,
1595 }
1596 }
1597
1598 pub fn from_str(name: &str) -> Option<Self> {
1600 match name {
1601 "degree" => Some(DisplayPosition::Degree),
1602 "degree_minute" => Some(DisplayPosition::DegreeMinute),
1603 "degree_minute_second" => Some(DisplayPosition::DegreeMinuteSecond),
1604 "austrian_grid" => Some(DisplayPosition::AustrianGrid),
1605 "british_grid" => Some(DisplayPosition::BritishGrid),
1606 "dutch_grid" => Some(DisplayPosition::DutchGrid),
1607 "hungarian_grid" => Some(DisplayPosition::HungarianGrid),
1608 "finnish_grid" => Some(DisplayPosition::FinnishGrid),
1609 "german_grid" => Some(DisplayPosition::GermanGrid),
1610 "icelandic_grid" => Some(DisplayPosition::IcelandicGrid),
1611 "indonesian_equatorial" => Some(DisplayPosition::IndonesianEquatorial),
1612 "indonesian_irian" => Some(DisplayPosition::IndonesianIrian),
1613 "indonesian_southern" => Some(DisplayPosition::IndonesianSouthern),
1614 "india_zone_0" => Some(DisplayPosition::IndiaZone0),
1615 "india_zone_IA" => Some(DisplayPosition::IndiaZoneIA),
1616 "india_zone_IB" => Some(DisplayPosition::IndiaZoneIB),
1617 "india_zone_IIA" => Some(DisplayPosition::IndiaZoneIIA),
1618 "india_zone_IIB" => Some(DisplayPosition::IndiaZoneIIB),
1619 "india_zone_IIIA" => Some(DisplayPosition::IndiaZoneIIIA),
1620 "india_zone_IIIB" => Some(DisplayPosition::IndiaZoneIIIB),
1621 "india_zone_IVA" => Some(DisplayPosition::IndiaZoneIVA),
1622 "india_zone_IVB" => Some(DisplayPosition::IndiaZoneIVB),
1623 "irish_transverse" => Some(DisplayPosition::IrishTransverse),
1624 "irish_grid" => Some(DisplayPosition::IrishGrid),
1625 "loran" => Some(DisplayPosition::Loran),
1626 "maidenhead_grid" => Some(DisplayPosition::MaidenheadGrid),
1627 "mgrs_grid" => Some(DisplayPosition::MgrsGrid),
1628 "new_zealand_grid" => Some(DisplayPosition::NewZealandGrid),
1629 "new_zealand_transverse" => Some(DisplayPosition::NewZealandTransverse),
1630 "qatar_grid" => Some(DisplayPosition::QatarGrid),
1631 "modified_swedish_grid" => Some(DisplayPosition::ModifiedSwedishGrid),
1632 "swedish_grid" => Some(DisplayPosition::SwedishGrid),
1633 "south_african_grid" => Some(DisplayPosition::SouthAfricanGrid),
1634 "swiss_grid" => Some(DisplayPosition::SwissGrid),
1635 "taiwan_grid" => Some(DisplayPosition::TaiwanGrid),
1636 "united_states_grid" => Some(DisplayPosition::UnitedStatesGrid),
1637 "utm_ups_grid" => Some(DisplayPosition::UtmUpsGrid),
1638 "west_malayan" => Some(DisplayPosition::WestMalayan),
1639 "borneo_rso" => Some(DisplayPosition::BorneoRso),
1640 "estonian_grid" => Some(DisplayPosition::EstonianGrid),
1641 "latvian_grid" => Some(DisplayPosition::LatvianGrid),
1642 "swedish_ref_99_grid" => Some(DisplayPosition::SwedishRef99Grid),
1643 _ => None,
1644 }
1645 }
1646}
1647
1648#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1649#[repr(u8)]
1650#[non_exhaustive]
1651pub enum Switch {
1652 Off = 0,
1653 On = 1,
1654 Auto = 2,
1655}
1656
1657impl Switch {
1658 pub fn as_str(&self) -> &'static str {
1660 match self {
1661 Switch::Off => "off",
1662 Switch::On => "on",
1663 Switch::Auto => "auto",
1664 }
1665 }
1666
1667 pub fn from_value(value: u8) -> Option<Self> {
1669 match value {
1670 0 => Some(Switch::Off),
1671 1 => Some(Switch::On),
1672 2 => Some(Switch::Auto),
1673 _ => None,
1674 }
1675 }
1676
1677 pub fn from_str(name: &str) -> Option<Self> {
1679 match name {
1680 "off" => Some(Switch::Off),
1681 "on" => Some(Switch::On),
1682 "auto" => Some(Switch::Auto),
1683 _ => None,
1684 }
1685 }
1686}
1687
1688#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1689#[repr(u8)]
1690#[non_exhaustive]
1691pub enum Sport {
1692 Generic = 0,
1693 Running = 1,
1694 Cycling = 2,
1695 Transition = 3,
1696 FitnessEquipment = 4,
1697 Swimming = 5,
1698 Basketball = 6,
1699 Soccer = 7,
1700 Tennis = 8,
1701 AmericanFootball = 9,
1702 Training = 10,
1703 Walking = 11,
1704 CrossCountrySkiing = 12,
1705 AlpineSkiing = 13,
1706 Snowboarding = 14,
1707 Rowing = 15,
1708 Mountaineering = 16,
1709 Hiking = 17,
1710 Multisport = 18,
1711 Paddling = 19,
1712 Flying = 20,
1713 EBiking = 21,
1714 Motorcycling = 22,
1715 Boating = 23,
1716 Driving = 24,
1717 Golf = 25,
1718 HangGliding = 26,
1719 HorsebackRiding = 27,
1720 Hunting = 28,
1721 Fishing = 29,
1722 InlineSkating = 30,
1723 RockClimbing = 31,
1724 Sailing = 32,
1725 IceSkating = 33,
1726 SkyDiving = 34,
1727 Snowshoeing = 35,
1728 Snowmobiling = 36,
1729 StandUpPaddleboarding = 37,
1730 Surfing = 38,
1731 Wakeboarding = 39,
1732 WaterSkiing = 40,
1733 Kayaking = 41,
1734 Rafting = 42,
1735 Windsurfing = 43,
1736 Kitesurfing = 44,
1737 Tactical = 45,
1738 Jumpmaster = 46,
1739 Boxing = 47,
1740 FloorClimbing = 48,
1741 Baseball = 49,
1742 Diving = 53,
1743 Shooting = 56,
1744 WinterSport = 58,
1745 Grinding = 59,
1746 Hiit = 62,
1747 VideoGaming = 63,
1748 Racket = 64,
1749 WheelchairPushWalk = 65,
1750 WheelchairPushRun = 66,
1751 Meditation = 67,
1752 ParaSport = 68,
1753 DiscGolf = 69,
1754 TeamSport = 70,
1755 Cricket = 71,
1756 Rugby = 72,
1757 Hockey = 73,
1758 Lacrosse = 74,
1759 Volleyball = 75,
1760 WaterTubing = 76,
1761 Wakesurfing = 77,
1762 WaterSport = 78,
1763 Archery = 79,
1764 MixedMartialArts = 80,
1765 MotorSports = 81,
1766 Snorkeling = 82,
1767 Dance = 83,
1768 JumpRope = 84,
1769 PoolApnea = 85,
1770 Mobility = 86,
1771 Geocaching = 87,
1772 Canoeing = 88,
1773 All = 254,
1774}
1775
1776impl Sport {
1777 pub fn as_str(&self) -> &'static str {
1779 match self {
1780 Sport::Generic => "generic",
1781 Sport::Running => "running",
1782 Sport::Cycling => "cycling",
1783 Sport::Transition => "transition",
1784 Sport::FitnessEquipment => "fitness_equipment",
1785 Sport::Swimming => "swimming",
1786 Sport::Basketball => "basketball",
1787 Sport::Soccer => "soccer",
1788 Sport::Tennis => "tennis",
1789 Sport::AmericanFootball => "american_football",
1790 Sport::Training => "training",
1791 Sport::Walking => "walking",
1792 Sport::CrossCountrySkiing => "cross_country_skiing",
1793 Sport::AlpineSkiing => "alpine_skiing",
1794 Sport::Snowboarding => "snowboarding",
1795 Sport::Rowing => "rowing",
1796 Sport::Mountaineering => "mountaineering",
1797 Sport::Hiking => "hiking",
1798 Sport::Multisport => "multisport",
1799 Sport::Paddling => "paddling",
1800 Sport::Flying => "flying",
1801 Sport::EBiking => "e_biking",
1802 Sport::Motorcycling => "motorcycling",
1803 Sport::Boating => "boating",
1804 Sport::Driving => "driving",
1805 Sport::Golf => "golf",
1806 Sport::HangGliding => "hang_gliding",
1807 Sport::HorsebackRiding => "horseback_riding",
1808 Sport::Hunting => "hunting",
1809 Sport::Fishing => "fishing",
1810 Sport::InlineSkating => "inline_skating",
1811 Sport::RockClimbing => "rock_climbing",
1812 Sport::Sailing => "sailing",
1813 Sport::IceSkating => "ice_skating",
1814 Sport::SkyDiving => "sky_diving",
1815 Sport::Snowshoeing => "snowshoeing",
1816 Sport::Snowmobiling => "snowmobiling",
1817 Sport::StandUpPaddleboarding => "stand_up_paddleboarding",
1818 Sport::Surfing => "surfing",
1819 Sport::Wakeboarding => "wakeboarding",
1820 Sport::WaterSkiing => "water_skiing",
1821 Sport::Kayaking => "kayaking",
1822 Sport::Rafting => "rafting",
1823 Sport::Windsurfing => "windsurfing",
1824 Sport::Kitesurfing => "kitesurfing",
1825 Sport::Tactical => "tactical",
1826 Sport::Jumpmaster => "jumpmaster",
1827 Sport::Boxing => "boxing",
1828 Sport::FloorClimbing => "floor_climbing",
1829 Sport::Baseball => "baseball",
1830 Sport::Diving => "diving",
1831 Sport::Shooting => "shooting",
1832 Sport::WinterSport => "winter_sport",
1833 Sport::Grinding => "grinding",
1834 Sport::Hiit => "hiit",
1835 Sport::VideoGaming => "video_gaming",
1836 Sport::Racket => "racket",
1837 Sport::WheelchairPushWalk => "wheelchair_push_walk",
1838 Sport::WheelchairPushRun => "wheelchair_push_run",
1839 Sport::Meditation => "meditation",
1840 Sport::ParaSport => "para_sport",
1841 Sport::DiscGolf => "disc_golf",
1842 Sport::TeamSport => "team_sport",
1843 Sport::Cricket => "cricket",
1844 Sport::Rugby => "rugby",
1845 Sport::Hockey => "hockey",
1846 Sport::Lacrosse => "lacrosse",
1847 Sport::Volleyball => "volleyball",
1848 Sport::WaterTubing => "water_tubing",
1849 Sport::Wakesurfing => "wakesurfing",
1850 Sport::WaterSport => "water_sport",
1851 Sport::Archery => "archery",
1852 Sport::MixedMartialArts => "mixed_martial_arts",
1853 Sport::MotorSports => "motor_sports",
1854 Sport::Snorkeling => "snorkeling",
1855 Sport::Dance => "dance",
1856 Sport::JumpRope => "jump_rope",
1857 Sport::PoolApnea => "pool_apnea",
1858 Sport::Mobility => "mobility",
1859 Sport::Geocaching => "geocaching",
1860 Sport::Canoeing => "canoeing",
1861 Sport::All => "all",
1862 }
1863 }
1864
1865 pub fn from_value(value: u8) -> Option<Self> {
1867 match value {
1868 0 => Some(Sport::Generic),
1869 1 => Some(Sport::Running),
1870 2 => Some(Sport::Cycling),
1871 3 => Some(Sport::Transition),
1872 4 => Some(Sport::FitnessEquipment),
1873 5 => Some(Sport::Swimming),
1874 6 => Some(Sport::Basketball),
1875 7 => Some(Sport::Soccer),
1876 8 => Some(Sport::Tennis),
1877 9 => Some(Sport::AmericanFootball),
1878 10 => Some(Sport::Training),
1879 11 => Some(Sport::Walking),
1880 12 => Some(Sport::CrossCountrySkiing),
1881 13 => Some(Sport::AlpineSkiing),
1882 14 => Some(Sport::Snowboarding),
1883 15 => Some(Sport::Rowing),
1884 16 => Some(Sport::Mountaineering),
1885 17 => Some(Sport::Hiking),
1886 18 => Some(Sport::Multisport),
1887 19 => Some(Sport::Paddling),
1888 20 => Some(Sport::Flying),
1889 21 => Some(Sport::EBiking),
1890 22 => Some(Sport::Motorcycling),
1891 23 => Some(Sport::Boating),
1892 24 => Some(Sport::Driving),
1893 25 => Some(Sport::Golf),
1894 26 => Some(Sport::HangGliding),
1895 27 => Some(Sport::HorsebackRiding),
1896 28 => Some(Sport::Hunting),
1897 29 => Some(Sport::Fishing),
1898 30 => Some(Sport::InlineSkating),
1899 31 => Some(Sport::RockClimbing),
1900 32 => Some(Sport::Sailing),
1901 33 => Some(Sport::IceSkating),
1902 34 => Some(Sport::SkyDiving),
1903 35 => Some(Sport::Snowshoeing),
1904 36 => Some(Sport::Snowmobiling),
1905 37 => Some(Sport::StandUpPaddleboarding),
1906 38 => Some(Sport::Surfing),
1907 39 => Some(Sport::Wakeboarding),
1908 40 => Some(Sport::WaterSkiing),
1909 41 => Some(Sport::Kayaking),
1910 42 => Some(Sport::Rafting),
1911 43 => Some(Sport::Windsurfing),
1912 44 => Some(Sport::Kitesurfing),
1913 45 => Some(Sport::Tactical),
1914 46 => Some(Sport::Jumpmaster),
1915 47 => Some(Sport::Boxing),
1916 48 => Some(Sport::FloorClimbing),
1917 49 => Some(Sport::Baseball),
1918 53 => Some(Sport::Diving),
1919 56 => Some(Sport::Shooting),
1920 58 => Some(Sport::WinterSport),
1921 59 => Some(Sport::Grinding),
1922 62 => Some(Sport::Hiit),
1923 63 => Some(Sport::VideoGaming),
1924 64 => Some(Sport::Racket),
1925 65 => Some(Sport::WheelchairPushWalk),
1926 66 => Some(Sport::WheelchairPushRun),
1927 67 => Some(Sport::Meditation),
1928 68 => Some(Sport::ParaSport),
1929 69 => Some(Sport::DiscGolf),
1930 70 => Some(Sport::TeamSport),
1931 71 => Some(Sport::Cricket),
1932 72 => Some(Sport::Rugby),
1933 73 => Some(Sport::Hockey),
1934 74 => Some(Sport::Lacrosse),
1935 75 => Some(Sport::Volleyball),
1936 76 => Some(Sport::WaterTubing),
1937 77 => Some(Sport::Wakesurfing),
1938 78 => Some(Sport::WaterSport),
1939 79 => Some(Sport::Archery),
1940 80 => Some(Sport::MixedMartialArts),
1941 81 => Some(Sport::MotorSports),
1942 82 => Some(Sport::Snorkeling),
1943 83 => Some(Sport::Dance),
1944 84 => Some(Sport::JumpRope),
1945 85 => Some(Sport::PoolApnea),
1946 86 => Some(Sport::Mobility),
1947 87 => Some(Sport::Geocaching),
1948 88 => Some(Sport::Canoeing),
1949 254 => Some(Sport::All),
1950 _ => None,
1951 }
1952 }
1953
1954 pub fn from_str(name: &str) -> Option<Self> {
1956 match name {
1957 "generic" => Some(Sport::Generic),
1958 "running" => Some(Sport::Running),
1959 "cycling" => Some(Sport::Cycling),
1960 "transition" => Some(Sport::Transition),
1961 "fitness_equipment" => Some(Sport::FitnessEquipment),
1962 "swimming" => Some(Sport::Swimming),
1963 "basketball" => Some(Sport::Basketball),
1964 "soccer" => Some(Sport::Soccer),
1965 "tennis" => Some(Sport::Tennis),
1966 "american_football" => Some(Sport::AmericanFootball),
1967 "training" => Some(Sport::Training),
1968 "walking" => Some(Sport::Walking),
1969 "cross_country_skiing" => Some(Sport::CrossCountrySkiing),
1970 "alpine_skiing" => Some(Sport::AlpineSkiing),
1971 "snowboarding" => Some(Sport::Snowboarding),
1972 "rowing" => Some(Sport::Rowing),
1973 "mountaineering" => Some(Sport::Mountaineering),
1974 "hiking" => Some(Sport::Hiking),
1975 "multisport" => Some(Sport::Multisport),
1976 "paddling" => Some(Sport::Paddling),
1977 "flying" => Some(Sport::Flying),
1978 "e_biking" => Some(Sport::EBiking),
1979 "motorcycling" => Some(Sport::Motorcycling),
1980 "boating" => Some(Sport::Boating),
1981 "driving" => Some(Sport::Driving),
1982 "golf" => Some(Sport::Golf),
1983 "hang_gliding" => Some(Sport::HangGliding),
1984 "horseback_riding" => Some(Sport::HorsebackRiding),
1985 "hunting" => Some(Sport::Hunting),
1986 "fishing" => Some(Sport::Fishing),
1987 "inline_skating" => Some(Sport::InlineSkating),
1988 "rock_climbing" => Some(Sport::RockClimbing),
1989 "sailing" => Some(Sport::Sailing),
1990 "ice_skating" => Some(Sport::IceSkating),
1991 "sky_diving" => Some(Sport::SkyDiving),
1992 "snowshoeing" => Some(Sport::Snowshoeing),
1993 "snowmobiling" => Some(Sport::Snowmobiling),
1994 "stand_up_paddleboarding" => Some(Sport::StandUpPaddleboarding),
1995 "surfing" => Some(Sport::Surfing),
1996 "wakeboarding" => Some(Sport::Wakeboarding),
1997 "water_skiing" => Some(Sport::WaterSkiing),
1998 "kayaking" => Some(Sport::Kayaking),
1999 "rafting" => Some(Sport::Rafting),
2000 "windsurfing" => Some(Sport::Windsurfing),
2001 "kitesurfing" => Some(Sport::Kitesurfing),
2002 "tactical" => Some(Sport::Tactical),
2003 "jumpmaster" => Some(Sport::Jumpmaster),
2004 "boxing" => Some(Sport::Boxing),
2005 "floor_climbing" => Some(Sport::FloorClimbing),
2006 "baseball" => Some(Sport::Baseball),
2007 "diving" => Some(Sport::Diving),
2008 "shooting" => Some(Sport::Shooting),
2009 "winter_sport" => Some(Sport::WinterSport),
2010 "grinding" => Some(Sport::Grinding),
2011 "hiit" => Some(Sport::Hiit),
2012 "video_gaming" => Some(Sport::VideoGaming),
2013 "racket" => Some(Sport::Racket),
2014 "wheelchair_push_walk" => Some(Sport::WheelchairPushWalk),
2015 "wheelchair_push_run" => Some(Sport::WheelchairPushRun),
2016 "meditation" => Some(Sport::Meditation),
2017 "para_sport" => Some(Sport::ParaSport),
2018 "disc_golf" => Some(Sport::DiscGolf),
2019 "team_sport" => Some(Sport::TeamSport),
2020 "cricket" => Some(Sport::Cricket),
2021 "rugby" => Some(Sport::Rugby),
2022 "hockey" => Some(Sport::Hockey),
2023 "lacrosse" => Some(Sport::Lacrosse),
2024 "volleyball" => Some(Sport::Volleyball),
2025 "water_tubing" => Some(Sport::WaterTubing),
2026 "wakesurfing" => Some(Sport::Wakesurfing),
2027 "water_sport" => Some(Sport::WaterSport),
2028 "archery" => Some(Sport::Archery),
2029 "mixed_martial_arts" => Some(Sport::MixedMartialArts),
2030 "motor_sports" => Some(Sport::MotorSports),
2031 "snorkeling" => Some(Sport::Snorkeling),
2032 "dance" => Some(Sport::Dance),
2033 "jump_rope" => Some(Sport::JumpRope),
2034 "pool_apnea" => Some(Sport::PoolApnea),
2035 "mobility" => Some(Sport::Mobility),
2036 "geocaching" => Some(Sport::Geocaching),
2037 "canoeing" => Some(Sport::Canoeing),
2038 "all" => Some(Sport::All),
2039 _ => None,
2040 }
2041 }
2042}
2043
2044#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2045#[repr(u8)]
2046#[non_exhaustive]
2047pub enum SportBits0 {
2048 Generic = 1,
2049 Running = 2,
2050 Cycling = 4,
2051 Transition = 8,
2052 FitnessEquipment = 16,
2053 Swimming = 32,
2054 Basketball = 64,
2055 Soccer = 128,
2056}
2057
2058impl SportBits0 {
2059 pub fn as_str(&self) -> &'static str {
2061 match self {
2062 SportBits0::Generic => "generic",
2063 SportBits0::Running => "running",
2064 SportBits0::Cycling => "cycling",
2065 SportBits0::Transition => "transition",
2066 SportBits0::FitnessEquipment => "fitness_equipment",
2067 SportBits0::Swimming => "swimming",
2068 SportBits0::Basketball => "basketball",
2069 SportBits0::Soccer => "soccer",
2070 }
2071 }
2072
2073 pub fn from_value(value: u8) -> Option<Self> {
2075 match value {
2076 1 => Some(SportBits0::Generic),
2077 2 => Some(SportBits0::Running),
2078 4 => Some(SportBits0::Cycling),
2079 8 => Some(SportBits0::Transition),
2080 16 => Some(SportBits0::FitnessEquipment),
2081 32 => Some(SportBits0::Swimming),
2082 64 => Some(SportBits0::Basketball),
2083 128 => Some(SportBits0::Soccer),
2084 _ => None,
2085 }
2086 }
2087
2088 pub fn from_str(name: &str) -> Option<Self> {
2090 match name {
2091 "generic" => Some(SportBits0::Generic),
2092 "running" => Some(SportBits0::Running),
2093 "cycling" => Some(SportBits0::Cycling),
2094 "transition" => Some(SportBits0::Transition),
2095 "fitness_equipment" => Some(SportBits0::FitnessEquipment),
2096 "swimming" => Some(SportBits0::Swimming),
2097 "basketball" => Some(SportBits0::Basketball),
2098 "soccer" => Some(SportBits0::Soccer),
2099 _ => None,
2100 }
2101 }
2102}
2103
2104#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2105#[repr(u8)]
2106#[non_exhaustive]
2107pub enum SportBits1 {
2108 Tennis = 1,
2109 AmericanFootball = 2,
2110 Training = 4,
2111 Walking = 8,
2112 CrossCountrySkiing = 16,
2113 AlpineSkiing = 32,
2114 Snowboarding = 64,
2115 Rowing = 128,
2116}
2117
2118impl SportBits1 {
2119 pub fn as_str(&self) -> &'static str {
2121 match self {
2122 SportBits1::Tennis => "tennis",
2123 SportBits1::AmericanFootball => "american_football",
2124 SportBits1::Training => "training",
2125 SportBits1::Walking => "walking",
2126 SportBits1::CrossCountrySkiing => "cross_country_skiing",
2127 SportBits1::AlpineSkiing => "alpine_skiing",
2128 SportBits1::Snowboarding => "snowboarding",
2129 SportBits1::Rowing => "rowing",
2130 }
2131 }
2132
2133 pub fn from_value(value: u8) -> Option<Self> {
2135 match value {
2136 1 => Some(SportBits1::Tennis),
2137 2 => Some(SportBits1::AmericanFootball),
2138 4 => Some(SportBits1::Training),
2139 8 => Some(SportBits1::Walking),
2140 16 => Some(SportBits1::CrossCountrySkiing),
2141 32 => Some(SportBits1::AlpineSkiing),
2142 64 => Some(SportBits1::Snowboarding),
2143 128 => Some(SportBits1::Rowing),
2144 _ => None,
2145 }
2146 }
2147
2148 pub fn from_str(name: &str) -> Option<Self> {
2150 match name {
2151 "tennis" => Some(SportBits1::Tennis),
2152 "american_football" => Some(SportBits1::AmericanFootball),
2153 "training" => Some(SportBits1::Training),
2154 "walking" => Some(SportBits1::Walking),
2155 "cross_country_skiing" => Some(SportBits1::CrossCountrySkiing),
2156 "alpine_skiing" => Some(SportBits1::AlpineSkiing),
2157 "snowboarding" => Some(SportBits1::Snowboarding),
2158 "rowing" => Some(SportBits1::Rowing),
2159 _ => None,
2160 }
2161 }
2162}
2163
2164#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2165#[repr(u8)]
2166#[non_exhaustive]
2167pub enum SportBits2 {
2168 Mountaineering = 1,
2169 Hiking = 2,
2170 Multisport = 4,
2171 Paddling = 8,
2172 Flying = 16,
2173 EBiking = 32,
2174 Motorcycling = 64,
2175 Boating = 128,
2176}
2177
2178impl SportBits2 {
2179 pub fn as_str(&self) -> &'static str {
2181 match self {
2182 SportBits2::Mountaineering => "mountaineering",
2183 SportBits2::Hiking => "hiking",
2184 SportBits2::Multisport => "multisport",
2185 SportBits2::Paddling => "paddling",
2186 SportBits2::Flying => "flying",
2187 SportBits2::EBiking => "e_biking",
2188 SportBits2::Motorcycling => "motorcycling",
2189 SportBits2::Boating => "boating",
2190 }
2191 }
2192
2193 pub fn from_value(value: u8) -> Option<Self> {
2195 match value {
2196 1 => Some(SportBits2::Mountaineering),
2197 2 => Some(SportBits2::Hiking),
2198 4 => Some(SportBits2::Multisport),
2199 8 => Some(SportBits2::Paddling),
2200 16 => Some(SportBits2::Flying),
2201 32 => Some(SportBits2::EBiking),
2202 64 => Some(SportBits2::Motorcycling),
2203 128 => Some(SportBits2::Boating),
2204 _ => None,
2205 }
2206 }
2207
2208 pub fn from_str(name: &str) -> Option<Self> {
2210 match name {
2211 "mountaineering" => Some(SportBits2::Mountaineering),
2212 "hiking" => Some(SportBits2::Hiking),
2213 "multisport" => Some(SportBits2::Multisport),
2214 "paddling" => Some(SportBits2::Paddling),
2215 "flying" => Some(SportBits2::Flying),
2216 "e_biking" => Some(SportBits2::EBiking),
2217 "motorcycling" => Some(SportBits2::Motorcycling),
2218 "boating" => Some(SportBits2::Boating),
2219 _ => None,
2220 }
2221 }
2222}
2223
2224#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2225#[repr(u8)]
2226#[non_exhaustive]
2227pub enum SportBits3 {
2228 Driving = 1,
2229 Golf = 2,
2230 HangGliding = 4,
2231 HorsebackRiding = 8,
2232 Hunting = 16,
2233 Fishing = 32,
2234 InlineSkating = 64,
2235 RockClimbing = 128,
2236}
2237
2238impl SportBits3 {
2239 pub fn as_str(&self) -> &'static str {
2241 match self {
2242 SportBits3::Driving => "driving",
2243 SportBits3::Golf => "golf",
2244 SportBits3::HangGliding => "hang_gliding",
2245 SportBits3::HorsebackRiding => "horseback_riding",
2246 SportBits3::Hunting => "hunting",
2247 SportBits3::Fishing => "fishing",
2248 SportBits3::InlineSkating => "inline_skating",
2249 SportBits3::RockClimbing => "rock_climbing",
2250 }
2251 }
2252
2253 pub fn from_value(value: u8) -> Option<Self> {
2255 match value {
2256 1 => Some(SportBits3::Driving),
2257 2 => Some(SportBits3::Golf),
2258 4 => Some(SportBits3::HangGliding),
2259 8 => Some(SportBits3::HorsebackRiding),
2260 16 => Some(SportBits3::Hunting),
2261 32 => Some(SportBits3::Fishing),
2262 64 => Some(SportBits3::InlineSkating),
2263 128 => Some(SportBits3::RockClimbing),
2264 _ => None,
2265 }
2266 }
2267
2268 pub fn from_str(name: &str) -> Option<Self> {
2270 match name {
2271 "driving" => Some(SportBits3::Driving),
2272 "golf" => Some(SportBits3::Golf),
2273 "hang_gliding" => Some(SportBits3::HangGliding),
2274 "horseback_riding" => Some(SportBits3::HorsebackRiding),
2275 "hunting" => Some(SportBits3::Hunting),
2276 "fishing" => Some(SportBits3::Fishing),
2277 "inline_skating" => Some(SportBits3::InlineSkating),
2278 "rock_climbing" => Some(SportBits3::RockClimbing),
2279 _ => None,
2280 }
2281 }
2282}
2283
2284#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2285#[repr(u8)]
2286#[non_exhaustive]
2287pub enum SportBits4 {
2288 Sailing = 1,
2289 IceSkating = 2,
2290 SkyDiving = 4,
2291 Snowshoeing = 8,
2292 Snowmobiling = 16,
2293 StandUpPaddleboarding = 32,
2294 Surfing = 64,
2295 Wakeboarding = 128,
2296}
2297
2298impl SportBits4 {
2299 pub fn as_str(&self) -> &'static str {
2301 match self {
2302 SportBits4::Sailing => "sailing",
2303 SportBits4::IceSkating => "ice_skating",
2304 SportBits4::SkyDiving => "sky_diving",
2305 SportBits4::Snowshoeing => "snowshoeing",
2306 SportBits4::Snowmobiling => "snowmobiling",
2307 SportBits4::StandUpPaddleboarding => "stand_up_paddleboarding",
2308 SportBits4::Surfing => "surfing",
2309 SportBits4::Wakeboarding => "wakeboarding",
2310 }
2311 }
2312
2313 pub fn from_value(value: u8) -> Option<Self> {
2315 match value {
2316 1 => Some(SportBits4::Sailing),
2317 2 => Some(SportBits4::IceSkating),
2318 4 => Some(SportBits4::SkyDiving),
2319 8 => Some(SportBits4::Snowshoeing),
2320 16 => Some(SportBits4::Snowmobiling),
2321 32 => Some(SportBits4::StandUpPaddleboarding),
2322 64 => Some(SportBits4::Surfing),
2323 128 => Some(SportBits4::Wakeboarding),
2324 _ => None,
2325 }
2326 }
2327
2328 pub fn from_str(name: &str) -> Option<Self> {
2330 match name {
2331 "sailing" => Some(SportBits4::Sailing),
2332 "ice_skating" => Some(SportBits4::IceSkating),
2333 "sky_diving" => Some(SportBits4::SkyDiving),
2334 "snowshoeing" => Some(SportBits4::Snowshoeing),
2335 "snowmobiling" => Some(SportBits4::Snowmobiling),
2336 "stand_up_paddleboarding" => Some(SportBits4::StandUpPaddleboarding),
2337 "surfing" => Some(SportBits4::Surfing),
2338 "wakeboarding" => Some(SportBits4::Wakeboarding),
2339 _ => None,
2340 }
2341 }
2342}
2343
2344#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2345#[repr(u8)]
2346#[non_exhaustive]
2347pub enum SportBits5 {
2348 WaterSkiing = 1,
2349 Kayaking = 2,
2350 Rafting = 4,
2351 Windsurfing = 8,
2352 Kitesurfing = 16,
2353 Tactical = 32,
2354 Jumpmaster = 64,
2355 Boxing = 128,
2356}
2357
2358impl SportBits5 {
2359 pub fn as_str(&self) -> &'static str {
2361 match self {
2362 SportBits5::WaterSkiing => "water_skiing",
2363 SportBits5::Kayaking => "kayaking",
2364 SportBits5::Rafting => "rafting",
2365 SportBits5::Windsurfing => "windsurfing",
2366 SportBits5::Kitesurfing => "kitesurfing",
2367 SportBits5::Tactical => "tactical",
2368 SportBits5::Jumpmaster => "jumpmaster",
2369 SportBits5::Boxing => "boxing",
2370 }
2371 }
2372
2373 pub fn from_value(value: u8) -> Option<Self> {
2375 match value {
2376 1 => Some(SportBits5::WaterSkiing),
2377 2 => Some(SportBits5::Kayaking),
2378 4 => Some(SportBits5::Rafting),
2379 8 => Some(SportBits5::Windsurfing),
2380 16 => Some(SportBits5::Kitesurfing),
2381 32 => Some(SportBits5::Tactical),
2382 64 => Some(SportBits5::Jumpmaster),
2383 128 => Some(SportBits5::Boxing),
2384 _ => None,
2385 }
2386 }
2387
2388 pub fn from_str(name: &str) -> Option<Self> {
2390 match name {
2391 "water_skiing" => Some(SportBits5::WaterSkiing),
2392 "kayaking" => Some(SportBits5::Kayaking),
2393 "rafting" => Some(SportBits5::Rafting),
2394 "windsurfing" => Some(SportBits5::Windsurfing),
2395 "kitesurfing" => Some(SportBits5::Kitesurfing),
2396 "tactical" => Some(SportBits5::Tactical),
2397 "jumpmaster" => Some(SportBits5::Jumpmaster),
2398 "boxing" => Some(SportBits5::Boxing),
2399 _ => None,
2400 }
2401 }
2402}
2403
2404#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2405#[repr(u8)]
2406#[non_exhaustive]
2407pub enum SportBits6 {
2408 FloorClimbing = 1,
2409}
2410
2411impl SportBits6 {
2412 pub fn as_str(&self) -> &'static str {
2414 match self {
2415 SportBits6::FloorClimbing => "floor_climbing",
2416 }
2417 }
2418
2419 pub fn from_value(value: u8) -> Option<Self> {
2421 match value {
2422 1 => Some(SportBits6::FloorClimbing),
2423 _ => None,
2424 }
2425 }
2426
2427 pub fn from_str(name: &str) -> Option<Self> {
2429 match name {
2430 "floor_climbing" => Some(SportBits6::FloorClimbing),
2431 _ => None,
2432 }
2433 }
2434}
2435
2436#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2437#[repr(u8)]
2438#[non_exhaustive]
2439pub enum SubSport {
2440 Generic = 0,
2441 Treadmill = 1,
2442 Street = 2,
2443 Trail = 3,
2444 Track = 4,
2445 Spin = 5,
2446 IndoorCycling = 6,
2447 Road = 7,
2448 Mountain = 8,
2449 Downhill = 9,
2450 Recumbent = 10,
2451 Cyclocross = 11,
2452 HandCycling = 12,
2453 TrackCycling = 13,
2454 IndoorRowing = 14,
2455 Elliptical = 15,
2456 StairClimbing = 16,
2457 LapSwimming = 17,
2458 OpenWater = 18,
2459 FlexibilityTraining = 19,
2460 StrengthTraining = 20,
2461 WarmUp = 21,
2462 Match = 22,
2463 Exercise = 23,
2464 Challenge = 24,
2465 IndoorSkiing = 25,
2466 CardioTraining = 26,
2467 IndoorWalking = 27,
2468 EBikeFitness = 28,
2469 Bmx = 29,
2470 CasualWalking = 30,
2471 SpeedWalking = 31,
2472 BikeToRunTransition = 32,
2473 RunToBikeTransition = 33,
2474 SwimToBikeTransition = 34,
2475 Atv = 35,
2476 Motocross = 36,
2477 Backcountry = 37,
2478 Resort = 38,
2479 RcDrone = 39,
2480 Wingsuit = 40,
2481 Whitewater = 41,
2482 SkateSkiing = 42,
2483 Yoga = 43,
2484 Pilates = 44,
2485 IndoorRunning = 45,
2486 GravelCycling = 46,
2487 EBikeMountain = 47,
2488 Commuting = 48,
2489 MixedSurface = 49,
2490 Navigate = 50,
2491 TrackMe = 51,
2492 Map = 52,
2493 SingleGasDiving = 53,
2494 MultiGasDiving = 54,
2495 GaugeDiving = 55,
2496 ApneaDiving = 56,
2497 ApneaHunting = 57,
2498 VirtualActivity = 58,
2499 Obstacle = 59,
2500 Breathing = 62,
2501 CcrDiving = 63,
2502 SailRace = 65,
2503 Expedition = 66,
2504 Ultra = 67,
2505 IndoorClimbing = 68,
2506 Bouldering = 69,
2507 Hiit = 70,
2508 IndoorGrinding = 71,
2509 HuntingWithDogs = 72,
2510 Amrap = 73,
2511 Emom = 74,
2512 Tabata = 75,
2513 Esport = 77,
2514 Triathlon = 78,
2515 Duathlon = 79,
2516 Brick = 80,
2517 SwimRun = 81,
2518 AdventureRace = 82,
2519 TruckerWorkout = 83,
2520 Pickleball = 84,
2521 Padel = 85,
2522 IndoorWheelchairWalk = 86,
2523 IndoorWheelchairRun = 87,
2524 IndoorHandCycling = 88,
2525 Field = 90,
2526 Ice = 91,
2527 Ultimate = 92,
2528 Platform = 93,
2529 Squash = 94,
2530 Badminton = 95,
2531 Racquetball = 96,
2532 TableTennis = 97,
2533 Overland = 98,
2534 TrollingMotor = 99,
2535 FlyCanopy = 110,
2536 FlyParaglide = 111,
2537 FlyParamotor = 112,
2538 FlyPressurized = 113,
2539 FlyNavigate = 114,
2540 FlyTimer = 115,
2541 FlyAltimeter = 116,
2542 FlyWx = 117,
2543 FlyVfr = 118,
2544 FlyIfr = 119,
2545 DynamicApnea = 121,
2546 Enduro = 123,
2547 Rucking = 124,
2548 Rally = 125,
2549 PoolTriathlon = 126,
2550 EBikeEnduro = 127,
2551 All = 254,
2552}
2553
2554impl SubSport {
2555 pub fn as_str(&self) -> &'static str {
2557 match self {
2558 SubSport::Generic => "generic",
2559 SubSport::Treadmill => "treadmill",
2560 SubSport::Street => "street",
2561 SubSport::Trail => "trail",
2562 SubSport::Track => "track",
2563 SubSport::Spin => "spin",
2564 SubSport::IndoorCycling => "indoor_cycling",
2565 SubSport::Road => "road",
2566 SubSport::Mountain => "mountain",
2567 SubSport::Downhill => "downhill",
2568 SubSport::Recumbent => "recumbent",
2569 SubSport::Cyclocross => "cyclocross",
2570 SubSport::HandCycling => "hand_cycling",
2571 SubSport::TrackCycling => "track_cycling",
2572 SubSport::IndoorRowing => "indoor_rowing",
2573 SubSport::Elliptical => "elliptical",
2574 SubSport::StairClimbing => "stair_climbing",
2575 SubSport::LapSwimming => "lap_swimming",
2576 SubSport::OpenWater => "open_water",
2577 SubSport::FlexibilityTraining => "flexibility_training",
2578 SubSport::StrengthTraining => "strength_training",
2579 SubSport::WarmUp => "warm_up",
2580 SubSport::Match => "match",
2581 SubSport::Exercise => "exercise",
2582 SubSport::Challenge => "challenge",
2583 SubSport::IndoorSkiing => "indoor_skiing",
2584 SubSport::CardioTraining => "cardio_training",
2585 SubSport::IndoorWalking => "indoor_walking",
2586 SubSport::EBikeFitness => "e_bike_fitness",
2587 SubSport::Bmx => "bmx",
2588 SubSport::CasualWalking => "casual_walking",
2589 SubSport::SpeedWalking => "speed_walking",
2590 SubSport::BikeToRunTransition => "bike_to_run_transition",
2591 SubSport::RunToBikeTransition => "run_to_bike_transition",
2592 SubSport::SwimToBikeTransition => "swim_to_bike_transition",
2593 SubSport::Atv => "atv",
2594 SubSport::Motocross => "motocross",
2595 SubSport::Backcountry => "backcountry",
2596 SubSport::Resort => "resort",
2597 SubSport::RcDrone => "rc_drone",
2598 SubSport::Wingsuit => "wingsuit",
2599 SubSport::Whitewater => "whitewater",
2600 SubSport::SkateSkiing => "skate_skiing",
2601 SubSport::Yoga => "yoga",
2602 SubSport::Pilates => "pilates",
2603 SubSport::IndoorRunning => "indoor_running",
2604 SubSport::GravelCycling => "gravel_cycling",
2605 SubSport::EBikeMountain => "e_bike_mountain",
2606 SubSport::Commuting => "commuting",
2607 SubSport::MixedSurface => "mixed_surface",
2608 SubSport::Navigate => "navigate",
2609 SubSport::TrackMe => "track_me",
2610 SubSport::Map => "map",
2611 SubSport::SingleGasDiving => "single_gas_diving",
2612 SubSport::MultiGasDiving => "multi_gas_diving",
2613 SubSport::GaugeDiving => "gauge_diving",
2614 SubSport::ApneaDiving => "apnea_diving",
2615 SubSport::ApneaHunting => "apnea_hunting",
2616 SubSport::VirtualActivity => "virtual_activity",
2617 SubSport::Obstacle => "obstacle",
2618 SubSport::Breathing => "breathing",
2619 SubSport::CcrDiving => "ccr_diving",
2620 SubSport::SailRace => "sail_race",
2621 SubSport::Expedition => "expedition",
2622 SubSport::Ultra => "ultra",
2623 SubSport::IndoorClimbing => "indoor_climbing",
2624 SubSport::Bouldering => "bouldering",
2625 SubSport::Hiit => "hiit",
2626 SubSport::IndoorGrinding => "indoor_grinding",
2627 SubSport::HuntingWithDogs => "hunting_with_dogs",
2628 SubSport::Amrap => "amrap",
2629 SubSport::Emom => "emom",
2630 SubSport::Tabata => "tabata",
2631 SubSport::Esport => "esport",
2632 SubSport::Triathlon => "triathlon",
2633 SubSport::Duathlon => "duathlon",
2634 SubSport::Brick => "brick",
2635 SubSport::SwimRun => "swim_run",
2636 SubSport::AdventureRace => "adventure_race",
2637 SubSport::TruckerWorkout => "trucker_workout",
2638 SubSport::Pickleball => "pickleball",
2639 SubSport::Padel => "padel",
2640 SubSport::IndoorWheelchairWalk => "indoor_wheelchair_walk",
2641 SubSport::IndoorWheelchairRun => "indoor_wheelchair_run",
2642 SubSport::IndoorHandCycling => "indoor_hand_cycling",
2643 SubSport::Field => "field",
2644 SubSport::Ice => "ice",
2645 SubSport::Ultimate => "ultimate",
2646 SubSport::Platform => "platform",
2647 SubSport::Squash => "squash",
2648 SubSport::Badminton => "badminton",
2649 SubSport::Racquetball => "racquetball",
2650 SubSport::TableTennis => "table_tennis",
2651 SubSport::Overland => "overland",
2652 SubSport::TrollingMotor => "trolling_motor",
2653 SubSport::FlyCanopy => "fly_canopy",
2654 SubSport::FlyParaglide => "fly_paraglide",
2655 SubSport::FlyParamotor => "fly_paramotor",
2656 SubSport::FlyPressurized => "fly_pressurized",
2657 SubSport::FlyNavigate => "fly_navigate",
2658 SubSport::FlyTimer => "fly_timer",
2659 SubSport::FlyAltimeter => "fly_altimeter",
2660 SubSport::FlyWx => "fly_wx",
2661 SubSport::FlyVfr => "fly_vfr",
2662 SubSport::FlyIfr => "fly_ifr",
2663 SubSport::DynamicApnea => "dynamic_apnea",
2664 SubSport::Enduro => "enduro",
2665 SubSport::Rucking => "rucking",
2666 SubSport::Rally => "rally",
2667 SubSport::PoolTriathlon => "pool_triathlon",
2668 SubSport::EBikeEnduro => "e_bike_enduro",
2669 SubSport::All => "all",
2670 }
2671 }
2672
2673 pub fn from_value(value: u8) -> Option<Self> {
2675 match value {
2676 0 => Some(SubSport::Generic),
2677 1 => Some(SubSport::Treadmill),
2678 2 => Some(SubSport::Street),
2679 3 => Some(SubSport::Trail),
2680 4 => Some(SubSport::Track),
2681 5 => Some(SubSport::Spin),
2682 6 => Some(SubSport::IndoorCycling),
2683 7 => Some(SubSport::Road),
2684 8 => Some(SubSport::Mountain),
2685 9 => Some(SubSport::Downhill),
2686 10 => Some(SubSport::Recumbent),
2687 11 => Some(SubSport::Cyclocross),
2688 12 => Some(SubSport::HandCycling),
2689 13 => Some(SubSport::TrackCycling),
2690 14 => Some(SubSport::IndoorRowing),
2691 15 => Some(SubSport::Elliptical),
2692 16 => Some(SubSport::StairClimbing),
2693 17 => Some(SubSport::LapSwimming),
2694 18 => Some(SubSport::OpenWater),
2695 19 => Some(SubSport::FlexibilityTraining),
2696 20 => Some(SubSport::StrengthTraining),
2697 21 => Some(SubSport::WarmUp),
2698 22 => Some(SubSport::Match),
2699 23 => Some(SubSport::Exercise),
2700 24 => Some(SubSport::Challenge),
2701 25 => Some(SubSport::IndoorSkiing),
2702 26 => Some(SubSport::CardioTraining),
2703 27 => Some(SubSport::IndoorWalking),
2704 28 => Some(SubSport::EBikeFitness),
2705 29 => Some(SubSport::Bmx),
2706 30 => Some(SubSport::CasualWalking),
2707 31 => Some(SubSport::SpeedWalking),
2708 32 => Some(SubSport::BikeToRunTransition),
2709 33 => Some(SubSport::RunToBikeTransition),
2710 34 => Some(SubSport::SwimToBikeTransition),
2711 35 => Some(SubSport::Atv),
2712 36 => Some(SubSport::Motocross),
2713 37 => Some(SubSport::Backcountry),
2714 38 => Some(SubSport::Resort),
2715 39 => Some(SubSport::RcDrone),
2716 40 => Some(SubSport::Wingsuit),
2717 41 => Some(SubSport::Whitewater),
2718 42 => Some(SubSport::SkateSkiing),
2719 43 => Some(SubSport::Yoga),
2720 44 => Some(SubSport::Pilates),
2721 45 => Some(SubSport::IndoorRunning),
2722 46 => Some(SubSport::GravelCycling),
2723 47 => Some(SubSport::EBikeMountain),
2724 48 => Some(SubSport::Commuting),
2725 49 => Some(SubSport::MixedSurface),
2726 50 => Some(SubSport::Navigate),
2727 51 => Some(SubSport::TrackMe),
2728 52 => Some(SubSport::Map),
2729 53 => Some(SubSport::SingleGasDiving),
2730 54 => Some(SubSport::MultiGasDiving),
2731 55 => Some(SubSport::GaugeDiving),
2732 56 => Some(SubSport::ApneaDiving),
2733 57 => Some(SubSport::ApneaHunting),
2734 58 => Some(SubSport::VirtualActivity),
2735 59 => Some(SubSport::Obstacle),
2736 62 => Some(SubSport::Breathing),
2737 63 => Some(SubSport::CcrDiving),
2738 65 => Some(SubSport::SailRace),
2739 66 => Some(SubSport::Expedition),
2740 67 => Some(SubSport::Ultra),
2741 68 => Some(SubSport::IndoorClimbing),
2742 69 => Some(SubSport::Bouldering),
2743 70 => Some(SubSport::Hiit),
2744 71 => Some(SubSport::IndoorGrinding),
2745 72 => Some(SubSport::HuntingWithDogs),
2746 73 => Some(SubSport::Amrap),
2747 74 => Some(SubSport::Emom),
2748 75 => Some(SubSport::Tabata),
2749 77 => Some(SubSport::Esport),
2750 78 => Some(SubSport::Triathlon),
2751 79 => Some(SubSport::Duathlon),
2752 80 => Some(SubSport::Brick),
2753 81 => Some(SubSport::SwimRun),
2754 82 => Some(SubSport::AdventureRace),
2755 83 => Some(SubSport::TruckerWorkout),
2756 84 => Some(SubSport::Pickleball),
2757 85 => Some(SubSport::Padel),
2758 86 => Some(SubSport::IndoorWheelchairWalk),
2759 87 => Some(SubSport::IndoorWheelchairRun),
2760 88 => Some(SubSport::IndoorHandCycling),
2761 90 => Some(SubSport::Field),
2762 91 => Some(SubSport::Ice),
2763 92 => Some(SubSport::Ultimate),
2764 93 => Some(SubSport::Platform),
2765 94 => Some(SubSport::Squash),
2766 95 => Some(SubSport::Badminton),
2767 96 => Some(SubSport::Racquetball),
2768 97 => Some(SubSport::TableTennis),
2769 98 => Some(SubSport::Overland),
2770 99 => Some(SubSport::TrollingMotor),
2771 110 => Some(SubSport::FlyCanopy),
2772 111 => Some(SubSport::FlyParaglide),
2773 112 => Some(SubSport::FlyParamotor),
2774 113 => Some(SubSport::FlyPressurized),
2775 114 => Some(SubSport::FlyNavigate),
2776 115 => Some(SubSport::FlyTimer),
2777 116 => Some(SubSport::FlyAltimeter),
2778 117 => Some(SubSport::FlyWx),
2779 118 => Some(SubSport::FlyVfr),
2780 119 => Some(SubSport::FlyIfr),
2781 121 => Some(SubSport::DynamicApnea),
2782 123 => Some(SubSport::Enduro),
2783 124 => Some(SubSport::Rucking),
2784 125 => Some(SubSport::Rally),
2785 126 => Some(SubSport::PoolTriathlon),
2786 127 => Some(SubSport::EBikeEnduro),
2787 254 => Some(SubSport::All),
2788 _ => None,
2789 }
2790 }
2791
2792 pub fn from_str(name: &str) -> Option<Self> {
2794 match name {
2795 "generic" => Some(SubSport::Generic),
2796 "treadmill" => Some(SubSport::Treadmill),
2797 "street" => Some(SubSport::Street),
2798 "trail" => Some(SubSport::Trail),
2799 "track" => Some(SubSport::Track),
2800 "spin" => Some(SubSport::Spin),
2801 "indoor_cycling" => Some(SubSport::IndoorCycling),
2802 "road" => Some(SubSport::Road),
2803 "mountain" => Some(SubSport::Mountain),
2804 "downhill" => Some(SubSport::Downhill),
2805 "recumbent" => Some(SubSport::Recumbent),
2806 "cyclocross" => Some(SubSport::Cyclocross),
2807 "hand_cycling" => Some(SubSport::HandCycling),
2808 "track_cycling" => Some(SubSport::TrackCycling),
2809 "indoor_rowing" => Some(SubSport::IndoorRowing),
2810 "elliptical" => Some(SubSport::Elliptical),
2811 "stair_climbing" => Some(SubSport::StairClimbing),
2812 "lap_swimming" => Some(SubSport::LapSwimming),
2813 "open_water" => Some(SubSport::OpenWater),
2814 "flexibility_training" => Some(SubSport::FlexibilityTraining),
2815 "strength_training" => Some(SubSport::StrengthTraining),
2816 "warm_up" => Some(SubSport::WarmUp),
2817 "match" => Some(SubSport::Match),
2818 "exercise" => Some(SubSport::Exercise),
2819 "challenge" => Some(SubSport::Challenge),
2820 "indoor_skiing" => Some(SubSport::IndoorSkiing),
2821 "cardio_training" => Some(SubSport::CardioTraining),
2822 "indoor_walking" => Some(SubSport::IndoorWalking),
2823 "e_bike_fitness" => Some(SubSport::EBikeFitness),
2824 "bmx" => Some(SubSport::Bmx),
2825 "casual_walking" => Some(SubSport::CasualWalking),
2826 "speed_walking" => Some(SubSport::SpeedWalking),
2827 "bike_to_run_transition" => Some(SubSport::BikeToRunTransition),
2828 "run_to_bike_transition" => Some(SubSport::RunToBikeTransition),
2829 "swim_to_bike_transition" => Some(SubSport::SwimToBikeTransition),
2830 "atv" => Some(SubSport::Atv),
2831 "motocross" => Some(SubSport::Motocross),
2832 "backcountry" => Some(SubSport::Backcountry),
2833 "resort" => Some(SubSport::Resort),
2834 "rc_drone" => Some(SubSport::RcDrone),
2835 "wingsuit" => Some(SubSport::Wingsuit),
2836 "whitewater" => Some(SubSport::Whitewater),
2837 "skate_skiing" => Some(SubSport::SkateSkiing),
2838 "yoga" => Some(SubSport::Yoga),
2839 "pilates" => Some(SubSport::Pilates),
2840 "indoor_running" => Some(SubSport::IndoorRunning),
2841 "gravel_cycling" => Some(SubSport::GravelCycling),
2842 "e_bike_mountain" => Some(SubSport::EBikeMountain),
2843 "commuting" => Some(SubSport::Commuting),
2844 "mixed_surface" => Some(SubSport::MixedSurface),
2845 "navigate" => Some(SubSport::Navigate),
2846 "track_me" => Some(SubSport::TrackMe),
2847 "map" => Some(SubSport::Map),
2848 "single_gas_diving" => Some(SubSport::SingleGasDiving),
2849 "multi_gas_diving" => Some(SubSport::MultiGasDiving),
2850 "gauge_diving" => Some(SubSport::GaugeDiving),
2851 "apnea_diving" => Some(SubSport::ApneaDiving),
2852 "apnea_hunting" => Some(SubSport::ApneaHunting),
2853 "virtual_activity" => Some(SubSport::VirtualActivity),
2854 "obstacle" => Some(SubSport::Obstacle),
2855 "breathing" => Some(SubSport::Breathing),
2856 "ccr_diving" => Some(SubSport::CcrDiving),
2857 "sail_race" => Some(SubSport::SailRace),
2858 "expedition" => Some(SubSport::Expedition),
2859 "ultra" => Some(SubSport::Ultra),
2860 "indoor_climbing" => Some(SubSport::IndoorClimbing),
2861 "bouldering" => Some(SubSport::Bouldering),
2862 "hiit" => Some(SubSport::Hiit),
2863 "indoor_grinding" => Some(SubSport::IndoorGrinding),
2864 "hunting_with_dogs" => Some(SubSport::HuntingWithDogs),
2865 "amrap" => Some(SubSport::Amrap),
2866 "emom" => Some(SubSport::Emom),
2867 "tabata" => Some(SubSport::Tabata),
2868 "esport" => Some(SubSport::Esport),
2869 "triathlon" => Some(SubSport::Triathlon),
2870 "duathlon" => Some(SubSport::Duathlon),
2871 "brick" => Some(SubSport::Brick),
2872 "swim_run" => Some(SubSport::SwimRun),
2873 "adventure_race" => Some(SubSport::AdventureRace),
2874 "trucker_workout" => Some(SubSport::TruckerWorkout),
2875 "pickleball" => Some(SubSport::Pickleball),
2876 "padel" => Some(SubSport::Padel),
2877 "indoor_wheelchair_walk" => Some(SubSport::IndoorWheelchairWalk),
2878 "indoor_wheelchair_run" => Some(SubSport::IndoorWheelchairRun),
2879 "indoor_hand_cycling" => Some(SubSport::IndoorHandCycling),
2880 "field" => Some(SubSport::Field),
2881 "ice" => Some(SubSport::Ice),
2882 "ultimate" => Some(SubSport::Ultimate),
2883 "platform" => Some(SubSport::Platform),
2884 "squash" => Some(SubSport::Squash),
2885 "badminton" => Some(SubSport::Badminton),
2886 "racquetball" => Some(SubSport::Racquetball),
2887 "table_tennis" => Some(SubSport::TableTennis),
2888 "overland" => Some(SubSport::Overland),
2889 "trolling_motor" => Some(SubSport::TrollingMotor),
2890 "fly_canopy" => Some(SubSport::FlyCanopy),
2891 "fly_paraglide" => Some(SubSport::FlyParaglide),
2892 "fly_paramotor" => Some(SubSport::FlyParamotor),
2893 "fly_pressurized" => Some(SubSport::FlyPressurized),
2894 "fly_navigate" => Some(SubSport::FlyNavigate),
2895 "fly_timer" => Some(SubSport::FlyTimer),
2896 "fly_altimeter" => Some(SubSport::FlyAltimeter),
2897 "fly_wx" => Some(SubSport::FlyWx),
2898 "fly_vfr" => Some(SubSport::FlyVfr),
2899 "fly_ifr" => Some(SubSport::FlyIfr),
2900 "dynamic_apnea" => Some(SubSport::DynamicApnea),
2901 "enduro" => Some(SubSport::Enduro),
2902 "rucking" => Some(SubSport::Rucking),
2903 "rally" => Some(SubSport::Rally),
2904 "pool_triathlon" => Some(SubSport::PoolTriathlon),
2905 "e_bike_enduro" => Some(SubSport::EBikeEnduro),
2906 "all" => Some(SubSport::All),
2907 _ => None,
2908 }
2909 }
2910}
2911
2912#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2913#[repr(u8)]
2914#[non_exhaustive]
2915pub enum SportEvent {
2916 Uncategorized = 0,
2917 Geocaching = 1,
2918 Fitness = 2,
2919 Recreation = 3,
2920 Race = 4,
2921 SpecialEvent = 5,
2922 Training = 6,
2923 Transportation = 7,
2924 Touring = 8,
2925}
2926
2927impl SportEvent {
2928 pub fn as_str(&self) -> &'static str {
2930 match self {
2931 SportEvent::Uncategorized => "uncategorized",
2932 SportEvent::Geocaching => "geocaching",
2933 SportEvent::Fitness => "fitness",
2934 SportEvent::Recreation => "recreation",
2935 SportEvent::Race => "race",
2936 SportEvent::SpecialEvent => "special_event",
2937 SportEvent::Training => "training",
2938 SportEvent::Transportation => "transportation",
2939 SportEvent::Touring => "touring",
2940 }
2941 }
2942
2943 pub fn from_value(value: u8) -> Option<Self> {
2945 match value {
2946 0 => Some(SportEvent::Uncategorized),
2947 1 => Some(SportEvent::Geocaching),
2948 2 => Some(SportEvent::Fitness),
2949 3 => Some(SportEvent::Recreation),
2950 4 => Some(SportEvent::Race),
2951 5 => Some(SportEvent::SpecialEvent),
2952 6 => Some(SportEvent::Training),
2953 7 => Some(SportEvent::Transportation),
2954 8 => Some(SportEvent::Touring),
2955 _ => None,
2956 }
2957 }
2958
2959 pub fn from_str(name: &str) -> Option<Self> {
2961 match name {
2962 "uncategorized" => Some(SportEvent::Uncategorized),
2963 "geocaching" => Some(SportEvent::Geocaching),
2964 "fitness" => Some(SportEvent::Fitness),
2965 "recreation" => Some(SportEvent::Recreation),
2966 "race" => Some(SportEvent::Race),
2967 "special_event" => Some(SportEvent::SpecialEvent),
2968 "training" => Some(SportEvent::Training),
2969 "transportation" => Some(SportEvent::Transportation),
2970 "touring" => Some(SportEvent::Touring),
2971 _ => None,
2972 }
2973 }
2974}
2975
2976#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2977#[repr(u8)]
2978#[non_exhaustive]
2979pub enum Activity {
2980 Manual = 0,
2981 AutoMultiSport = 1,
2982}
2983
2984impl Activity {
2985 pub fn as_str(&self) -> &'static str {
2987 match self {
2988 Activity::Manual => "manual",
2989 Activity::AutoMultiSport => "auto_multi_sport",
2990 }
2991 }
2992
2993 pub fn from_value(value: u8) -> Option<Self> {
2995 match value {
2996 0 => Some(Activity::Manual),
2997 1 => Some(Activity::AutoMultiSport),
2998 _ => None,
2999 }
3000 }
3001
3002 pub fn from_str(name: &str) -> Option<Self> {
3004 match name {
3005 "manual" => Some(Activity::Manual),
3006 "auto_multi_sport" => Some(Activity::AutoMultiSport),
3007 _ => None,
3008 }
3009 }
3010}
3011
3012#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3013#[repr(u8)]
3014#[non_exhaustive]
3015pub enum Intensity {
3016 Active = 0,
3017 Rest = 1,
3018 Warmup = 2,
3019 Cooldown = 3,
3020 Recovery = 4,
3021 Interval = 5,
3022 Other = 6,
3023}
3024
3025impl Intensity {
3026 pub fn as_str(&self) -> &'static str {
3028 match self {
3029 Intensity::Active => "active",
3030 Intensity::Rest => "rest",
3031 Intensity::Warmup => "warmup",
3032 Intensity::Cooldown => "cooldown",
3033 Intensity::Recovery => "recovery",
3034 Intensity::Interval => "interval",
3035 Intensity::Other => "other",
3036 }
3037 }
3038
3039 pub fn from_value(value: u8) -> Option<Self> {
3041 match value {
3042 0 => Some(Intensity::Active),
3043 1 => Some(Intensity::Rest),
3044 2 => Some(Intensity::Warmup),
3045 3 => Some(Intensity::Cooldown),
3046 4 => Some(Intensity::Recovery),
3047 5 => Some(Intensity::Interval),
3048 6 => Some(Intensity::Other),
3049 _ => None,
3050 }
3051 }
3052
3053 pub fn from_str(name: &str) -> Option<Self> {
3055 match name {
3056 "active" => Some(Intensity::Active),
3057 "rest" => Some(Intensity::Rest),
3058 "warmup" => Some(Intensity::Warmup),
3059 "cooldown" => Some(Intensity::Cooldown),
3060 "recovery" => Some(Intensity::Recovery),
3061 "interval" => Some(Intensity::Interval),
3062 "other" => Some(Intensity::Other),
3063 _ => None,
3064 }
3065 }
3066}
3067
3068#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3069#[repr(u8)]
3070#[non_exhaustive]
3071pub enum SessionTrigger {
3072 ActivityEnd = 0,
3073 Manual = 1,
3074 AutoMultiSport = 2,
3075 FitnessEquipment = 3,
3076}
3077
3078impl SessionTrigger {
3079 pub fn as_str(&self) -> &'static str {
3081 match self {
3082 SessionTrigger::ActivityEnd => "activity_end",
3083 SessionTrigger::Manual => "manual",
3084 SessionTrigger::AutoMultiSport => "auto_multi_sport",
3085 SessionTrigger::FitnessEquipment => "fitness_equipment",
3086 }
3087 }
3088
3089 pub fn from_value(value: u8) -> Option<Self> {
3091 match value {
3092 0 => Some(SessionTrigger::ActivityEnd),
3093 1 => Some(SessionTrigger::Manual),
3094 2 => Some(SessionTrigger::AutoMultiSport),
3095 3 => Some(SessionTrigger::FitnessEquipment),
3096 _ => None,
3097 }
3098 }
3099
3100 pub fn from_str(name: &str) -> Option<Self> {
3102 match name {
3103 "activity_end" => Some(SessionTrigger::ActivityEnd),
3104 "manual" => Some(SessionTrigger::Manual),
3105 "auto_multi_sport" => Some(SessionTrigger::AutoMultiSport),
3106 "fitness_equipment" => Some(SessionTrigger::FitnessEquipment),
3107 _ => None,
3108 }
3109 }
3110}
3111
3112#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3113#[repr(u8)]
3114#[non_exhaustive]
3115pub enum AutolapTrigger {
3116 Time = 0,
3117 Distance = 1,
3118 PositionStart = 2,
3119 PositionLap = 3,
3120 PositionWaypoint = 4,
3121 PositionMarked = 5,
3122 Off = 6,
3123 AutoSelect = 13,
3124}
3125
3126impl AutolapTrigger {
3127 pub fn as_str(&self) -> &'static str {
3129 match self {
3130 AutolapTrigger::Time => "time",
3131 AutolapTrigger::Distance => "distance",
3132 AutolapTrigger::PositionStart => "position_start",
3133 AutolapTrigger::PositionLap => "position_lap",
3134 AutolapTrigger::PositionWaypoint => "position_waypoint",
3135 AutolapTrigger::PositionMarked => "position_marked",
3136 AutolapTrigger::Off => "off",
3137 AutolapTrigger::AutoSelect => "auto_select",
3138 }
3139 }
3140
3141 pub fn from_value(value: u8) -> Option<Self> {
3143 match value {
3144 0 => Some(AutolapTrigger::Time),
3145 1 => Some(AutolapTrigger::Distance),
3146 2 => Some(AutolapTrigger::PositionStart),
3147 3 => Some(AutolapTrigger::PositionLap),
3148 4 => Some(AutolapTrigger::PositionWaypoint),
3149 5 => Some(AutolapTrigger::PositionMarked),
3150 6 => Some(AutolapTrigger::Off),
3151 13 => Some(AutolapTrigger::AutoSelect),
3152 _ => None,
3153 }
3154 }
3155
3156 pub fn from_str(name: &str) -> Option<Self> {
3158 match name {
3159 "time" => Some(AutolapTrigger::Time),
3160 "distance" => Some(AutolapTrigger::Distance),
3161 "position_start" => Some(AutolapTrigger::PositionStart),
3162 "position_lap" => Some(AutolapTrigger::PositionLap),
3163 "position_waypoint" => Some(AutolapTrigger::PositionWaypoint),
3164 "position_marked" => Some(AutolapTrigger::PositionMarked),
3165 "off" => Some(AutolapTrigger::Off),
3166 "auto_select" => Some(AutolapTrigger::AutoSelect),
3167 _ => None,
3168 }
3169 }
3170}
3171
3172#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3173#[repr(u8)]
3174#[non_exhaustive]
3175pub enum LapTrigger {
3176 Manual = 0,
3177 Time = 1,
3178 Distance = 2,
3179 PositionStart = 3,
3180 PositionLap = 4,
3181 PositionWaypoint = 5,
3182 PositionMarked = 6,
3183 SessionEnd = 7,
3184 FitnessEquipment = 8,
3185}
3186
3187impl LapTrigger {
3188 pub fn as_str(&self) -> &'static str {
3190 match self {
3191 LapTrigger::Manual => "manual",
3192 LapTrigger::Time => "time",
3193 LapTrigger::Distance => "distance",
3194 LapTrigger::PositionStart => "position_start",
3195 LapTrigger::PositionLap => "position_lap",
3196 LapTrigger::PositionWaypoint => "position_waypoint",
3197 LapTrigger::PositionMarked => "position_marked",
3198 LapTrigger::SessionEnd => "session_end",
3199 LapTrigger::FitnessEquipment => "fitness_equipment",
3200 }
3201 }
3202
3203 pub fn from_value(value: u8) -> Option<Self> {
3205 match value {
3206 0 => Some(LapTrigger::Manual),
3207 1 => Some(LapTrigger::Time),
3208 2 => Some(LapTrigger::Distance),
3209 3 => Some(LapTrigger::PositionStart),
3210 4 => Some(LapTrigger::PositionLap),
3211 5 => Some(LapTrigger::PositionWaypoint),
3212 6 => Some(LapTrigger::PositionMarked),
3213 7 => Some(LapTrigger::SessionEnd),
3214 8 => Some(LapTrigger::FitnessEquipment),
3215 _ => None,
3216 }
3217 }
3218
3219 pub fn from_str(name: &str) -> Option<Self> {
3221 match name {
3222 "manual" => Some(LapTrigger::Manual),
3223 "time" => Some(LapTrigger::Time),
3224 "distance" => Some(LapTrigger::Distance),
3225 "position_start" => Some(LapTrigger::PositionStart),
3226 "position_lap" => Some(LapTrigger::PositionLap),
3227 "position_waypoint" => Some(LapTrigger::PositionWaypoint),
3228 "position_marked" => Some(LapTrigger::PositionMarked),
3229 "session_end" => Some(LapTrigger::SessionEnd),
3230 "fitness_equipment" => Some(LapTrigger::FitnessEquipment),
3231 _ => None,
3232 }
3233 }
3234}
3235
3236#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3237#[repr(u8)]
3238#[non_exhaustive]
3239pub enum TimeMode {
3240 Hour12 = 0,
3241 Hour24 = 1,
3242 Military = 2,
3243 Hour12WithSeconds = 3,
3244 Hour24WithSeconds = 4,
3245 Utc = 5,
3246}
3247
3248impl TimeMode {
3249 pub fn as_str(&self) -> &'static str {
3251 match self {
3252 TimeMode::Hour12 => "hour12",
3253 TimeMode::Hour24 => "hour24",
3254 TimeMode::Military => "military",
3255 TimeMode::Hour12WithSeconds => "hour_12_with_seconds",
3256 TimeMode::Hour24WithSeconds => "hour_24_with_seconds",
3257 TimeMode::Utc => "utc",
3258 }
3259 }
3260
3261 pub fn from_value(value: u8) -> Option<Self> {
3263 match value {
3264 0 => Some(TimeMode::Hour12),
3265 1 => Some(TimeMode::Hour24),
3266 2 => Some(TimeMode::Military),
3267 3 => Some(TimeMode::Hour12WithSeconds),
3268 4 => Some(TimeMode::Hour24WithSeconds),
3269 5 => Some(TimeMode::Utc),
3270 _ => None,
3271 }
3272 }
3273
3274 pub fn from_str(name: &str) -> Option<Self> {
3276 match name {
3277 "hour12" => Some(TimeMode::Hour12),
3278 "hour24" => Some(TimeMode::Hour24),
3279 "military" => Some(TimeMode::Military),
3280 "hour_12_with_seconds" => Some(TimeMode::Hour12WithSeconds),
3281 "hour_24_with_seconds" => Some(TimeMode::Hour24WithSeconds),
3282 "utc" => Some(TimeMode::Utc),
3283 _ => None,
3284 }
3285 }
3286}
3287
3288#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3289#[repr(u8)]
3290#[non_exhaustive]
3291pub enum BacklightMode {
3292 Off = 0,
3293 Manual = 1,
3294 KeyAndMessages = 2,
3295 AutoBrightness = 3,
3296 SmartNotifications = 4,
3297 KeyAndMessagesNight = 5,
3298 KeyAndMessagesAndSmartNotifications = 6,
3299}
3300
3301impl BacklightMode {
3302 pub fn as_str(&self) -> &'static str {
3304 match self {
3305 BacklightMode::Off => "off",
3306 BacklightMode::Manual => "manual",
3307 BacklightMode::KeyAndMessages => "key_and_messages",
3308 BacklightMode::AutoBrightness => "auto_brightness",
3309 BacklightMode::SmartNotifications => "smart_notifications",
3310 BacklightMode::KeyAndMessagesNight => "key_and_messages_night",
3311 BacklightMode::KeyAndMessagesAndSmartNotifications => {
3312 "key_and_messages_and_smart_notifications"
3313 }
3314 }
3315 }
3316
3317 pub fn from_value(value: u8) -> Option<Self> {
3319 match value {
3320 0 => Some(BacklightMode::Off),
3321 1 => Some(BacklightMode::Manual),
3322 2 => Some(BacklightMode::KeyAndMessages),
3323 3 => Some(BacklightMode::AutoBrightness),
3324 4 => Some(BacklightMode::SmartNotifications),
3325 5 => Some(BacklightMode::KeyAndMessagesNight),
3326 6 => Some(BacklightMode::KeyAndMessagesAndSmartNotifications),
3327 _ => None,
3328 }
3329 }
3330
3331 pub fn from_str(name: &str) -> Option<Self> {
3333 match name {
3334 "off" => Some(BacklightMode::Off),
3335 "manual" => Some(BacklightMode::Manual),
3336 "key_and_messages" => Some(BacklightMode::KeyAndMessages),
3337 "auto_brightness" => Some(BacklightMode::AutoBrightness),
3338 "smart_notifications" => Some(BacklightMode::SmartNotifications),
3339 "key_and_messages_night" => Some(BacklightMode::KeyAndMessagesNight),
3340 "key_and_messages_and_smart_notifications" => {
3341 Some(BacklightMode::KeyAndMessagesAndSmartNotifications)
3342 }
3343 _ => None,
3344 }
3345 }
3346}
3347
3348#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3349#[repr(u8)]
3350#[non_exhaustive]
3351pub enum DateMode {
3352 DayMonth = 0,
3353 MonthDay = 1,
3354}
3355
3356impl DateMode {
3357 pub fn as_str(&self) -> &'static str {
3359 match self {
3360 DateMode::DayMonth => "day_month",
3361 DateMode::MonthDay => "month_day",
3362 }
3363 }
3364
3365 pub fn from_value(value: u8) -> Option<Self> {
3367 match value {
3368 0 => Some(DateMode::DayMonth),
3369 1 => Some(DateMode::MonthDay),
3370 _ => None,
3371 }
3372 }
3373
3374 pub fn from_str(name: &str) -> Option<Self> {
3376 match name {
3377 "day_month" => Some(DateMode::DayMonth),
3378 "month_day" => Some(DateMode::MonthDay),
3379 _ => None,
3380 }
3381 }
3382}
3383
3384#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3385#[repr(u8)]
3386#[non_exhaustive]
3387pub enum BacklightTimeout {
3388 Infinite = 0,
3389}
3390
3391impl BacklightTimeout {
3392 pub fn as_str(&self) -> &'static str {
3394 match self {
3395 BacklightTimeout::Infinite => "infinite",
3396 }
3397 }
3398
3399 pub fn from_value(value: u8) -> Option<Self> {
3401 match value {
3402 0 => Some(BacklightTimeout::Infinite),
3403 _ => None,
3404 }
3405 }
3406
3407 pub fn from_str(name: &str) -> Option<Self> {
3409 match name {
3410 "infinite" => Some(BacklightTimeout::Infinite),
3411 _ => None,
3412 }
3413 }
3414}
3415
3416#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3417#[repr(u8)]
3418#[non_exhaustive]
3419pub enum Event {
3420 Timer = 0,
3421 Workout = 3,
3422 WorkoutStep = 4,
3423 PowerDown = 5,
3424 PowerUp = 6,
3425 OffCourse = 7,
3426 Session = 8,
3427 Lap = 9,
3428 CoursePoint = 10,
3429 Battery = 11,
3430 VirtualPartnerPace = 12,
3431 HrHighAlert = 13,
3432 HrLowAlert = 14,
3433 SpeedHighAlert = 15,
3434 SpeedLowAlert = 16,
3435 CadHighAlert = 17,
3436 CadLowAlert = 18,
3437 PowerHighAlert = 19,
3438 PowerLowAlert = 20,
3439 RecoveryHr = 21,
3440 BatteryLow = 22,
3441 TimeDurationAlert = 23,
3442 DistanceDurationAlert = 24,
3443 CalorieDurationAlert = 25,
3444 Activity = 26,
3445 FitnessEquipment = 27,
3446 Length = 28,
3447 UserMarker = 32,
3448 SportPoint = 33,
3449 Calibration = 36,
3450 FrontGearChange = 42,
3451 RearGearChange = 43,
3452 RiderPositionChange = 44,
3453 ElevHighAlert = 45,
3454 ElevLowAlert = 46,
3455 CommTimeout = 47,
3456 AutoActivityDetect = 54,
3457 DiveAlert = 56,
3458 DiveGasSwitched = 57,
3459 TankPressureReserve = 71,
3460 TankPressureCritical = 72,
3461 TankLost = 73,
3462 RadarThreatAlert = 75,
3463 TankBatteryLow = 76,
3464 TankPodConnected = 81,
3465 TankPodDisconnected = 82,
3466}
3467
3468impl Event {
3469 pub fn as_str(&self) -> &'static str {
3471 match self {
3472 Event::Timer => "timer",
3473 Event::Workout => "workout",
3474 Event::WorkoutStep => "workout_step",
3475 Event::PowerDown => "power_down",
3476 Event::PowerUp => "power_up",
3477 Event::OffCourse => "off_course",
3478 Event::Session => "session",
3479 Event::Lap => "lap",
3480 Event::CoursePoint => "course_point",
3481 Event::Battery => "battery",
3482 Event::VirtualPartnerPace => "virtual_partner_pace",
3483 Event::HrHighAlert => "hr_high_alert",
3484 Event::HrLowAlert => "hr_low_alert",
3485 Event::SpeedHighAlert => "speed_high_alert",
3486 Event::SpeedLowAlert => "speed_low_alert",
3487 Event::CadHighAlert => "cad_high_alert",
3488 Event::CadLowAlert => "cad_low_alert",
3489 Event::PowerHighAlert => "power_high_alert",
3490 Event::PowerLowAlert => "power_low_alert",
3491 Event::RecoveryHr => "recovery_hr",
3492 Event::BatteryLow => "battery_low",
3493 Event::TimeDurationAlert => "time_duration_alert",
3494 Event::DistanceDurationAlert => "distance_duration_alert",
3495 Event::CalorieDurationAlert => "calorie_duration_alert",
3496 Event::Activity => "activity",
3497 Event::FitnessEquipment => "fitness_equipment",
3498 Event::Length => "length",
3499 Event::UserMarker => "user_marker",
3500 Event::SportPoint => "sport_point",
3501 Event::Calibration => "calibration",
3502 Event::FrontGearChange => "front_gear_change",
3503 Event::RearGearChange => "rear_gear_change",
3504 Event::RiderPositionChange => "rider_position_change",
3505 Event::ElevHighAlert => "elev_high_alert",
3506 Event::ElevLowAlert => "elev_low_alert",
3507 Event::CommTimeout => "comm_timeout",
3508 Event::AutoActivityDetect => "auto_activity_detect",
3509 Event::DiveAlert => "dive_alert",
3510 Event::DiveGasSwitched => "dive_gas_switched",
3511 Event::TankPressureReserve => "tank_pressure_reserve",
3512 Event::TankPressureCritical => "tank_pressure_critical",
3513 Event::TankLost => "tank_lost",
3514 Event::RadarThreatAlert => "radar_threat_alert",
3515 Event::TankBatteryLow => "tank_battery_low",
3516 Event::TankPodConnected => "tank_pod_connected",
3517 Event::TankPodDisconnected => "tank_pod_disconnected",
3518 }
3519 }
3520
3521 pub fn from_value(value: u8) -> Option<Self> {
3523 match value {
3524 0 => Some(Event::Timer),
3525 3 => Some(Event::Workout),
3526 4 => Some(Event::WorkoutStep),
3527 5 => Some(Event::PowerDown),
3528 6 => Some(Event::PowerUp),
3529 7 => Some(Event::OffCourse),
3530 8 => Some(Event::Session),
3531 9 => Some(Event::Lap),
3532 10 => Some(Event::CoursePoint),
3533 11 => Some(Event::Battery),
3534 12 => Some(Event::VirtualPartnerPace),
3535 13 => Some(Event::HrHighAlert),
3536 14 => Some(Event::HrLowAlert),
3537 15 => Some(Event::SpeedHighAlert),
3538 16 => Some(Event::SpeedLowAlert),
3539 17 => Some(Event::CadHighAlert),
3540 18 => Some(Event::CadLowAlert),
3541 19 => Some(Event::PowerHighAlert),
3542 20 => Some(Event::PowerLowAlert),
3543 21 => Some(Event::RecoveryHr),
3544 22 => Some(Event::BatteryLow),
3545 23 => Some(Event::TimeDurationAlert),
3546 24 => Some(Event::DistanceDurationAlert),
3547 25 => Some(Event::CalorieDurationAlert),
3548 26 => Some(Event::Activity),
3549 27 => Some(Event::FitnessEquipment),
3550 28 => Some(Event::Length),
3551 32 => Some(Event::UserMarker),
3552 33 => Some(Event::SportPoint),
3553 36 => Some(Event::Calibration),
3554 42 => Some(Event::FrontGearChange),
3555 43 => Some(Event::RearGearChange),
3556 44 => Some(Event::RiderPositionChange),
3557 45 => Some(Event::ElevHighAlert),
3558 46 => Some(Event::ElevLowAlert),
3559 47 => Some(Event::CommTimeout),
3560 54 => Some(Event::AutoActivityDetect),
3561 56 => Some(Event::DiveAlert),
3562 57 => Some(Event::DiveGasSwitched),
3563 71 => Some(Event::TankPressureReserve),
3564 72 => Some(Event::TankPressureCritical),
3565 73 => Some(Event::TankLost),
3566 75 => Some(Event::RadarThreatAlert),
3567 76 => Some(Event::TankBatteryLow),
3568 81 => Some(Event::TankPodConnected),
3569 82 => Some(Event::TankPodDisconnected),
3570 _ => None,
3571 }
3572 }
3573
3574 pub fn from_str(name: &str) -> Option<Self> {
3576 match name {
3577 "timer" => Some(Event::Timer),
3578 "workout" => Some(Event::Workout),
3579 "workout_step" => Some(Event::WorkoutStep),
3580 "power_down" => Some(Event::PowerDown),
3581 "power_up" => Some(Event::PowerUp),
3582 "off_course" => Some(Event::OffCourse),
3583 "session" => Some(Event::Session),
3584 "lap" => Some(Event::Lap),
3585 "course_point" => Some(Event::CoursePoint),
3586 "battery" => Some(Event::Battery),
3587 "virtual_partner_pace" => Some(Event::VirtualPartnerPace),
3588 "hr_high_alert" => Some(Event::HrHighAlert),
3589 "hr_low_alert" => Some(Event::HrLowAlert),
3590 "speed_high_alert" => Some(Event::SpeedHighAlert),
3591 "speed_low_alert" => Some(Event::SpeedLowAlert),
3592 "cad_high_alert" => Some(Event::CadHighAlert),
3593 "cad_low_alert" => Some(Event::CadLowAlert),
3594 "power_high_alert" => Some(Event::PowerHighAlert),
3595 "power_low_alert" => Some(Event::PowerLowAlert),
3596 "recovery_hr" => Some(Event::RecoveryHr),
3597 "battery_low" => Some(Event::BatteryLow),
3598 "time_duration_alert" => Some(Event::TimeDurationAlert),
3599 "distance_duration_alert" => Some(Event::DistanceDurationAlert),
3600 "calorie_duration_alert" => Some(Event::CalorieDurationAlert),
3601 "activity" => Some(Event::Activity),
3602 "fitness_equipment" => Some(Event::FitnessEquipment),
3603 "length" => Some(Event::Length),
3604 "user_marker" => Some(Event::UserMarker),
3605 "sport_point" => Some(Event::SportPoint),
3606 "calibration" => Some(Event::Calibration),
3607 "front_gear_change" => Some(Event::FrontGearChange),
3608 "rear_gear_change" => Some(Event::RearGearChange),
3609 "rider_position_change" => Some(Event::RiderPositionChange),
3610 "elev_high_alert" => Some(Event::ElevHighAlert),
3611 "elev_low_alert" => Some(Event::ElevLowAlert),
3612 "comm_timeout" => Some(Event::CommTimeout),
3613 "auto_activity_detect" => Some(Event::AutoActivityDetect),
3614 "dive_alert" => Some(Event::DiveAlert),
3615 "dive_gas_switched" => Some(Event::DiveGasSwitched),
3616 "tank_pressure_reserve" => Some(Event::TankPressureReserve),
3617 "tank_pressure_critical" => Some(Event::TankPressureCritical),
3618 "tank_lost" => Some(Event::TankLost),
3619 "radar_threat_alert" => Some(Event::RadarThreatAlert),
3620 "tank_battery_low" => Some(Event::TankBatteryLow),
3621 "tank_pod_connected" => Some(Event::TankPodConnected),
3622 "tank_pod_disconnected" => Some(Event::TankPodDisconnected),
3623 _ => None,
3624 }
3625 }
3626}
3627
3628#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3629#[repr(u8)]
3630#[non_exhaustive]
3631pub enum EventType {
3632 Start = 0,
3633 Stop = 1,
3634 ConsecutiveDepreciated = 2,
3635 Marker = 3,
3636 StopAll = 4,
3637 BeginDepreciated = 5,
3638 EndDepreciated = 6,
3639 EndAllDepreciated = 7,
3640 StopDisable = 8,
3641 StopDisableAll = 9,
3642}
3643
3644impl EventType {
3645 pub fn as_str(&self) -> &'static str {
3647 match self {
3648 EventType::Start => "start",
3649 EventType::Stop => "stop",
3650 EventType::ConsecutiveDepreciated => "consecutive_depreciated",
3651 EventType::Marker => "marker",
3652 EventType::StopAll => "stop_all",
3653 EventType::BeginDepreciated => "begin_depreciated",
3654 EventType::EndDepreciated => "end_depreciated",
3655 EventType::EndAllDepreciated => "end_all_depreciated",
3656 EventType::StopDisable => "stop_disable",
3657 EventType::StopDisableAll => "stop_disable_all",
3658 }
3659 }
3660
3661 pub fn from_value(value: u8) -> Option<Self> {
3663 match value {
3664 0 => Some(EventType::Start),
3665 1 => Some(EventType::Stop),
3666 2 => Some(EventType::ConsecutiveDepreciated),
3667 3 => Some(EventType::Marker),
3668 4 => Some(EventType::StopAll),
3669 5 => Some(EventType::BeginDepreciated),
3670 6 => Some(EventType::EndDepreciated),
3671 7 => Some(EventType::EndAllDepreciated),
3672 8 => Some(EventType::StopDisable),
3673 9 => Some(EventType::StopDisableAll),
3674 _ => None,
3675 }
3676 }
3677
3678 pub fn from_str(name: &str) -> Option<Self> {
3680 match name {
3681 "start" => Some(EventType::Start),
3682 "stop" => Some(EventType::Stop),
3683 "consecutive_depreciated" => Some(EventType::ConsecutiveDepreciated),
3684 "marker" => Some(EventType::Marker),
3685 "stop_all" => Some(EventType::StopAll),
3686 "begin_depreciated" => Some(EventType::BeginDepreciated),
3687 "end_depreciated" => Some(EventType::EndDepreciated),
3688 "end_all_depreciated" => Some(EventType::EndAllDepreciated),
3689 "stop_disable" => Some(EventType::StopDisable),
3690 "stop_disable_all" => Some(EventType::StopDisableAll),
3691 _ => None,
3692 }
3693 }
3694}
3695
3696#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3697#[repr(u8)]
3698#[non_exhaustive]
3699pub enum TimerTrigger {
3700 Manual = 0,
3701 Auto = 1,
3702 FitnessEquipment = 2,
3703}
3704
3705impl TimerTrigger {
3706 pub fn as_str(&self) -> &'static str {
3708 match self {
3709 TimerTrigger::Manual => "manual",
3710 TimerTrigger::Auto => "auto",
3711 TimerTrigger::FitnessEquipment => "fitness_equipment",
3712 }
3713 }
3714
3715 pub fn from_value(value: u8) -> Option<Self> {
3717 match value {
3718 0 => Some(TimerTrigger::Manual),
3719 1 => Some(TimerTrigger::Auto),
3720 2 => Some(TimerTrigger::FitnessEquipment),
3721 _ => None,
3722 }
3723 }
3724
3725 pub fn from_str(name: &str) -> Option<Self> {
3727 match name {
3728 "manual" => Some(TimerTrigger::Manual),
3729 "auto" => Some(TimerTrigger::Auto),
3730 "fitness_equipment" => Some(TimerTrigger::FitnessEquipment),
3731 _ => None,
3732 }
3733 }
3734}
3735
3736#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3737#[repr(u8)]
3738#[non_exhaustive]
3739pub enum FitnessEquipmentState {
3740 Ready = 0,
3741 InUse = 1,
3742 Paused = 2,
3743 Unknown = 3,
3744}
3745
3746impl FitnessEquipmentState {
3747 pub fn as_str(&self) -> &'static str {
3749 match self {
3750 FitnessEquipmentState::Ready => "ready",
3751 FitnessEquipmentState::InUse => "in_use",
3752 FitnessEquipmentState::Paused => "paused",
3753 FitnessEquipmentState::Unknown => "unknown",
3754 }
3755 }
3756
3757 pub fn from_value(value: u8) -> Option<Self> {
3759 match value {
3760 0 => Some(FitnessEquipmentState::Ready),
3761 1 => Some(FitnessEquipmentState::InUse),
3762 2 => Some(FitnessEquipmentState::Paused),
3763 3 => Some(FitnessEquipmentState::Unknown),
3764 _ => None,
3765 }
3766 }
3767
3768 pub fn from_str(name: &str) -> Option<Self> {
3770 match name {
3771 "ready" => Some(FitnessEquipmentState::Ready),
3772 "in_use" => Some(FitnessEquipmentState::InUse),
3773 "paused" => Some(FitnessEquipmentState::Paused),
3774 "unknown" => Some(FitnessEquipmentState::Unknown),
3775 _ => None,
3776 }
3777 }
3778}
3779
3780#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3781#[repr(u8)]
3782#[non_exhaustive]
3783pub enum Tone {
3784 Off = 0,
3785 Tone = 1,
3786 Vibrate = 2,
3787 ToneAndVibrate = 3,
3788}
3789
3790impl Tone {
3791 pub fn as_str(&self) -> &'static str {
3793 match self {
3794 Tone::Off => "off",
3795 Tone::Tone => "tone",
3796 Tone::Vibrate => "vibrate",
3797 Tone::ToneAndVibrate => "tone_and_vibrate",
3798 }
3799 }
3800
3801 pub fn from_value(value: u8) -> Option<Self> {
3803 match value {
3804 0 => Some(Tone::Off),
3805 1 => Some(Tone::Tone),
3806 2 => Some(Tone::Vibrate),
3807 3 => Some(Tone::ToneAndVibrate),
3808 _ => None,
3809 }
3810 }
3811
3812 pub fn from_str(name: &str) -> Option<Self> {
3814 match name {
3815 "off" => Some(Tone::Off),
3816 "tone" => Some(Tone::Tone),
3817 "vibrate" => Some(Tone::Vibrate),
3818 "tone_and_vibrate" => Some(Tone::ToneAndVibrate),
3819 _ => None,
3820 }
3821 }
3822}
3823
3824#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3825#[repr(u8)]
3826#[non_exhaustive]
3827pub enum Autoscroll {
3828 None = 0,
3829 Slow = 1,
3830 Medium = 2,
3831 Fast = 3,
3832}
3833
3834impl Autoscroll {
3835 pub fn as_str(&self) -> &'static str {
3837 match self {
3838 Autoscroll::None => "none",
3839 Autoscroll::Slow => "slow",
3840 Autoscroll::Medium => "medium",
3841 Autoscroll::Fast => "fast",
3842 }
3843 }
3844
3845 pub fn from_value(value: u8) -> Option<Self> {
3847 match value {
3848 0 => Some(Autoscroll::None),
3849 1 => Some(Autoscroll::Slow),
3850 2 => Some(Autoscroll::Medium),
3851 3 => Some(Autoscroll::Fast),
3852 _ => None,
3853 }
3854 }
3855
3856 pub fn from_str(name: &str) -> Option<Self> {
3858 match name {
3859 "none" => Some(Autoscroll::None),
3860 "slow" => Some(Autoscroll::Slow),
3861 "medium" => Some(Autoscroll::Medium),
3862 "fast" => Some(Autoscroll::Fast),
3863 _ => None,
3864 }
3865 }
3866}
3867
3868#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3869#[repr(u8)]
3870#[non_exhaustive]
3871pub enum ActivityClass {
3872 Level = 127,
3873 LevelMax = 100,
3874 Athlete = 128,
3875}
3876
3877impl ActivityClass {
3878 pub fn as_str(&self) -> &'static str {
3880 match self {
3881 ActivityClass::Level => "level",
3882 ActivityClass::LevelMax => "level_max",
3883 ActivityClass::Athlete => "athlete",
3884 }
3885 }
3886
3887 pub fn from_value(value: u8) -> Option<Self> {
3889 match value {
3890 127 => Some(ActivityClass::Level),
3891 100 => Some(ActivityClass::LevelMax),
3892 128 => Some(ActivityClass::Athlete),
3893 _ => None,
3894 }
3895 }
3896
3897 pub fn from_str(name: &str) -> Option<Self> {
3899 match name {
3900 "level" => Some(ActivityClass::Level),
3901 "level_max" => Some(ActivityClass::LevelMax),
3902 "athlete" => Some(ActivityClass::Athlete),
3903 _ => None,
3904 }
3905 }
3906}
3907
3908#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3909#[repr(u8)]
3910#[non_exhaustive]
3911pub enum HrZoneCalc {
3912 Custom = 0,
3913 PercentMaxHr = 1,
3914 PercentHrr = 2,
3915 PercentLthr = 3,
3916}
3917
3918impl HrZoneCalc {
3919 pub fn as_str(&self) -> &'static str {
3921 match self {
3922 HrZoneCalc::Custom => "custom",
3923 HrZoneCalc::PercentMaxHr => "percent_max_hr",
3924 HrZoneCalc::PercentHrr => "percent_hrr",
3925 HrZoneCalc::PercentLthr => "percent_lthr",
3926 }
3927 }
3928
3929 pub fn from_value(value: u8) -> Option<Self> {
3931 match value {
3932 0 => Some(HrZoneCalc::Custom),
3933 1 => Some(HrZoneCalc::PercentMaxHr),
3934 2 => Some(HrZoneCalc::PercentHrr),
3935 3 => Some(HrZoneCalc::PercentLthr),
3936 _ => None,
3937 }
3938 }
3939
3940 pub fn from_str(name: &str) -> Option<Self> {
3942 match name {
3943 "custom" => Some(HrZoneCalc::Custom),
3944 "percent_max_hr" => Some(HrZoneCalc::PercentMaxHr),
3945 "percent_hrr" => Some(HrZoneCalc::PercentHrr),
3946 "percent_lthr" => Some(HrZoneCalc::PercentLthr),
3947 _ => None,
3948 }
3949 }
3950}
3951
3952#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3953#[repr(u8)]
3954#[non_exhaustive]
3955pub enum PwrZoneCalc {
3956 Custom = 0,
3957 PercentFtp = 1,
3958}
3959
3960impl PwrZoneCalc {
3961 pub fn as_str(&self) -> &'static str {
3963 match self {
3964 PwrZoneCalc::Custom => "custom",
3965 PwrZoneCalc::PercentFtp => "percent_ftp",
3966 }
3967 }
3968
3969 pub fn from_value(value: u8) -> Option<Self> {
3971 match value {
3972 0 => Some(PwrZoneCalc::Custom),
3973 1 => Some(PwrZoneCalc::PercentFtp),
3974 _ => None,
3975 }
3976 }
3977
3978 pub fn from_str(name: &str) -> Option<Self> {
3980 match name {
3981 "custom" => Some(PwrZoneCalc::Custom),
3982 "percent_ftp" => Some(PwrZoneCalc::PercentFtp),
3983 _ => None,
3984 }
3985 }
3986}
3987
3988#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3989#[repr(u8)]
3990#[non_exhaustive]
3991pub enum WktStepDuration {
3992 Time = 0,
3993 Distance = 1,
3994 HrLessThan = 2,
3995 HrGreaterThan = 3,
3996 Calories = 4,
3997 Open = 5,
3998 RepeatUntilStepsCmplt = 6,
3999 RepeatUntilTime = 7,
4000 RepeatUntilDistance = 8,
4001 RepeatUntilCalories = 9,
4002 RepeatUntilHrLessThan = 10,
4003 RepeatUntilHrGreaterThan = 11,
4004 RepeatUntilPowerLessThan = 12,
4005 RepeatUntilPowerGreaterThan = 13,
4006 PowerLessThan = 14,
4007 PowerGreaterThan = 15,
4008 TrainingPeaksTss = 16,
4009 RepeatUntilPowerLastLapLessThan = 17,
4010 RepeatUntilMaxPowerLastLapLessThan = 18,
4011 Power3sLessThan = 19,
4012 Power10sLessThan = 20,
4013 Power30sLessThan = 21,
4014 Power3sGreaterThan = 22,
4015 Power10sGreaterThan = 23,
4016 Power30sGreaterThan = 24,
4017 PowerLapLessThan = 25,
4018 PowerLapGreaterThan = 26,
4019 RepeatUntilTrainingPeaksTss = 27,
4020 RepetitionTime = 28,
4021 Reps = 29,
4022 TimeOnly = 31,
4023}
4024
4025impl WktStepDuration {
4026 pub fn as_str(&self) -> &'static str {
4028 match self {
4029 WktStepDuration::Time => "time",
4030 WktStepDuration::Distance => "distance",
4031 WktStepDuration::HrLessThan => "hr_less_than",
4032 WktStepDuration::HrGreaterThan => "hr_greater_than",
4033 WktStepDuration::Calories => "calories",
4034 WktStepDuration::Open => "open",
4035 WktStepDuration::RepeatUntilStepsCmplt => "repeat_until_steps_cmplt",
4036 WktStepDuration::RepeatUntilTime => "repeat_until_time",
4037 WktStepDuration::RepeatUntilDistance => "repeat_until_distance",
4038 WktStepDuration::RepeatUntilCalories => "repeat_until_calories",
4039 WktStepDuration::RepeatUntilHrLessThan => "repeat_until_hr_less_than",
4040 WktStepDuration::RepeatUntilHrGreaterThan => "repeat_until_hr_greater_than",
4041 WktStepDuration::RepeatUntilPowerLessThan => "repeat_until_power_less_than",
4042 WktStepDuration::RepeatUntilPowerGreaterThan => "repeat_until_power_greater_than",
4043 WktStepDuration::PowerLessThan => "power_less_than",
4044 WktStepDuration::PowerGreaterThan => "power_greater_than",
4045 WktStepDuration::TrainingPeaksTss => "training_peaks_tss",
4046 WktStepDuration::RepeatUntilPowerLastLapLessThan => {
4047 "repeat_until_power_last_lap_less_than"
4048 }
4049 WktStepDuration::RepeatUntilMaxPowerLastLapLessThan => {
4050 "repeat_until_max_power_last_lap_less_than"
4051 }
4052 WktStepDuration::Power3sLessThan => "power_3s_less_than",
4053 WktStepDuration::Power10sLessThan => "power_10s_less_than",
4054 WktStepDuration::Power30sLessThan => "power_30s_less_than",
4055 WktStepDuration::Power3sGreaterThan => "power_3s_greater_than",
4056 WktStepDuration::Power10sGreaterThan => "power_10s_greater_than",
4057 WktStepDuration::Power30sGreaterThan => "power_30s_greater_than",
4058 WktStepDuration::PowerLapLessThan => "power_lap_less_than",
4059 WktStepDuration::PowerLapGreaterThan => "power_lap_greater_than",
4060 WktStepDuration::RepeatUntilTrainingPeaksTss => "repeat_until_training_peaks_tss",
4061 WktStepDuration::RepetitionTime => "repetition_time",
4062 WktStepDuration::Reps => "reps",
4063 WktStepDuration::TimeOnly => "time_only",
4064 }
4065 }
4066
4067 pub fn from_value(value: u8) -> Option<Self> {
4069 match value {
4070 0 => Some(WktStepDuration::Time),
4071 1 => Some(WktStepDuration::Distance),
4072 2 => Some(WktStepDuration::HrLessThan),
4073 3 => Some(WktStepDuration::HrGreaterThan),
4074 4 => Some(WktStepDuration::Calories),
4075 5 => Some(WktStepDuration::Open),
4076 6 => Some(WktStepDuration::RepeatUntilStepsCmplt),
4077 7 => Some(WktStepDuration::RepeatUntilTime),
4078 8 => Some(WktStepDuration::RepeatUntilDistance),
4079 9 => Some(WktStepDuration::RepeatUntilCalories),
4080 10 => Some(WktStepDuration::RepeatUntilHrLessThan),
4081 11 => Some(WktStepDuration::RepeatUntilHrGreaterThan),
4082 12 => Some(WktStepDuration::RepeatUntilPowerLessThan),
4083 13 => Some(WktStepDuration::RepeatUntilPowerGreaterThan),
4084 14 => Some(WktStepDuration::PowerLessThan),
4085 15 => Some(WktStepDuration::PowerGreaterThan),
4086 16 => Some(WktStepDuration::TrainingPeaksTss),
4087 17 => Some(WktStepDuration::RepeatUntilPowerLastLapLessThan),
4088 18 => Some(WktStepDuration::RepeatUntilMaxPowerLastLapLessThan),
4089 19 => Some(WktStepDuration::Power3sLessThan),
4090 20 => Some(WktStepDuration::Power10sLessThan),
4091 21 => Some(WktStepDuration::Power30sLessThan),
4092 22 => Some(WktStepDuration::Power3sGreaterThan),
4093 23 => Some(WktStepDuration::Power10sGreaterThan),
4094 24 => Some(WktStepDuration::Power30sGreaterThan),
4095 25 => Some(WktStepDuration::PowerLapLessThan),
4096 26 => Some(WktStepDuration::PowerLapGreaterThan),
4097 27 => Some(WktStepDuration::RepeatUntilTrainingPeaksTss),
4098 28 => Some(WktStepDuration::RepetitionTime),
4099 29 => Some(WktStepDuration::Reps),
4100 31 => Some(WktStepDuration::TimeOnly),
4101 _ => None,
4102 }
4103 }
4104
4105 pub fn from_str(name: &str) -> Option<Self> {
4107 match name {
4108 "time" => Some(WktStepDuration::Time),
4109 "distance" => Some(WktStepDuration::Distance),
4110 "hr_less_than" => Some(WktStepDuration::HrLessThan),
4111 "hr_greater_than" => Some(WktStepDuration::HrGreaterThan),
4112 "calories" => Some(WktStepDuration::Calories),
4113 "open" => Some(WktStepDuration::Open),
4114 "repeat_until_steps_cmplt" => Some(WktStepDuration::RepeatUntilStepsCmplt),
4115 "repeat_until_time" => Some(WktStepDuration::RepeatUntilTime),
4116 "repeat_until_distance" => Some(WktStepDuration::RepeatUntilDistance),
4117 "repeat_until_calories" => Some(WktStepDuration::RepeatUntilCalories),
4118 "repeat_until_hr_less_than" => Some(WktStepDuration::RepeatUntilHrLessThan),
4119 "repeat_until_hr_greater_than" => Some(WktStepDuration::RepeatUntilHrGreaterThan),
4120 "repeat_until_power_less_than" => Some(WktStepDuration::RepeatUntilPowerLessThan),
4121 "repeat_until_power_greater_than" => Some(WktStepDuration::RepeatUntilPowerGreaterThan),
4122 "power_less_than" => Some(WktStepDuration::PowerLessThan),
4123 "power_greater_than" => Some(WktStepDuration::PowerGreaterThan),
4124 "training_peaks_tss" => Some(WktStepDuration::TrainingPeaksTss),
4125 "repeat_until_power_last_lap_less_than" => {
4126 Some(WktStepDuration::RepeatUntilPowerLastLapLessThan)
4127 }
4128 "repeat_until_max_power_last_lap_less_than" => {
4129 Some(WktStepDuration::RepeatUntilMaxPowerLastLapLessThan)
4130 }
4131 "power_3s_less_than" => Some(WktStepDuration::Power3sLessThan),
4132 "power_10s_less_than" => Some(WktStepDuration::Power10sLessThan),
4133 "power_30s_less_than" => Some(WktStepDuration::Power30sLessThan),
4134 "power_3s_greater_than" => Some(WktStepDuration::Power3sGreaterThan),
4135 "power_10s_greater_than" => Some(WktStepDuration::Power10sGreaterThan),
4136 "power_30s_greater_than" => Some(WktStepDuration::Power30sGreaterThan),
4137 "power_lap_less_than" => Some(WktStepDuration::PowerLapLessThan),
4138 "power_lap_greater_than" => Some(WktStepDuration::PowerLapGreaterThan),
4139 "repeat_until_training_peaks_tss" => Some(WktStepDuration::RepeatUntilTrainingPeaksTss),
4140 "repetition_time" => Some(WktStepDuration::RepetitionTime),
4141 "reps" => Some(WktStepDuration::Reps),
4142 "time_only" => Some(WktStepDuration::TimeOnly),
4143 _ => None,
4144 }
4145 }
4146}
4147
4148#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4149#[repr(u8)]
4150#[non_exhaustive]
4151pub enum WktStepTarget {
4152 Speed = 0,
4153 HeartRate = 1,
4154 Open = 2,
4155 Cadence = 3,
4156 Power = 4,
4157 Grade = 5,
4158 Resistance = 6,
4159 Power3s = 7,
4160 Power10s = 8,
4161 Power30s = 9,
4162 PowerLap = 10,
4163 SwimStroke = 11,
4164 SpeedLap = 12,
4165 HeartRateLap = 13,
4166}
4167
4168impl WktStepTarget {
4169 pub fn as_str(&self) -> &'static str {
4171 match self {
4172 WktStepTarget::Speed => "speed",
4173 WktStepTarget::HeartRate => "heart_rate",
4174 WktStepTarget::Open => "open",
4175 WktStepTarget::Cadence => "cadence",
4176 WktStepTarget::Power => "power",
4177 WktStepTarget::Grade => "grade",
4178 WktStepTarget::Resistance => "resistance",
4179 WktStepTarget::Power3s => "power_3s",
4180 WktStepTarget::Power10s => "power_10s",
4181 WktStepTarget::Power30s => "power_30s",
4182 WktStepTarget::PowerLap => "power_lap",
4183 WktStepTarget::SwimStroke => "swim_stroke",
4184 WktStepTarget::SpeedLap => "speed_lap",
4185 WktStepTarget::HeartRateLap => "heart_rate_lap",
4186 }
4187 }
4188
4189 pub fn from_value(value: u8) -> Option<Self> {
4191 match value {
4192 0 => Some(WktStepTarget::Speed),
4193 1 => Some(WktStepTarget::HeartRate),
4194 2 => Some(WktStepTarget::Open),
4195 3 => Some(WktStepTarget::Cadence),
4196 4 => Some(WktStepTarget::Power),
4197 5 => Some(WktStepTarget::Grade),
4198 6 => Some(WktStepTarget::Resistance),
4199 7 => Some(WktStepTarget::Power3s),
4200 8 => Some(WktStepTarget::Power10s),
4201 9 => Some(WktStepTarget::Power30s),
4202 10 => Some(WktStepTarget::PowerLap),
4203 11 => Some(WktStepTarget::SwimStroke),
4204 12 => Some(WktStepTarget::SpeedLap),
4205 13 => Some(WktStepTarget::HeartRateLap),
4206 _ => None,
4207 }
4208 }
4209
4210 pub fn from_str(name: &str) -> Option<Self> {
4212 match name {
4213 "speed" => Some(WktStepTarget::Speed),
4214 "heart_rate" => Some(WktStepTarget::HeartRate),
4215 "open" => Some(WktStepTarget::Open),
4216 "cadence" => Some(WktStepTarget::Cadence),
4217 "power" => Some(WktStepTarget::Power),
4218 "grade" => Some(WktStepTarget::Grade),
4219 "resistance" => Some(WktStepTarget::Resistance),
4220 "power_3s" => Some(WktStepTarget::Power3s),
4221 "power_10s" => Some(WktStepTarget::Power10s),
4222 "power_30s" => Some(WktStepTarget::Power30s),
4223 "power_lap" => Some(WktStepTarget::PowerLap),
4224 "swim_stroke" => Some(WktStepTarget::SwimStroke),
4225 "speed_lap" => Some(WktStepTarget::SpeedLap),
4226 "heart_rate_lap" => Some(WktStepTarget::HeartRateLap),
4227 _ => None,
4228 }
4229 }
4230}
4231
4232#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4233#[repr(u8)]
4234#[non_exhaustive]
4235pub enum Goal {
4236 Time = 0,
4237 Distance = 1,
4238 Calories = 2,
4239 Frequency = 3,
4240 Steps = 4,
4241 Ascent = 5,
4242 ActiveMinutes = 6,
4243}
4244
4245impl Goal {
4246 pub fn as_str(&self) -> &'static str {
4248 match self {
4249 Goal::Time => "time",
4250 Goal::Distance => "distance",
4251 Goal::Calories => "calories",
4252 Goal::Frequency => "frequency",
4253 Goal::Steps => "steps",
4254 Goal::Ascent => "ascent",
4255 Goal::ActiveMinutes => "active_minutes",
4256 }
4257 }
4258
4259 pub fn from_value(value: u8) -> Option<Self> {
4261 match value {
4262 0 => Some(Goal::Time),
4263 1 => Some(Goal::Distance),
4264 2 => Some(Goal::Calories),
4265 3 => Some(Goal::Frequency),
4266 4 => Some(Goal::Steps),
4267 5 => Some(Goal::Ascent),
4268 6 => Some(Goal::ActiveMinutes),
4269 _ => None,
4270 }
4271 }
4272
4273 pub fn from_str(name: &str) -> Option<Self> {
4275 match name {
4276 "time" => Some(Goal::Time),
4277 "distance" => Some(Goal::Distance),
4278 "calories" => Some(Goal::Calories),
4279 "frequency" => Some(Goal::Frequency),
4280 "steps" => Some(Goal::Steps),
4281 "ascent" => Some(Goal::Ascent),
4282 "active_minutes" => Some(Goal::ActiveMinutes),
4283 _ => None,
4284 }
4285 }
4286}
4287
4288#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4289#[repr(u8)]
4290#[non_exhaustive]
4291pub enum GoalRecurrence {
4292 Off = 0,
4293 Daily = 1,
4294 Weekly = 2,
4295 Monthly = 3,
4296 Yearly = 4,
4297 Custom = 5,
4298}
4299
4300impl GoalRecurrence {
4301 pub fn as_str(&self) -> &'static str {
4303 match self {
4304 GoalRecurrence::Off => "off",
4305 GoalRecurrence::Daily => "daily",
4306 GoalRecurrence::Weekly => "weekly",
4307 GoalRecurrence::Monthly => "monthly",
4308 GoalRecurrence::Yearly => "yearly",
4309 GoalRecurrence::Custom => "custom",
4310 }
4311 }
4312
4313 pub fn from_value(value: u8) -> Option<Self> {
4315 match value {
4316 0 => Some(GoalRecurrence::Off),
4317 1 => Some(GoalRecurrence::Daily),
4318 2 => Some(GoalRecurrence::Weekly),
4319 3 => Some(GoalRecurrence::Monthly),
4320 4 => Some(GoalRecurrence::Yearly),
4321 5 => Some(GoalRecurrence::Custom),
4322 _ => None,
4323 }
4324 }
4325
4326 pub fn from_str(name: &str) -> Option<Self> {
4328 match name {
4329 "off" => Some(GoalRecurrence::Off),
4330 "daily" => Some(GoalRecurrence::Daily),
4331 "weekly" => Some(GoalRecurrence::Weekly),
4332 "monthly" => Some(GoalRecurrence::Monthly),
4333 "yearly" => Some(GoalRecurrence::Yearly),
4334 "custom" => Some(GoalRecurrence::Custom),
4335 _ => None,
4336 }
4337 }
4338}
4339
4340#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4341#[repr(u8)]
4342#[non_exhaustive]
4343pub enum GoalSource {
4344 Auto = 0,
4345 Community = 1,
4346 User = 2,
4347}
4348
4349impl GoalSource {
4350 pub fn as_str(&self) -> &'static str {
4352 match self {
4353 GoalSource::Auto => "auto",
4354 GoalSource::Community => "community",
4355 GoalSource::User => "user",
4356 }
4357 }
4358
4359 pub fn from_value(value: u8) -> Option<Self> {
4361 match value {
4362 0 => Some(GoalSource::Auto),
4363 1 => Some(GoalSource::Community),
4364 2 => Some(GoalSource::User),
4365 _ => None,
4366 }
4367 }
4368
4369 pub fn from_str(name: &str) -> Option<Self> {
4371 match name {
4372 "auto" => Some(GoalSource::Auto),
4373 "community" => Some(GoalSource::Community),
4374 "user" => Some(GoalSource::User),
4375 _ => None,
4376 }
4377 }
4378}
4379
4380#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4381#[repr(u8)]
4382#[non_exhaustive]
4383pub enum Schedule {
4384 Workout = 0,
4385 Course = 1,
4386}
4387
4388impl Schedule {
4389 pub fn as_str(&self) -> &'static str {
4391 match self {
4392 Schedule::Workout => "workout",
4393 Schedule::Course => "course",
4394 }
4395 }
4396
4397 pub fn from_value(value: u8) -> Option<Self> {
4399 match value {
4400 0 => Some(Schedule::Workout),
4401 1 => Some(Schedule::Course),
4402 _ => None,
4403 }
4404 }
4405
4406 pub fn from_str(name: &str) -> Option<Self> {
4408 match name {
4409 "workout" => Some(Schedule::Workout),
4410 "course" => Some(Schedule::Course),
4411 _ => None,
4412 }
4413 }
4414}
4415
4416#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4417#[repr(u8)]
4418#[non_exhaustive]
4419pub enum CoursePoint {
4420 Generic = 0,
4421 Summit = 1,
4422 Valley = 2,
4423 Water = 3,
4424 Food = 4,
4425 Danger = 5,
4426 Left = 6,
4427 Right = 7,
4428 Straight = 8,
4429 FirstAid = 9,
4430 FourthCategory = 10,
4431 ThirdCategory = 11,
4432 SecondCategory = 12,
4433 FirstCategory = 13,
4434 HorsCategory = 14,
4435 Sprint = 15,
4436 LeftFork = 16,
4437 RightFork = 17,
4438 MiddleFork = 18,
4439 SlightLeft = 19,
4440 SharpLeft = 20,
4441 SlightRight = 21,
4442 SharpRight = 22,
4443 UTurn = 23,
4444 SegmentStart = 24,
4445 SegmentEnd = 25,
4446 Campsite = 27,
4447 AidStation = 28,
4448 RestArea = 29,
4449 GeneralDistance = 30,
4450 Service = 31,
4451 EnergyGel = 32,
4452 SportsDrink = 33,
4453 MileMarker = 34,
4454 Checkpoint = 35,
4455 Shelter = 36,
4456 MeetingSpot = 37,
4457 Overlook = 38,
4458 Toilet = 39,
4459 Shower = 40,
4460 Gear = 41,
4461 SharpCurve = 42,
4462 SteepIncline = 43,
4463 Tunnel = 44,
4464 Bridge = 45,
4465 Obstacle = 46,
4466 Crossing = 47,
4467 Store = 48,
4468 Transition = 49,
4469 Navaid = 50,
4470 Transport = 51,
4471 Alert = 52,
4472 Info = 53,
4473}
4474
4475impl CoursePoint {
4476 pub fn as_str(&self) -> &'static str {
4478 match self {
4479 CoursePoint::Generic => "generic",
4480 CoursePoint::Summit => "summit",
4481 CoursePoint::Valley => "valley",
4482 CoursePoint::Water => "water",
4483 CoursePoint::Food => "food",
4484 CoursePoint::Danger => "danger",
4485 CoursePoint::Left => "left",
4486 CoursePoint::Right => "right",
4487 CoursePoint::Straight => "straight",
4488 CoursePoint::FirstAid => "first_aid",
4489 CoursePoint::FourthCategory => "fourth_category",
4490 CoursePoint::ThirdCategory => "third_category",
4491 CoursePoint::SecondCategory => "second_category",
4492 CoursePoint::FirstCategory => "first_category",
4493 CoursePoint::HorsCategory => "hors_category",
4494 CoursePoint::Sprint => "sprint",
4495 CoursePoint::LeftFork => "left_fork",
4496 CoursePoint::RightFork => "right_fork",
4497 CoursePoint::MiddleFork => "middle_fork",
4498 CoursePoint::SlightLeft => "slight_left",
4499 CoursePoint::SharpLeft => "sharp_left",
4500 CoursePoint::SlightRight => "slight_right",
4501 CoursePoint::SharpRight => "sharp_right",
4502 CoursePoint::UTurn => "u_turn",
4503 CoursePoint::SegmentStart => "segment_start",
4504 CoursePoint::SegmentEnd => "segment_end",
4505 CoursePoint::Campsite => "campsite",
4506 CoursePoint::AidStation => "aid_station",
4507 CoursePoint::RestArea => "rest_area",
4508 CoursePoint::GeneralDistance => "general_distance",
4509 CoursePoint::Service => "service",
4510 CoursePoint::EnergyGel => "energy_gel",
4511 CoursePoint::SportsDrink => "sports_drink",
4512 CoursePoint::MileMarker => "mile_marker",
4513 CoursePoint::Checkpoint => "checkpoint",
4514 CoursePoint::Shelter => "shelter",
4515 CoursePoint::MeetingSpot => "meeting_spot",
4516 CoursePoint::Overlook => "overlook",
4517 CoursePoint::Toilet => "toilet",
4518 CoursePoint::Shower => "shower",
4519 CoursePoint::Gear => "gear",
4520 CoursePoint::SharpCurve => "sharp_curve",
4521 CoursePoint::SteepIncline => "steep_incline",
4522 CoursePoint::Tunnel => "tunnel",
4523 CoursePoint::Bridge => "bridge",
4524 CoursePoint::Obstacle => "obstacle",
4525 CoursePoint::Crossing => "crossing",
4526 CoursePoint::Store => "store",
4527 CoursePoint::Transition => "transition",
4528 CoursePoint::Navaid => "navaid",
4529 CoursePoint::Transport => "transport",
4530 CoursePoint::Alert => "alert",
4531 CoursePoint::Info => "info",
4532 }
4533 }
4534
4535 pub fn from_value(value: u8) -> Option<Self> {
4537 match value {
4538 0 => Some(CoursePoint::Generic),
4539 1 => Some(CoursePoint::Summit),
4540 2 => Some(CoursePoint::Valley),
4541 3 => Some(CoursePoint::Water),
4542 4 => Some(CoursePoint::Food),
4543 5 => Some(CoursePoint::Danger),
4544 6 => Some(CoursePoint::Left),
4545 7 => Some(CoursePoint::Right),
4546 8 => Some(CoursePoint::Straight),
4547 9 => Some(CoursePoint::FirstAid),
4548 10 => Some(CoursePoint::FourthCategory),
4549 11 => Some(CoursePoint::ThirdCategory),
4550 12 => Some(CoursePoint::SecondCategory),
4551 13 => Some(CoursePoint::FirstCategory),
4552 14 => Some(CoursePoint::HorsCategory),
4553 15 => Some(CoursePoint::Sprint),
4554 16 => Some(CoursePoint::LeftFork),
4555 17 => Some(CoursePoint::RightFork),
4556 18 => Some(CoursePoint::MiddleFork),
4557 19 => Some(CoursePoint::SlightLeft),
4558 20 => Some(CoursePoint::SharpLeft),
4559 21 => Some(CoursePoint::SlightRight),
4560 22 => Some(CoursePoint::SharpRight),
4561 23 => Some(CoursePoint::UTurn),
4562 24 => Some(CoursePoint::SegmentStart),
4563 25 => Some(CoursePoint::SegmentEnd),
4564 27 => Some(CoursePoint::Campsite),
4565 28 => Some(CoursePoint::AidStation),
4566 29 => Some(CoursePoint::RestArea),
4567 30 => Some(CoursePoint::GeneralDistance),
4568 31 => Some(CoursePoint::Service),
4569 32 => Some(CoursePoint::EnergyGel),
4570 33 => Some(CoursePoint::SportsDrink),
4571 34 => Some(CoursePoint::MileMarker),
4572 35 => Some(CoursePoint::Checkpoint),
4573 36 => Some(CoursePoint::Shelter),
4574 37 => Some(CoursePoint::MeetingSpot),
4575 38 => Some(CoursePoint::Overlook),
4576 39 => Some(CoursePoint::Toilet),
4577 40 => Some(CoursePoint::Shower),
4578 41 => Some(CoursePoint::Gear),
4579 42 => Some(CoursePoint::SharpCurve),
4580 43 => Some(CoursePoint::SteepIncline),
4581 44 => Some(CoursePoint::Tunnel),
4582 45 => Some(CoursePoint::Bridge),
4583 46 => Some(CoursePoint::Obstacle),
4584 47 => Some(CoursePoint::Crossing),
4585 48 => Some(CoursePoint::Store),
4586 49 => Some(CoursePoint::Transition),
4587 50 => Some(CoursePoint::Navaid),
4588 51 => Some(CoursePoint::Transport),
4589 52 => Some(CoursePoint::Alert),
4590 53 => Some(CoursePoint::Info),
4591 _ => None,
4592 }
4593 }
4594
4595 pub fn from_str(name: &str) -> Option<Self> {
4597 match name {
4598 "generic" => Some(CoursePoint::Generic),
4599 "summit" => Some(CoursePoint::Summit),
4600 "valley" => Some(CoursePoint::Valley),
4601 "water" => Some(CoursePoint::Water),
4602 "food" => Some(CoursePoint::Food),
4603 "danger" => Some(CoursePoint::Danger),
4604 "left" => Some(CoursePoint::Left),
4605 "right" => Some(CoursePoint::Right),
4606 "straight" => Some(CoursePoint::Straight),
4607 "first_aid" => Some(CoursePoint::FirstAid),
4608 "fourth_category" => Some(CoursePoint::FourthCategory),
4609 "third_category" => Some(CoursePoint::ThirdCategory),
4610 "second_category" => Some(CoursePoint::SecondCategory),
4611 "first_category" => Some(CoursePoint::FirstCategory),
4612 "hors_category" => Some(CoursePoint::HorsCategory),
4613 "sprint" => Some(CoursePoint::Sprint),
4614 "left_fork" => Some(CoursePoint::LeftFork),
4615 "right_fork" => Some(CoursePoint::RightFork),
4616 "middle_fork" => Some(CoursePoint::MiddleFork),
4617 "slight_left" => Some(CoursePoint::SlightLeft),
4618 "sharp_left" => Some(CoursePoint::SharpLeft),
4619 "slight_right" => Some(CoursePoint::SlightRight),
4620 "sharp_right" => Some(CoursePoint::SharpRight),
4621 "u_turn" => Some(CoursePoint::UTurn),
4622 "segment_start" => Some(CoursePoint::SegmentStart),
4623 "segment_end" => Some(CoursePoint::SegmentEnd),
4624 "campsite" => Some(CoursePoint::Campsite),
4625 "aid_station" => Some(CoursePoint::AidStation),
4626 "rest_area" => Some(CoursePoint::RestArea),
4627 "general_distance" => Some(CoursePoint::GeneralDistance),
4628 "service" => Some(CoursePoint::Service),
4629 "energy_gel" => Some(CoursePoint::EnergyGel),
4630 "sports_drink" => Some(CoursePoint::SportsDrink),
4631 "mile_marker" => Some(CoursePoint::MileMarker),
4632 "checkpoint" => Some(CoursePoint::Checkpoint),
4633 "shelter" => Some(CoursePoint::Shelter),
4634 "meeting_spot" => Some(CoursePoint::MeetingSpot),
4635 "overlook" => Some(CoursePoint::Overlook),
4636 "toilet" => Some(CoursePoint::Toilet),
4637 "shower" => Some(CoursePoint::Shower),
4638 "gear" => Some(CoursePoint::Gear),
4639 "sharp_curve" => Some(CoursePoint::SharpCurve),
4640 "steep_incline" => Some(CoursePoint::SteepIncline),
4641 "tunnel" => Some(CoursePoint::Tunnel),
4642 "bridge" => Some(CoursePoint::Bridge),
4643 "obstacle" => Some(CoursePoint::Obstacle),
4644 "crossing" => Some(CoursePoint::Crossing),
4645 "store" => Some(CoursePoint::Store),
4646 "transition" => Some(CoursePoint::Transition),
4647 "navaid" => Some(CoursePoint::Navaid),
4648 "transport" => Some(CoursePoint::Transport),
4649 "alert" => Some(CoursePoint::Alert),
4650 "info" => Some(CoursePoint::Info),
4651 _ => None,
4652 }
4653 }
4654}
4655
4656#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4657#[repr(u16)]
4658#[non_exhaustive]
4659pub enum Manufacturer {
4660 Garmin = 1,
4661 GarminFr405Antfs = 2,
4662 Zephyr = 3,
4663 Dayton = 4,
4664 Idt = 5,
4665 Srm = 6,
4666 Quarq = 7,
4667 Ibike = 8,
4668 Saris = 9,
4669 SparkHk = 10,
4670 Tanita = 11,
4671 Echowell = 12,
4672 DynastreamOem = 13,
4673 Nautilus = 14,
4674 Dynastream = 15,
4675 Timex = 16,
4676 Metrigear = 17,
4677 Xelic = 18,
4678 Beurer = 19,
4679 Cardiosport = 20,
4680 AAndD = 21,
4681 Hmm = 22,
4682 Suunto = 23,
4683 ThitaElektronik = 24,
4684 Gpulse = 25,
4685 CleanMobile = 26,
4686 PedalBrain = 27,
4687 Peaksware = 28,
4688 Saxonar = 29,
4689 LemondFitness = 30,
4690 Dexcom = 31,
4691 WahooFitness = 32,
4692 OctaneFitness = 33,
4693 Archinoetics = 34,
4694 TheHurtBox = 35,
4695 CitizenSystems = 36,
4696 Magellan = 37,
4697 Osynce = 38,
4698 Holux = 39,
4699 Concept2 = 40,
4700 Shimano = 41,
4701 OneGiantLeap = 42,
4702 AceSensor = 43,
4703 BrimBrothers = 44,
4704 Xplova = 45,
4705 PerceptionDigital = 46,
4706 Bf1systems = 47,
4707 Pioneer = 48,
4708 Spantec = 49,
4709 Metalogics = 50,
4710 _4iiiis = 51,
4711 SeikoEpson = 52,
4712 SeikoEpsonOem = 53,
4713 IforPowell = 54,
4714 MaxwellGuider = 55,
4715 StarTrac = 56,
4716 Breakaway = 57,
4717 AlatechTechnologyLtd = 58,
4718 MioTechnologyEurope = 59,
4719 Rotor = 60,
4720 Geonaute = 61,
4721 IdBike = 62,
4722 Specialized = 63,
4723 Wtek = 64,
4724 PhysicalEnterprises = 65,
4725 NorthPoleEngineering = 66,
4726 Bkool = 67,
4727 Cateye = 68,
4728 StagesCycling = 69,
4729 Sigmasport = 70,
4730 Tomtom = 71,
4731 Peripedal = 72,
4732 Wattbike = 73,
4733 Moxy = 76,
4734 Ciclosport = 77,
4735 Powerbahn = 78,
4736 AcornProjectsAps = 79,
4737 Lifebeam = 80,
4738 Bontrager = 81,
4739 Wellgo = 82,
4740 Scosche = 83,
4741 Magura = 84,
4742 Woodway = 85,
4743 Elite = 86,
4744 NielsenKellerman = 87,
4745 DkCity = 88,
4746 Tacx = 89,
4747 DirectionTechnology = 90,
4748 Magtonic = 91,
4749 _1partcarbon = 92,
4750 InsideRideTechnologies = 93,
4751 SoundOfMotion = 94,
4752 Stryd = 95,
4753 Icg = 96,
4754 MiPulse = 97,
4755 BsxAthletics = 98,
4756 Look = 99,
4757 CampagnoloSrl = 100,
4758 BodyBikeSmart = 101,
4759 Praxisworks = 102,
4760 LimitsTechnology = 103,
4761 TopactionTechnology = 104,
4762 Cosinuss = 105,
4763 Fitcare = 106,
4764 Magene = 107,
4765 GiantManufacturingCo = 108,
4766 Tigrasport = 109,
4767 Salutron = 110,
4768 Technogym = 111,
4769 BrytonSensors = 112,
4770 LatitudeLimited = 113,
4771 SoaringTechnology = 114,
4772 Igpsport = 115,
4773 Thinkrider = 116,
4774 GopherSport = 117,
4775 Waterrower = 118,
4776 Orangetheory = 119,
4777 Inpeak = 120,
4778 Kinetic = 121,
4779 JohnsonHealthTech = 122,
4780 PolarElectro = 123,
4781 Seesense = 124,
4782 NciTechnology = 125,
4783 Iqsquare = 126,
4784 Leomo = 127,
4785 IfitCom = 128,
4786 CorosByte = 129,
4787 VersaDesign = 130,
4788 Chileaf = 131,
4789 Cycplus = 132,
4790 GravaaByte = 133,
4791 Sigeyi = 134,
4792 Coospo = 135,
4793 Geoid = 136,
4794 Bosch = 137,
4795 Kyto = 138,
4796 KineticSports = 139,
4797 DecathlonByte = 140,
4798 TqSystems = 141,
4799 TagHeuer = 142,
4800 KeiserFitness = 143,
4801 ZwiftByte = 144,
4802 PorscheEp = 145,
4803 Blackbird = 146,
4804 MeilanByte = 147,
4805 Ezon = 148,
4806 Laisi = 149,
4807 Myzone = 150,
4808 Abawo = 151,
4809 Bafang = 152,
4810 LuhongTechnology = 153,
4811 Development = 255,
4812 Healthandlife = 257,
4813 Lezyne = 258,
4814 ScribeLabs = 259,
4815 Zwift = 260,
4816 Watteam = 261,
4817 Recon = 262,
4818 FaveroElectronics = 263,
4819 Dynovelo = 264,
4820 Strava = 265,
4821 Precor = 266,
4822 Bryton = 267,
4823 Sram = 268,
4824 Navman = 269,
4825 Cobi = 270,
4826 Spivi = 271,
4827 MioMagellan = 272,
4828 Evesports = 273,
4829 SensitivusGauge = 274,
4830 Podoon = 275,
4831 LifeTimeFitness = 276,
4832 FalcoEMotors = 277,
4833 Minoura = 278,
4834 Cycliq = 279,
4835 Luxottica = 280,
4836 TrainerRoad = 281,
4837 TheSufferfest = 282,
4838 Fullspeedahead = 283,
4839 Virtualtraining = 284,
4840 Feedbacksports = 285,
4841 Omata = 286,
4842 Vdo = 287,
4843 Magneticdays = 288,
4844 Hammerhead = 289,
4845 KineticByKurt = 290,
4846 Shapelog = 291,
4847 Dabuziduo = 292,
4848 Jetblack = 293,
4849 Coros = 294,
4850 Virtugo = 295,
4851 Velosense = 296,
4852 Cycligentinc = 297,
4853 Trailforks = 298,
4854 MahleEbikemotion = 299,
4855 Nurvv = 300,
4856 Microprogram = 301,
4857 Zone5cloud = 302,
4858 Greenteg = 303,
4859 YamahaMotors = 304,
4860 Whoop = 305,
4861 Gravaa = 306,
4862 Onelap = 307,
4863 MonarkExercise = 308,
4864 Form = 309,
4865 Decathlon = 310,
4866 Syncros = 311,
4867 Heatup = 312,
4868 Cannondale = 313,
4869 TrueFitness = 314,
4870 RGTCycling = 315,
4871 Vasa = 316,
4872 RaceRepublic = 317,
4873 Fazua = 318,
4874 OrekaTraining = 319,
4875 Lsec = 320,
4876 LululemonStudio = 321,
4877 Shanyue = 322,
4878 SpinningMda = 323,
4879 Hilldating = 324,
4880 AeroSensor = 325,
4881 Nike = 326,
4882 Magicshine = 327,
4883 Ictrainer = 328,
4884 AbsoluteCycling = 329,
4885 EoSwimbetter = 330,
4886 Mywhoosh = 331,
4887 Ravemen = 332,
4888 TektroRacingProducts = 333,
4889 DaradInnovationCorporation = 334,
4890 Cycloptim = 335,
4891 Runna = 337,
4892 Zepp = 339,
4893 Peloton = 340,
4894 Carv = 341,
4895 Tissot = 342,
4896 RealVelo = 345,
4897 Wetech = 346,
4898 Jespr = 347,
4899 Huawei = 348,
4900 Gotoes = 349,
4901 Actigraphcorp = 5759,
4902}
4903
4904impl Manufacturer {
4905 pub fn as_str(&self) -> &'static str {
4907 match self {
4908 Manufacturer::Garmin => "garmin",
4909 Manufacturer::GarminFr405Antfs => "garmin_fr405_antfs",
4910 Manufacturer::Zephyr => "zephyr",
4911 Manufacturer::Dayton => "dayton",
4912 Manufacturer::Idt => "idt",
4913 Manufacturer::Srm => "srm",
4914 Manufacturer::Quarq => "quarq",
4915 Manufacturer::Ibike => "ibike",
4916 Manufacturer::Saris => "saris",
4917 Manufacturer::SparkHk => "spark_hk",
4918 Manufacturer::Tanita => "tanita",
4919 Manufacturer::Echowell => "echowell",
4920 Manufacturer::DynastreamOem => "dynastream_oem",
4921 Manufacturer::Nautilus => "nautilus",
4922 Manufacturer::Dynastream => "dynastream",
4923 Manufacturer::Timex => "timex",
4924 Manufacturer::Metrigear => "metrigear",
4925 Manufacturer::Xelic => "xelic",
4926 Manufacturer::Beurer => "beurer",
4927 Manufacturer::Cardiosport => "cardiosport",
4928 Manufacturer::AAndD => "a_and_d",
4929 Manufacturer::Hmm => "hmm",
4930 Manufacturer::Suunto => "suunto",
4931 Manufacturer::ThitaElektronik => "thita_elektronik",
4932 Manufacturer::Gpulse => "gpulse",
4933 Manufacturer::CleanMobile => "clean_mobile",
4934 Manufacturer::PedalBrain => "pedal_brain",
4935 Manufacturer::Peaksware => "peaksware",
4936 Manufacturer::Saxonar => "saxonar",
4937 Manufacturer::LemondFitness => "lemond_fitness",
4938 Manufacturer::Dexcom => "dexcom",
4939 Manufacturer::WahooFitness => "wahoo_fitness",
4940 Manufacturer::OctaneFitness => "octane_fitness",
4941 Manufacturer::Archinoetics => "archinoetics",
4942 Manufacturer::TheHurtBox => "the_hurt_box",
4943 Manufacturer::CitizenSystems => "citizen_systems",
4944 Manufacturer::Magellan => "magellan",
4945 Manufacturer::Osynce => "osynce",
4946 Manufacturer::Holux => "holux",
4947 Manufacturer::Concept2 => "concept2",
4948 Manufacturer::Shimano => "shimano",
4949 Manufacturer::OneGiantLeap => "one_giant_leap",
4950 Manufacturer::AceSensor => "ace_sensor",
4951 Manufacturer::BrimBrothers => "brim_brothers",
4952 Manufacturer::Xplova => "xplova",
4953 Manufacturer::PerceptionDigital => "perception_digital",
4954 Manufacturer::Bf1systems => "bf1systems",
4955 Manufacturer::Pioneer => "pioneer",
4956 Manufacturer::Spantec => "spantec",
4957 Manufacturer::Metalogics => "metalogics",
4958 Manufacturer::_4iiiis => "4iiiis",
4959 Manufacturer::SeikoEpson => "seiko_epson",
4960 Manufacturer::SeikoEpsonOem => "seiko_epson_oem",
4961 Manufacturer::IforPowell => "ifor_powell",
4962 Manufacturer::MaxwellGuider => "maxwell_guider",
4963 Manufacturer::StarTrac => "star_trac",
4964 Manufacturer::Breakaway => "breakaway",
4965 Manufacturer::AlatechTechnologyLtd => "alatech_technology_ltd",
4966 Manufacturer::MioTechnologyEurope => "mio_technology_europe",
4967 Manufacturer::Rotor => "rotor",
4968 Manufacturer::Geonaute => "geonaute",
4969 Manufacturer::IdBike => "id_bike",
4970 Manufacturer::Specialized => "specialized",
4971 Manufacturer::Wtek => "wtek",
4972 Manufacturer::PhysicalEnterprises => "physical_enterprises",
4973 Manufacturer::NorthPoleEngineering => "north_pole_engineering",
4974 Manufacturer::Bkool => "bkool",
4975 Manufacturer::Cateye => "cateye",
4976 Manufacturer::StagesCycling => "stages_cycling",
4977 Manufacturer::Sigmasport => "sigmasport",
4978 Manufacturer::Tomtom => "tomtom",
4979 Manufacturer::Peripedal => "peripedal",
4980 Manufacturer::Wattbike => "wattbike",
4981 Manufacturer::Moxy => "moxy",
4982 Manufacturer::Ciclosport => "ciclosport",
4983 Manufacturer::Powerbahn => "powerbahn",
4984 Manufacturer::AcornProjectsAps => "acorn_projects_aps",
4985 Manufacturer::Lifebeam => "lifebeam",
4986 Manufacturer::Bontrager => "bontrager",
4987 Manufacturer::Wellgo => "wellgo",
4988 Manufacturer::Scosche => "scosche",
4989 Manufacturer::Magura => "magura",
4990 Manufacturer::Woodway => "woodway",
4991 Manufacturer::Elite => "elite",
4992 Manufacturer::NielsenKellerman => "nielsen_kellerman",
4993 Manufacturer::DkCity => "dk_city",
4994 Manufacturer::Tacx => "tacx",
4995 Manufacturer::DirectionTechnology => "direction_technology",
4996 Manufacturer::Magtonic => "magtonic",
4997 Manufacturer::_1partcarbon => "1partcarbon",
4998 Manufacturer::InsideRideTechnologies => "inside_ride_technologies",
4999 Manufacturer::SoundOfMotion => "sound_of_motion",
5000 Manufacturer::Stryd => "stryd",
5001 Manufacturer::Icg => "icg",
5002 Manufacturer::MiPulse => "MiPulse",
5003 Manufacturer::BsxAthletics => "bsx_athletics",
5004 Manufacturer::Look => "look",
5005 Manufacturer::CampagnoloSrl => "campagnolo_srl",
5006 Manufacturer::BodyBikeSmart => "body_bike_smart",
5007 Manufacturer::Praxisworks => "praxisworks",
5008 Manufacturer::LimitsTechnology => "limits_technology",
5009 Manufacturer::TopactionTechnology => "topaction_technology",
5010 Manufacturer::Cosinuss => "cosinuss",
5011 Manufacturer::Fitcare => "fitcare",
5012 Manufacturer::Magene => "magene",
5013 Manufacturer::GiantManufacturingCo => "giant_manufacturing_co",
5014 Manufacturer::Tigrasport => "tigrasport",
5015 Manufacturer::Salutron => "salutron",
5016 Manufacturer::Technogym => "technogym",
5017 Manufacturer::BrytonSensors => "bryton_sensors",
5018 Manufacturer::LatitudeLimited => "latitude_limited",
5019 Manufacturer::SoaringTechnology => "soaring_technology",
5020 Manufacturer::Igpsport => "igpsport",
5021 Manufacturer::Thinkrider => "thinkrider",
5022 Manufacturer::GopherSport => "gopher_sport",
5023 Manufacturer::Waterrower => "waterrower",
5024 Manufacturer::Orangetheory => "orangetheory",
5025 Manufacturer::Inpeak => "inpeak",
5026 Manufacturer::Kinetic => "kinetic",
5027 Manufacturer::JohnsonHealthTech => "johnson_health_tech",
5028 Manufacturer::PolarElectro => "polar_electro",
5029 Manufacturer::Seesense => "seesense",
5030 Manufacturer::NciTechnology => "nci_technology",
5031 Manufacturer::Iqsquare => "iqsquare",
5032 Manufacturer::Leomo => "leomo",
5033 Manufacturer::IfitCom => "ifit_com",
5034 Manufacturer::CorosByte => "coros_byte",
5035 Manufacturer::VersaDesign => "versa_design",
5036 Manufacturer::Chileaf => "chileaf",
5037 Manufacturer::Cycplus => "cycplus",
5038 Manufacturer::GravaaByte => "gravaa_byte",
5039 Manufacturer::Sigeyi => "sigeyi",
5040 Manufacturer::Coospo => "coospo",
5041 Manufacturer::Geoid => "geoid",
5042 Manufacturer::Bosch => "bosch",
5043 Manufacturer::Kyto => "kyto",
5044 Manufacturer::KineticSports => "kinetic_sports",
5045 Manufacturer::DecathlonByte => "decathlon_byte",
5046 Manufacturer::TqSystems => "tq_systems",
5047 Manufacturer::TagHeuer => "tag_heuer",
5048 Manufacturer::KeiserFitness => "keiser_fitness",
5049 Manufacturer::ZwiftByte => "zwift_byte",
5050 Manufacturer::PorscheEp => "porsche_ep",
5051 Manufacturer::Blackbird => "blackbird",
5052 Manufacturer::MeilanByte => "meilan_byte",
5053 Manufacturer::Ezon => "ezon",
5054 Manufacturer::Laisi => "laisi",
5055 Manufacturer::Myzone => "myzone",
5056 Manufacturer::Abawo => "abawo",
5057 Manufacturer::Bafang => "bafang",
5058 Manufacturer::LuhongTechnology => "luhong_technology",
5059 Manufacturer::Development => "development",
5060 Manufacturer::Healthandlife => "healthandlife",
5061 Manufacturer::Lezyne => "lezyne",
5062 Manufacturer::ScribeLabs => "scribe_labs",
5063 Manufacturer::Zwift => "zwift",
5064 Manufacturer::Watteam => "watteam",
5065 Manufacturer::Recon => "recon",
5066 Manufacturer::FaveroElectronics => "favero_electronics",
5067 Manufacturer::Dynovelo => "dynovelo",
5068 Manufacturer::Strava => "strava",
5069 Manufacturer::Precor => "precor",
5070 Manufacturer::Bryton => "bryton",
5071 Manufacturer::Sram => "sram",
5072 Manufacturer::Navman => "navman",
5073 Manufacturer::Cobi => "cobi",
5074 Manufacturer::Spivi => "spivi",
5075 Manufacturer::MioMagellan => "mio_magellan",
5076 Manufacturer::Evesports => "evesports",
5077 Manufacturer::SensitivusGauge => "sensitivus_gauge",
5078 Manufacturer::Podoon => "podoon",
5079 Manufacturer::LifeTimeFitness => "life_time_fitness",
5080 Manufacturer::FalcoEMotors => "falco_e_motors",
5081 Manufacturer::Minoura => "minoura",
5082 Manufacturer::Cycliq => "cycliq",
5083 Manufacturer::Luxottica => "luxottica",
5084 Manufacturer::TrainerRoad => "trainer_road",
5085 Manufacturer::TheSufferfest => "the_sufferfest",
5086 Manufacturer::Fullspeedahead => "fullspeedahead",
5087 Manufacturer::Virtualtraining => "virtualtraining",
5088 Manufacturer::Feedbacksports => "feedbacksports",
5089 Manufacturer::Omata => "omata",
5090 Manufacturer::Vdo => "vdo",
5091 Manufacturer::Magneticdays => "magneticdays",
5092 Manufacturer::Hammerhead => "hammerhead",
5093 Manufacturer::KineticByKurt => "kinetic_by_kurt",
5094 Manufacturer::Shapelog => "shapelog",
5095 Manufacturer::Dabuziduo => "dabuziduo",
5096 Manufacturer::Jetblack => "jetblack",
5097 Manufacturer::Coros => "coros",
5098 Manufacturer::Virtugo => "virtugo",
5099 Manufacturer::Velosense => "velosense",
5100 Manufacturer::Cycligentinc => "cycligentinc",
5101 Manufacturer::Trailforks => "trailforks",
5102 Manufacturer::MahleEbikemotion => "mahle_ebikemotion",
5103 Manufacturer::Nurvv => "nurvv",
5104 Manufacturer::Microprogram => "microprogram",
5105 Manufacturer::Zone5cloud => "zone5cloud",
5106 Manufacturer::Greenteg => "greenteg",
5107 Manufacturer::YamahaMotors => "yamaha_motors",
5108 Manufacturer::Whoop => "whoop",
5109 Manufacturer::Gravaa => "gravaa",
5110 Manufacturer::Onelap => "onelap",
5111 Manufacturer::MonarkExercise => "monark_exercise",
5112 Manufacturer::Form => "form",
5113 Manufacturer::Decathlon => "decathlon",
5114 Manufacturer::Syncros => "syncros",
5115 Manufacturer::Heatup => "heatup",
5116 Manufacturer::Cannondale => "cannondale",
5117 Manufacturer::TrueFitness => "true_fitness",
5118 Manufacturer::RGTCycling => "RGT_cycling",
5119 Manufacturer::Vasa => "vasa",
5120 Manufacturer::RaceRepublic => "race_republic",
5121 Manufacturer::Fazua => "fazua",
5122 Manufacturer::OrekaTraining => "oreka_training",
5123 Manufacturer::Lsec => "lsec",
5124 Manufacturer::LululemonStudio => "lululemon_studio",
5125 Manufacturer::Shanyue => "shanyue",
5126 Manufacturer::SpinningMda => "spinning_mda",
5127 Manufacturer::Hilldating => "hilldating",
5128 Manufacturer::AeroSensor => "aero_sensor",
5129 Manufacturer::Nike => "nike",
5130 Manufacturer::Magicshine => "magicshine",
5131 Manufacturer::Ictrainer => "ictrainer",
5132 Manufacturer::AbsoluteCycling => "absolute_cycling",
5133 Manufacturer::EoSwimbetter => "eo_swimbetter",
5134 Manufacturer::Mywhoosh => "mywhoosh",
5135 Manufacturer::Ravemen => "ravemen",
5136 Manufacturer::TektroRacingProducts => "tektro_racing_products",
5137 Manufacturer::DaradInnovationCorporation => "darad_innovation_corporation",
5138 Manufacturer::Cycloptim => "cycloptim",
5139 Manufacturer::Runna => "runna",
5140 Manufacturer::Zepp => "zepp",
5141 Manufacturer::Peloton => "peloton",
5142 Manufacturer::Carv => "carv",
5143 Manufacturer::Tissot => "tissot",
5144 Manufacturer::RealVelo => "real_velo",
5145 Manufacturer::Wetech => "wetech",
5146 Manufacturer::Jespr => "jespr",
5147 Manufacturer::Huawei => "huawei",
5148 Manufacturer::Gotoes => "gotoes",
5149 Manufacturer::Actigraphcorp => "actigraphcorp",
5150 }
5151 }
5152
5153 pub fn from_value(value: u16) -> Option<Self> {
5155 match value {
5156 1 => Some(Manufacturer::Garmin),
5157 2 => Some(Manufacturer::GarminFr405Antfs),
5158 3 => Some(Manufacturer::Zephyr),
5159 4 => Some(Manufacturer::Dayton),
5160 5 => Some(Manufacturer::Idt),
5161 6 => Some(Manufacturer::Srm),
5162 7 => Some(Manufacturer::Quarq),
5163 8 => Some(Manufacturer::Ibike),
5164 9 => Some(Manufacturer::Saris),
5165 10 => Some(Manufacturer::SparkHk),
5166 11 => Some(Manufacturer::Tanita),
5167 12 => Some(Manufacturer::Echowell),
5168 13 => Some(Manufacturer::DynastreamOem),
5169 14 => Some(Manufacturer::Nautilus),
5170 15 => Some(Manufacturer::Dynastream),
5171 16 => Some(Manufacturer::Timex),
5172 17 => Some(Manufacturer::Metrigear),
5173 18 => Some(Manufacturer::Xelic),
5174 19 => Some(Manufacturer::Beurer),
5175 20 => Some(Manufacturer::Cardiosport),
5176 21 => Some(Manufacturer::AAndD),
5177 22 => Some(Manufacturer::Hmm),
5178 23 => Some(Manufacturer::Suunto),
5179 24 => Some(Manufacturer::ThitaElektronik),
5180 25 => Some(Manufacturer::Gpulse),
5181 26 => Some(Manufacturer::CleanMobile),
5182 27 => Some(Manufacturer::PedalBrain),
5183 28 => Some(Manufacturer::Peaksware),
5184 29 => Some(Manufacturer::Saxonar),
5185 30 => Some(Manufacturer::LemondFitness),
5186 31 => Some(Manufacturer::Dexcom),
5187 32 => Some(Manufacturer::WahooFitness),
5188 33 => Some(Manufacturer::OctaneFitness),
5189 34 => Some(Manufacturer::Archinoetics),
5190 35 => Some(Manufacturer::TheHurtBox),
5191 36 => Some(Manufacturer::CitizenSystems),
5192 37 => Some(Manufacturer::Magellan),
5193 38 => Some(Manufacturer::Osynce),
5194 39 => Some(Manufacturer::Holux),
5195 40 => Some(Manufacturer::Concept2),
5196 41 => Some(Manufacturer::Shimano),
5197 42 => Some(Manufacturer::OneGiantLeap),
5198 43 => Some(Manufacturer::AceSensor),
5199 44 => Some(Manufacturer::BrimBrothers),
5200 45 => Some(Manufacturer::Xplova),
5201 46 => Some(Manufacturer::PerceptionDigital),
5202 47 => Some(Manufacturer::Bf1systems),
5203 48 => Some(Manufacturer::Pioneer),
5204 49 => Some(Manufacturer::Spantec),
5205 50 => Some(Manufacturer::Metalogics),
5206 51 => Some(Manufacturer::_4iiiis),
5207 52 => Some(Manufacturer::SeikoEpson),
5208 53 => Some(Manufacturer::SeikoEpsonOem),
5209 54 => Some(Manufacturer::IforPowell),
5210 55 => Some(Manufacturer::MaxwellGuider),
5211 56 => Some(Manufacturer::StarTrac),
5212 57 => Some(Manufacturer::Breakaway),
5213 58 => Some(Manufacturer::AlatechTechnologyLtd),
5214 59 => Some(Manufacturer::MioTechnologyEurope),
5215 60 => Some(Manufacturer::Rotor),
5216 61 => Some(Manufacturer::Geonaute),
5217 62 => Some(Manufacturer::IdBike),
5218 63 => Some(Manufacturer::Specialized),
5219 64 => Some(Manufacturer::Wtek),
5220 65 => Some(Manufacturer::PhysicalEnterprises),
5221 66 => Some(Manufacturer::NorthPoleEngineering),
5222 67 => Some(Manufacturer::Bkool),
5223 68 => Some(Manufacturer::Cateye),
5224 69 => Some(Manufacturer::StagesCycling),
5225 70 => Some(Manufacturer::Sigmasport),
5226 71 => Some(Manufacturer::Tomtom),
5227 72 => Some(Manufacturer::Peripedal),
5228 73 => Some(Manufacturer::Wattbike),
5229 76 => Some(Manufacturer::Moxy),
5230 77 => Some(Manufacturer::Ciclosport),
5231 78 => Some(Manufacturer::Powerbahn),
5232 79 => Some(Manufacturer::AcornProjectsAps),
5233 80 => Some(Manufacturer::Lifebeam),
5234 81 => Some(Manufacturer::Bontrager),
5235 82 => Some(Manufacturer::Wellgo),
5236 83 => Some(Manufacturer::Scosche),
5237 84 => Some(Manufacturer::Magura),
5238 85 => Some(Manufacturer::Woodway),
5239 86 => Some(Manufacturer::Elite),
5240 87 => Some(Manufacturer::NielsenKellerman),
5241 88 => Some(Manufacturer::DkCity),
5242 89 => Some(Manufacturer::Tacx),
5243 90 => Some(Manufacturer::DirectionTechnology),
5244 91 => Some(Manufacturer::Magtonic),
5245 92 => Some(Manufacturer::_1partcarbon),
5246 93 => Some(Manufacturer::InsideRideTechnologies),
5247 94 => Some(Manufacturer::SoundOfMotion),
5248 95 => Some(Manufacturer::Stryd),
5249 96 => Some(Manufacturer::Icg),
5250 97 => Some(Manufacturer::MiPulse),
5251 98 => Some(Manufacturer::BsxAthletics),
5252 99 => Some(Manufacturer::Look),
5253 100 => Some(Manufacturer::CampagnoloSrl),
5254 101 => Some(Manufacturer::BodyBikeSmart),
5255 102 => Some(Manufacturer::Praxisworks),
5256 103 => Some(Manufacturer::LimitsTechnology),
5257 104 => Some(Manufacturer::TopactionTechnology),
5258 105 => Some(Manufacturer::Cosinuss),
5259 106 => Some(Manufacturer::Fitcare),
5260 107 => Some(Manufacturer::Magene),
5261 108 => Some(Manufacturer::GiantManufacturingCo),
5262 109 => Some(Manufacturer::Tigrasport),
5263 110 => Some(Manufacturer::Salutron),
5264 111 => Some(Manufacturer::Technogym),
5265 112 => Some(Manufacturer::BrytonSensors),
5266 113 => Some(Manufacturer::LatitudeLimited),
5267 114 => Some(Manufacturer::SoaringTechnology),
5268 115 => Some(Manufacturer::Igpsport),
5269 116 => Some(Manufacturer::Thinkrider),
5270 117 => Some(Manufacturer::GopherSport),
5271 118 => Some(Manufacturer::Waterrower),
5272 119 => Some(Manufacturer::Orangetheory),
5273 120 => Some(Manufacturer::Inpeak),
5274 121 => Some(Manufacturer::Kinetic),
5275 122 => Some(Manufacturer::JohnsonHealthTech),
5276 123 => Some(Manufacturer::PolarElectro),
5277 124 => Some(Manufacturer::Seesense),
5278 125 => Some(Manufacturer::NciTechnology),
5279 126 => Some(Manufacturer::Iqsquare),
5280 127 => Some(Manufacturer::Leomo),
5281 128 => Some(Manufacturer::IfitCom),
5282 129 => Some(Manufacturer::CorosByte),
5283 130 => Some(Manufacturer::VersaDesign),
5284 131 => Some(Manufacturer::Chileaf),
5285 132 => Some(Manufacturer::Cycplus),
5286 133 => Some(Manufacturer::GravaaByte),
5287 134 => Some(Manufacturer::Sigeyi),
5288 135 => Some(Manufacturer::Coospo),
5289 136 => Some(Manufacturer::Geoid),
5290 137 => Some(Manufacturer::Bosch),
5291 138 => Some(Manufacturer::Kyto),
5292 139 => Some(Manufacturer::KineticSports),
5293 140 => Some(Manufacturer::DecathlonByte),
5294 141 => Some(Manufacturer::TqSystems),
5295 142 => Some(Manufacturer::TagHeuer),
5296 143 => Some(Manufacturer::KeiserFitness),
5297 144 => Some(Manufacturer::ZwiftByte),
5298 145 => Some(Manufacturer::PorscheEp),
5299 146 => Some(Manufacturer::Blackbird),
5300 147 => Some(Manufacturer::MeilanByte),
5301 148 => Some(Manufacturer::Ezon),
5302 149 => Some(Manufacturer::Laisi),
5303 150 => Some(Manufacturer::Myzone),
5304 151 => Some(Manufacturer::Abawo),
5305 152 => Some(Manufacturer::Bafang),
5306 153 => Some(Manufacturer::LuhongTechnology),
5307 255 => Some(Manufacturer::Development),
5308 257 => Some(Manufacturer::Healthandlife),
5309 258 => Some(Manufacturer::Lezyne),
5310 259 => Some(Manufacturer::ScribeLabs),
5311 260 => Some(Manufacturer::Zwift),
5312 261 => Some(Manufacturer::Watteam),
5313 262 => Some(Manufacturer::Recon),
5314 263 => Some(Manufacturer::FaveroElectronics),
5315 264 => Some(Manufacturer::Dynovelo),
5316 265 => Some(Manufacturer::Strava),
5317 266 => Some(Manufacturer::Precor),
5318 267 => Some(Manufacturer::Bryton),
5319 268 => Some(Manufacturer::Sram),
5320 269 => Some(Manufacturer::Navman),
5321 270 => Some(Manufacturer::Cobi),
5322 271 => Some(Manufacturer::Spivi),
5323 272 => Some(Manufacturer::MioMagellan),
5324 273 => Some(Manufacturer::Evesports),
5325 274 => Some(Manufacturer::SensitivusGauge),
5326 275 => Some(Manufacturer::Podoon),
5327 276 => Some(Manufacturer::LifeTimeFitness),
5328 277 => Some(Manufacturer::FalcoEMotors),
5329 278 => Some(Manufacturer::Minoura),
5330 279 => Some(Manufacturer::Cycliq),
5331 280 => Some(Manufacturer::Luxottica),
5332 281 => Some(Manufacturer::TrainerRoad),
5333 282 => Some(Manufacturer::TheSufferfest),
5334 283 => Some(Manufacturer::Fullspeedahead),
5335 284 => Some(Manufacturer::Virtualtraining),
5336 285 => Some(Manufacturer::Feedbacksports),
5337 286 => Some(Manufacturer::Omata),
5338 287 => Some(Manufacturer::Vdo),
5339 288 => Some(Manufacturer::Magneticdays),
5340 289 => Some(Manufacturer::Hammerhead),
5341 290 => Some(Manufacturer::KineticByKurt),
5342 291 => Some(Manufacturer::Shapelog),
5343 292 => Some(Manufacturer::Dabuziduo),
5344 293 => Some(Manufacturer::Jetblack),
5345 294 => Some(Manufacturer::Coros),
5346 295 => Some(Manufacturer::Virtugo),
5347 296 => Some(Manufacturer::Velosense),
5348 297 => Some(Manufacturer::Cycligentinc),
5349 298 => Some(Manufacturer::Trailforks),
5350 299 => Some(Manufacturer::MahleEbikemotion),
5351 300 => Some(Manufacturer::Nurvv),
5352 301 => Some(Manufacturer::Microprogram),
5353 302 => Some(Manufacturer::Zone5cloud),
5354 303 => Some(Manufacturer::Greenteg),
5355 304 => Some(Manufacturer::YamahaMotors),
5356 305 => Some(Manufacturer::Whoop),
5357 306 => Some(Manufacturer::Gravaa),
5358 307 => Some(Manufacturer::Onelap),
5359 308 => Some(Manufacturer::MonarkExercise),
5360 309 => Some(Manufacturer::Form),
5361 310 => Some(Manufacturer::Decathlon),
5362 311 => Some(Manufacturer::Syncros),
5363 312 => Some(Manufacturer::Heatup),
5364 313 => Some(Manufacturer::Cannondale),
5365 314 => Some(Manufacturer::TrueFitness),
5366 315 => Some(Manufacturer::RGTCycling),
5367 316 => Some(Manufacturer::Vasa),
5368 317 => Some(Manufacturer::RaceRepublic),
5369 318 => Some(Manufacturer::Fazua),
5370 319 => Some(Manufacturer::OrekaTraining),
5371 320 => Some(Manufacturer::Lsec),
5372 321 => Some(Manufacturer::LululemonStudio),
5373 322 => Some(Manufacturer::Shanyue),
5374 323 => Some(Manufacturer::SpinningMda),
5375 324 => Some(Manufacturer::Hilldating),
5376 325 => Some(Manufacturer::AeroSensor),
5377 326 => Some(Manufacturer::Nike),
5378 327 => Some(Manufacturer::Magicshine),
5379 328 => Some(Manufacturer::Ictrainer),
5380 329 => Some(Manufacturer::AbsoluteCycling),
5381 330 => Some(Manufacturer::EoSwimbetter),
5382 331 => Some(Manufacturer::Mywhoosh),
5383 332 => Some(Manufacturer::Ravemen),
5384 333 => Some(Manufacturer::TektroRacingProducts),
5385 334 => Some(Manufacturer::DaradInnovationCorporation),
5386 335 => Some(Manufacturer::Cycloptim),
5387 337 => Some(Manufacturer::Runna),
5388 339 => Some(Manufacturer::Zepp),
5389 340 => Some(Manufacturer::Peloton),
5390 341 => Some(Manufacturer::Carv),
5391 342 => Some(Manufacturer::Tissot),
5392 345 => Some(Manufacturer::RealVelo),
5393 346 => Some(Manufacturer::Wetech),
5394 347 => Some(Manufacturer::Jespr),
5395 348 => Some(Manufacturer::Huawei),
5396 349 => Some(Manufacturer::Gotoes),
5397 5759 => Some(Manufacturer::Actigraphcorp),
5398 _ => None,
5399 }
5400 }
5401
5402 pub fn from_str(name: &str) -> Option<Self> {
5404 match name {
5405 "garmin" => Some(Manufacturer::Garmin),
5406 "garmin_fr405_antfs" => Some(Manufacturer::GarminFr405Antfs),
5407 "zephyr" => Some(Manufacturer::Zephyr),
5408 "dayton" => Some(Manufacturer::Dayton),
5409 "idt" => Some(Manufacturer::Idt),
5410 "srm" => Some(Manufacturer::Srm),
5411 "quarq" => Some(Manufacturer::Quarq),
5412 "ibike" => Some(Manufacturer::Ibike),
5413 "saris" => Some(Manufacturer::Saris),
5414 "spark_hk" => Some(Manufacturer::SparkHk),
5415 "tanita" => Some(Manufacturer::Tanita),
5416 "echowell" => Some(Manufacturer::Echowell),
5417 "dynastream_oem" => Some(Manufacturer::DynastreamOem),
5418 "nautilus" => Some(Manufacturer::Nautilus),
5419 "dynastream" => Some(Manufacturer::Dynastream),
5420 "timex" => Some(Manufacturer::Timex),
5421 "metrigear" => Some(Manufacturer::Metrigear),
5422 "xelic" => Some(Manufacturer::Xelic),
5423 "beurer" => Some(Manufacturer::Beurer),
5424 "cardiosport" => Some(Manufacturer::Cardiosport),
5425 "a_and_d" => Some(Manufacturer::AAndD),
5426 "hmm" => Some(Manufacturer::Hmm),
5427 "suunto" => Some(Manufacturer::Suunto),
5428 "thita_elektronik" => Some(Manufacturer::ThitaElektronik),
5429 "gpulse" => Some(Manufacturer::Gpulse),
5430 "clean_mobile" => Some(Manufacturer::CleanMobile),
5431 "pedal_brain" => Some(Manufacturer::PedalBrain),
5432 "peaksware" => Some(Manufacturer::Peaksware),
5433 "saxonar" => Some(Manufacturer::Saxonar),
5434 "lemond_fitness" => Some(Manufacturer::LemondFitness),
5435 "dexcom" => Some(Manufacturer::Dexcom),
5436 "wahoo_fitness" => Some(Manufacturer::WahooFitness),
5437 "octane_fitness" => Some(Manufacturer::OctaneFitness),
5438 "archinoetics" => Some(Manufacturer::Archinoetics),
5439 "the_hurt_box" => Some(Manufacturer::TheHurtBox),
5440 "citizen_systems" => Some(Manufacturer::CitizenSystems),
5441 "magellan" => Some(Manufacturer::Magellan),
5442 "osynce" => Some(Manufacturer::Osynce),
5443 "holux" => Some(Manufacturer::Holux),
5444 "concept2" => Some(Manufacturer::Concept2),
5445 "shimano" => Some(Manufacturer::Shimano),
5446 "one_giant_leap" => Some(Manufacturer::OneGiantLeap),
5447 "ace_sensor" => Some(Manufacturer::AceSensor),
5448 "brim_brothers" => Some(Manufacturer::BrimBrothers),
5449 "xplova" => Some(Manufacturer::Xplova),
5450 "perception_digital" => Some(Manufacturer::PerceptionDigital),
5451 "bf1systems" => Some(Manufacturer::Bf1systems),
5452 "pioneer" => Some(Manufacturer::Pioneer),
5453 "spantec" => Some(Manufacturer::Spantec),
5454 "metalogics" => Some(Manufacturer::Metalogics),
5455 "4iiiis" => Some(Manufacturer::_4iiiis),
5456 "seiko_epson" => Some(Manufacturer::SeikoEpson),
5457 "seiko_epson_oem" => Some(Manufacturer::SeikoEpsonOem),
5458 "ifor_powell" => Some(Manufacturer::IforPowell),
5459 "maxwell_guider" => Some(Manufacturer::MaxwellGuider),
5460 "star_trac" => Some(Manufacturer::StarTrac),
5461 "breakaway" => Some(Manufacturer::Breakaway),
5462 "alatech_technology_ltd" => Some(Manufacturer::AlatechTechnologyLtd),
5463 "mio_technology_europe" => Some(Manufacturer::MioTechnologyEurope),
5464 "rotor" => Some(Manufacturer::Rotor),
5465 "geonaute" => Some(Manufacturer::Geonaute),
5466 "id_bike" => Some(Manufacturer::IdBike),
5467 "specialized" => Some(Manufacturer::Specialized),
5468 "wtek" => Some(Manufacturer::Wtek),
5469 "physical_enterprises" => Some(Manufacturer::PhysicalEnterprises),
5470 "north_pole_engineering" => Some(Manufacturer::NorthPoleEngineering),
5471 "bkool" => Some(Manufacturer::Bkool),
5472 "cateye" => Some(Manufacturer::Cateye),
5473 "stages_cycling" => Some(Manufacturer::StagesCycling),
5474 "sigmasport" => Some(Manufacturer::Sigmasport),
5475 "tomtom" => Some(Manufacturer::Tomtom),
5476 "peripedal" => Some(Manufacturer::Peripedal),
5477 "wattbike" => Some(Manufacturer::Wattbike),
5478 "moxy" => Some(Manufacturer::Moxy),
5479 "ciclosport" => Some(Manufacturer::Ciclosport),
5480 "powerbahn" => Some(Manufacturer::Powerbahn),
5481 "acorn_projects_aps" => Some(Manufacturer::AcornProjectsAps),
5482 "lifebeam" => Some(Manufacturer::Lifebeam),
5483 "bontrager" => Some(Manufacturer::Bontrager),
5484 "wellgo" => Some(Manufacturer::Wellgo),
5485 "scosche" => Some(Manufacturer::Scosche),
5486 "magura" => Some(Manufacturer::Magura),
5487 "woodway" => Some(Manufacturer::Woodway),
5488 "elite" => Some(Manufacturer::Elite),
5489 "nielsen_kellerman" => Some(Manufacturer::NielsenKellerman),
5490 "dk_city" => Some(Manufacturer::DkCity),
5491 "tacx" => Some(Manufacturer::Tacx),
5492 "direction_technology" => Some(Manufacturer::DirectionTechnology),
5493 "magtonic" => Some(Manufacturer::Magtonic),
5494 "1partcarbon" => Some(Manufacturer::_1partcarbon),
5495 "inside_ride_technologies" => Some(Manufacturer::InsideRideTechnologies),
5496 "sound_of_motion" => Some(Manufacturer::SoundOfMotion),
5497 "stryd" => Some(Manufacturer::Stryd),
5498 "icg" => Some(Manufacturer::Icg),
5499 "MiPulse" => Some(Manufacturer::MiPulse),
5500 "bsx_athletics" => Some(Manufacturer::BsxAthletics),
5501 "look" => Some(Manufacturer::Look),
5502 "campagnolo_srl" => Some(Manufacturer::CampagnoloSrl),
5503 "body_bike_smart" => Some(Manufacturer::BodyBikeSmart),
5504 "praxisworks" => Some(Manufacturer::Praxisworks),
5505 "limits_technology" => Some(Manufacturer::LimitsTechnology),
5506 "topaction_technology" => Some(Manufacturer::TopactionTechnology),
5507 "cosinuss" => Some(Manufacturer::Cosinuss),
5508 "fitcare" => Some(Manufacturer::Fitcare),
5509 "magene" => Some(Manufacturer::Magene),
5510 "giant_manufacturing_co" => Some(Manufacturer::GiantManufacturingCo),
5511 "tigrasport" => Some(Manufacturer::Tigrasport),
5512 "salutron" => Some(Manufacturer::Salutron),
5513 "technogym" => Some(Manufacturer::Technogym),
5514 "bryton_sensors" => Some(Manufacturer::BrytonSensors),
5515 "latitude_limited" => Some(Manufacturer::LatitudeLimited),
5516 "soaring_technology" => Some(Manufacturer::SoaringTechnology),
5517 "igpsport" => Some(Manufacturer::Igpsport),
5518 "thinkrider" => Some(Manufacturer::Thinkrider),
5519 "gopher_sport" => Some(Manufacturer::GopherSport),
5520 "waterrower" => Some(Manufacturer::Waterrower),
5521 "orangetheory" => Some(Manufacturer::Orangetheory),
5522 "inpeak" => Some(Manufacturer::Inpeak),
5523 "kinetic" => Some(Manufacturer::Kinetic),
5524 "johnson_health_tech" => Some(Manufacturer::JohnsonHealthTech),
5525 "polar_electro" => Some(Manufacturer::PolarElectro),
5526 "seesense" => Some(Manufacturer::Seesense),
5527 "nci_technology" => Some(Manufacturer::NciTechnology),
5528 "iqsquare" => Some(Manufacturer::Iqsquare),
5529 "leomo" => Some(Manufacturer::Leomo),
5530 "ifit_com" => Some(Manufacturer::IfitCom),
5531 "coros_byte" => Some(Manufacturer::CorosByte),
5532 "versa_design" => Some(Manufacturer::VersaDesign),
5533 "chileaf" => Some(Manufacturer::Chileaf),
5534 "cycplus" => Some(Manufacturer::Cycplus),
5535 "gravaa_byte" => Some(Manufacturer::GravaaByte),
5536 "sigeyi" => Some(Manufacturer::Sigeyi),
5537 "coospo" => Some(Manufacturer::Coospo),
5538 "geoid" => Some(Manufacturer::Geoid),
5539 "bosch" => Some(Manufacturer::Bosch),
5540 "kyto" => Some(Manufacturer::Kyto),
5541 "kinetic_sports" => Some(Manufacturer::KineticSports),
5542 "decathlon_byte" => Some(Manufacturer::DecathlonByte),
5543 "tq_systems" => Some(Manufacturer::TqSystems),
5544 "tag_heuer" => Some(Manufacturer::TagHeuer),
5545 "keiser_fitness" => Some(Manufacturer::KeiserFitness),
5546 "zwift_byte" => Some(Manufacturer::ZwiftByte),
5547 "porsche_ep" => Some(Manufacturer::PorscheEp),
5548 "blackbird" => Some(Manufacturer::Blackbird),
5549 "meilan_byte" => Some(Manufacturer::MeilanByte),
5550 "ezon" => Some(Manufacturer::Ezon),
5551 "laisi" => Some(Manufacturer::Laisi),
5552 "myzone" => Some(Manufacturer::Myzone),
5553 "abawo" => Some(Manufacturer::Abawo),
5554 "bafang" => Some(Manufacturer::Bafang),
5555 "luhong_technology" => Some(Manufacturer::LuhongTechnology),
5556 "development" => Some(Manufacturer::Development),
5557 "healthandlife" => Some(Manufacturer::Healthandlife),
5558 "lezyne" => Some(Manufacturer::Lezyne),
5559 "scribe_labs" => Some(Manufacturer::ScribeLabs),
5560 "zwift" => Some(Manufacturer::Zwift),
5561 "watteam" => Some(Manufacturer::Watteam),
5562 "recon" => Some(Manufacturer::Recon),
5563 "favero_electronics" => Some(Manufacturer::FaveroElectronics),
5564 "dynovelo" => Some(Manufacturer::Dynovelo),
5565 "strava" => Some(Manufacturer::Strava),
5566 "precor" => Some(Manufacturer::Precor),
5567 "bryton" => Some(Manufacturer::Bryton),
5568 "sram" => Some(Manufacturer::Sram),
5569 "navman" => Some(Manufacturer::Navman),
5570 "cobi" => Some(Manufacturer::Cobi),
5571 "spivi" => Some(Manufacturer::Spivi),
5572 "mio_magellan" => Some(Manufacturer::MioMagellan),
5573 "evesports" => Some(Manufacturer::Evesports),
5574 "sensitivus_gauge" => Some(Manufacturer::SensitivusGauge),
5575 "podoon" => Some(Manufacturer::Podoon),
5576 "life_time_fitness" => Some(Manufacturer::LifeTimeFitness),
5577 "falco_e_motors" => Some(Manufacturer::FalcoEMotors),
5578 "minoura" => Some(Manufacturer::Minoura),
5579 "cycliq" => Some(Manufacturer::Cycliq),
5580 "luxottica" => Some(Manufacturer::Luxottica),
5581 "trainer_road" => Some(Manufacturer::TrainerRoad),
5582 "the_sufferfest" => Some(Manufacturer::TheSufferfest),
5583 "fullspeedahead" => Some(Manufacturer::Fullspeedahead),
5584 "virtualtraining" => Some(Manufacturer::Virtualtraining),
5585 "feedbacksports" => Some(Manufacturer::Feedbacksports),
5586 "omata" => Some(Manufacturer::Omata),
5587 "vdo" => Some(Manufacturer::Vdo),
5588 "magneticdays" => Some(Manufacturer::Magneticdays),
5589 "hammerhead" => Some(Manufacturer::Hammerhead),
5590 "kinetic_by_kurt" => Some(Manufacturer::KineticByKurt),
5591 "shapelog" => Some(Manufacturer::Shapelog),
5592 "dabuziduo" => Some(Manufacturer::Dabuziduo),
5593 "jetblack" => Some(Manufacturer::Jetblack),
5594 "coros" => Some(Manufacturer::Coros),
5595 "virtugo" => Some(Manufacturer::Virtugo),
5596 "velosense" => Some(Manufacturer::Velosense),
5597 "cycligentinc" => Some(Manufacturer::Cycligentinc),
5598 "trailforks" => Some(Manufacturer::Trailforks),
5599 "mahle_ebikemotion" => Some(Manufacturer::MahleEbikemotion),
5600 "nurvv" => Some(Manufacturer::Nurvv),
5601 "microprogram" => Some(Manufacturer::Microprogram),
5602 "zone5cloud" => Some(Manufacturer::Zone5cloud),
5603 "greenteg" => Some(Manufacturer::Greenteg),
5604 "yamaha_motors" => Some(Manufacturer::YamahaMotors),
5605 "whoop" => Some(Manufacturer::Whoop),
5606 "gravaa" => Some(Manufacturer::Gravaa),
5607 "onelap" => Some(Manufacturer::Onelap),
5608 "monark_exercise" => Some(Manufacturer::MonarkExercise),
5609 "form" => Some(Manufacturer::Form),
5610 "decathlon" => Some(Manufacturer::Decathlon),
5611 "syncros" => Some(Manufacturer::Syncros),
5612 "heatup" => Some(Manufacturer::Heatup),
5613 "cannondale" => Some(Manufacturer::Cannondale),
5614 "true_fitness" => Some(Manufacturer::TrueFitness),
5615 "RGT_cycling" => Some(Manufacturer::RGTCycling),
5616 "vasa" => Some(Manufacturer::Vasa),
5617 "race_republic" => Some(Manufacturer::RaceRepublic),
5618 "fazua" => Some(Manufacturer::Fazua),
5619 "oreka_training" => Some(Manufacturer::OrekaTraining),
5620 "lsec" => Some(Manufacturer::Lsec),
5621 "lululemon_studio" => Some(Manufacturer::LululemonStudio),
5622 "shanyue" => Some(Manufacturer::Shanyue),
5623 "spinning_mda" => Some(Manufacturer::SpinningMda),
5624 "hilldating" => Some(Manufacturer::Hilldating),
5625 "aero_sensor" => Some(Manufacturer::AeroSensor),
5626 "nike" => Some(Manufacturer::Nike),
5627 "magicshine" => Some(Manufacturer::Magicshine),
5628 "ictrainer" => Some(Manufacturer::Ictrainer),
5629 "absolute_cycling" => Some(Manufacturer::AbsoluteCycling),
5630 "eo_swimbetter" => Some(Manufacturer::EoSwimbetter),
5631 "mywhoosh" => Some(Manufacturer::Mywhoosh),
5632 "ravemen" => Some(Manufacturer::Ravemen),
5633 "tektro_racing_products" => Some(Manufacturer::TektroRacingProducts),
5634 "darad_innovation_corporation" => Some(Manufacturer::DaradInnovationCorporation),
5635 "cycloptim" => Some(Manufacturer::Cycloptim),
5636 "runna" => Some(Manufacturer::Runna),
5637 "zepp" => Some(Manufacturer::Zepp),
5638 "peloton" => Some(Manufacturer::Peloton),
5639 "carv" => Some(Manufacturer::Carv),
5640 "tissot" => Some(Manufacturer::Tissot),
5641 "real_velo" => Some(Manufacturer::RealVelo),
5642 "wetech" => Some(Manufacturer::Wetech),
5643 "jespr" => Some(Manufacturer::Jespr),
5644 "huawei" => Some(Manufacturer::Huawei),
5645 "gotoes" => Some(Manufacturer::Gotoes),
5646 "actigraphcorp" => Some(Manufacturer::Actigraphcorp),
5647 _ => None,
5648 }
5649 }
5650}
5651
5652#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5653#[repr(u16)]
5654#[non_exhaustive]
5655pub enum GarminProduct {
5656 Hrm1 = 1,
5657 Axh01 = 2,
5658 Axb01 = 3,
5659 Axb02 = 4,
5660 Hrm2ss = 5,
5661 DsiAlf02 = 6,
5662 Hrm3ss = 7,
5663 HrmRunSingleByteProductId = 8,
5664 Bsm = 9,
5665 Bcm = 10,
5666 Axs01 = 11,
5667 HrmTriSingleByteProductId = 12,
5668 Hrm4RunSingleByteProductId = 13,
5669 Fr225SingleByteProductId = 14,
5670 Gen3BsmSingleByteProductId = 15,
5671 Gen3BcmSingleByteProductId = 16,
5672 HrmFitSingleByteProductId = 22,
5673 OHR = 255,
5674 Fr301China = 473,
5675 Fr301Japan = 474,
5676 Fr301Korea = 475,
5677 Fr301Taiwan = 494,
5678 Fr405 = 717,
5679 Fr50 = 782,
5680 Fr405Japan = 987,
5681 Fr60 = 988,
5682 DsiAlf01 = 1011,
5683 Fr310xt = 1018,
5684 Edge500 = 1036,
5685 Fr110 = 1124,
5686 Edge800 = 1169,
5687 Edge500Taiwan = 1199,
5688 Edge500Japan = 1213,
5689 Chirp = 1253,
5690 Fr110Japan = 1274,
5691 Edge200 = 1325,
5692 Fr910xt = 1328,
5693 Edge800Taiwan = 1333,
5694 Edge800Japan = 1334,
5695 Alf04 = 1341,
5696 Fr610 = 1345,
5697 Fr210Japan = 1360,
5698 VectorSs = 1380,
5699 VectorCp = 1381,
5700 Edge800China = 1386,
5701 Edge500China = 1387,
5702 ApproachG10 = 1405,
5703 Fr610Japan = 1410,
5704 Edge500Korea = 1422,
5705 Fr70 = 1436,
5706 Fr310xt4t = 1446,
5707 Amx = 1461,
5708 Fr10 = 1482,
5709 Edge800Korea = 1497,
5710 Swim = 1499,
5711 Fr910xtChina = 1537,
5712 Fenix = 1551,
5713 Edge200Taiwan = 1555,
5714 Edge510 = 1561,
5715 Edge810 = 1567,
5716 Tempe = 1570,
5717 Fr910xtJapan = 1600,
5718 Fr620 = 1623,
5719 Fr220 = 1632,
5720 Fr910xtKorea = 1664,
5721 Fr10Japan = 1688,
5722 Edge810Japan = 1721,
5723 VirbElite = 1735,
5724 EdgeTouring = 1736,
5725 Edge510Japan = 1742,
5726 HrmTri = 1743,
5727 HrmRun = 1752,
5728 Fr920xt = 1765,
5729 Edge510Asia = 1821,
5730 Edge810China = 1822,
5731 Edge810Taiwan = 1823,
5732 Edge1000 = 1836,
5733 VivoFit = 1837,
5734 VirbRemote = 1853,
5735 VivoKi = 1885,
5736 Fr15 = 1903,
5737 VivoActive = 1907,
5738 Edge510Korea = 1918,
5739 Fr620Japan = 1928,
5740 Fr620China = 1929,
5741 Fr220Japan = 1930,
5742 Fr220China = 1931,
5743 ApproachS6 = 1936,
5744 VivoSmart = 1956,
5745 Fenix2 = 1967,
5746 Epix = 1988,
5747 Fenix3 = 2050,
5748 Edge1000Taiwan = 2052,
5749 Edge1000Japan = 2053,
5750 Fr15Japan = 2061,
5751 Edge520 = 2067,
5752 Edge1000China = 2070,
5753 Fr620Russia = 2072,
5754 Fr220Russia = 2073,
5755 VectorS = 2079,
5756 Edge1000Korea = 2100,
5757 Fr920xtTaiwan = 2130,
5758 Fr920xtChina = 2131,
5759 Fr920xtJapan = 2132,
5760 Virbx = 2134,
5761 VivoSmartApac = 2135,
5762 EtrexTouch = 2140,
5763 Edge25 = 2147,
5764 Fr25 = 2148,
5765 VivoFit2 = 2150,
5766 Fr225 = 2153,
5767 Fr630 = 2156,
5768 Fr230 = 2157,
5769 Fr735xt = 2158,
5770 VivoActiveApac = 2160,
5771 Vector2 = 2161,
5772 Vector2s = 2162,
5773 Virbxe = 2172,
5774 Fr620Taiwan = 2173,
5775 Fr220Taiwan = 2174,
5776 Truswing = 2175,
5777 D2airvenu = 2187,
5778 Fenix3China = 2188,
5779 Fenix3Twn = 2189,
5780 VariaHeadlight = 2192,
5781 VariaTaillightOld = 2193,
5782 EdgeExplore1000 = 2204,
5783 Fr225Asia = 2219,
5784 VariaRadarTaillight = 2225,
5785 VariaRadarDisplay = 2226,
5786 Edge20 = 2238,
5787 Edge520Asia = 2260,
5788 Edge520Japan = 2261,
5789 D2Bravo = 2262,
5790 ApproachS20 = 2266,
5791 VivoSmart2 = 2271,
5792 Edge1000Thai = 2274,
5793 VariaRemote = 2276,
5794 Edge25Asia = 2288,
5795 Edge25Jpn = 2289,
5796 Edge20Asia = 2290,
5797 ApproachX40 = 2292,
5798 Fenix3Japan = 2293,
5799 VivoSmartEmea = 2294,
5800 Fr630Asia = 2310,
5801 Fr630Jpn = 2311,
5802 Fr230Jpn = 2313,
5803 Hrm4Run = 2327,
5804 EpixJapan = 2332,
5805 VivoActiveHr = 2337,
5806 VivoSmartGpsHr = 2347,
5807 VivoSmartHr = 2348,
5808 VivoSmartHrAsia = 2361,
5809 VivoSmartGpsHrAsia = 2362,
5810 VivoMove = 2368,
5811 VariaTaillight = 2379,
5812 Fr235Asia = 2396,
5813 Fr235Japan = 2397,
5814 VariaVision = 2398,
5815 VivoFit3 = 2406,
5816 Fenix3Korea = 2407,
5817 Fenix3Sea = 2408,
5818 Fenix3Hr = 2413,
5819 VirbUltra30 = 2417,
5820 IndexSmartScale = 2429,
5821 Fr235 = 2431,
5822 Fenix3Chronos = 2432,
5823 Oregon7xx = 2441,
5824 Rino7xx = 2444,
5825 EpixKorea = 2457,
5826 Fenix3HrChn = 2473,
5827 Fenix3HrTwn = 2474,
5828 Fenix3HrJpn = 2475,
5829 Fenix3HrSea = 2476,
5830 Fenix3HrKor = 2477,
5831 Nautix = 2496,
5832 VivoActiveHrApac = 2497,
5833 Fr35 = 2503,
5834 Oregon7xxWw = 2512,
5835 Edge820 = 2530,
5836 EdgeExplore820 = 2531,
5837 Fr735xtApac = 2533,
5838 Fr735xtJapan = 2534,
5839 Fenix5s = 2544,
5840 D2BravoTitanium = 2547,
5841 VariaUt800 = 2567,
5842 RunningDynamicsPod = 2593,
5843 Edge820China = 2599,
5844 Edge820Japan = 2600,
5845 Fenix5x = 2604,
5846 VivoFitJr = 2606,
5847 VivoSmart3 = 2622,
5848 VivoSport = 2623,
5849 Edge820Taiwan = 2628,
5850 Edge820Korea = 2629,
5851 Edge820Sea = 2630,
5852 Fr35Hebrew = 2650,
5853 ApproachS60 = 2656,
5854 Fr35Apac = 2667,
5855 Fr35Japan = 2668,
5856 Fenix3ChronosAsia = 2675,
5857 Virb360 = 2687,
5858 Fr935 = 2691,
5859 Fenix5 = 2697,
5860 Vivoactive3 = 2700,
5861 Fr235ChinaNfc = 2733,
5862 Foretrex601701 = 2769,
5863 VivoMoveHr = 2772,
5864 Edge1030 = 2713,
5865 Fr35Sea = 2727,
5866 Vector3 = 2787,
5867 Fenix5Asia = 2796,
5868 Fenix5sAsia = 2797,
5869 Fenix5xAsia = 2798,
5870 ApproachZ80 = 2806,
5871 Fr35Korea = 2814,
5872 D2charlie = 2819,
5873 VivoSmart3Apac = 2831,
5874 VivoSportApac = 2832,
5875 Fr935Asia = 2833,
5876 Descent = 2859,
5877 VivoFit4 = 2878,
5878 Fr645 = 2886,
5879 Fr645m = 2888,
5880 Fr30 = 2891,
5881 Fenix5sPlus = 2900,
5882 Edge130 = 2909,
5883 Edge1030Asia = 2924,
5884 Vivosmart4 = 2927,
5885 VivoMoveHrAsia = 2945,
5886 ApproachX10 = 2962,
5887 Fr30Asia = 2977,
5888 Vivoactive3mW = 2988,
5889 Fr645Asia = 3003,
5890 Fr645mAsia = 3004,
5891 EdgeExplore = 3011,
5892 Gpsmap66 = 3028,
5893 ApproachS10 = 3049,
5894 Vivoactive3mL = 3066,
5895 Fr245 = 3076,
5896 Fr245Music = 3077,
5897 ApproachG80 = 3085,
5898 Edge130Asia = 3092,
5899 Edge1030Bontrager = 3095,
5900 Fenix5Plus = 3110,
5901 Fenix5xPlus = 3111,
5902 Edge520Plus = 3112,
5903 Fr945 = 3113,
5904 Edge530 = 3121,
5905 Edge830 = 3122,
5906 InstinctEsports = 3126,
5907 Fenix5sPlusApac = 3134,
5908 Fenix5xPlusApac = 3135,
5909 Edge520PlusApac = 3142,
5910 DescentT1 = 3143,
5911 Fr235lAsia = 3144,
5912 Fr245Asia = 3145,
5913 VivoActive3mApac = 3163,
5914 Gen3Bsm = 3192,
5915 Gen3Bcm = 3193,
5916 VivoSmart4Asia = 3218,
5917 Vivoactive4Small = 3224,
5918 Vivoactive4Large = 3225,
5919 Venu = 3226,
5920 MarqDriver = 3246,
5921 MarqAviator = 3247,
5922 MarqCaptain = 3248,
5923 MarqCommander = 3249,
5924 MarqExpedition = 3250,
5925 MarqAthlete = 3251,
5926 DescentMk2 = 3258,
5927 Fr45 = 3282,
5928 Gpsmap66i = 3284,
5929 Fenix6SSport = 3287,
5930 Fenix6S = 3288,
5931 Fenix6Sport = 3289,
5932 Fenix6 = 3290,
5933 Fenix6x = 3291,
5934 HrmDual = 3299,
5935 HrmPro = 3300,
5936 VivoMove3Premium = 3308,
5937 ApproachS40 = 3314,
5938 Fr245mAsia = 3321,
5939 Edge530Apac = 3349,
5940 Edge830Apac = 3350,
5941 VivoMove3 = 3378,
5942 VivoActive4SmallAsia = 3387,
5943 VivoActive4LargeAsia = 3388,
5944 VivoActive4OledAsia = 3389,
5945 Swim2 = 3405,
5946 MarqDriverAsia = 3420,
5947 MarqAviatorAsia = 3421,
5948 VivoMove3Asia = 3422,
5949 Fr945Asia = 3441,
5950 VivoActive3tChn = 3446,
5951 MarqCaptainAsia = 3448,
5952 MarqCommanderAsia = 3449,
5953 MarqExpeditionAsia = 3450,
5954 MarqAthleteAsia = 3451,
5955 IndexSmartScale2 = 3461,
5956 InstinctSolar = 3466,
5957 Fr45Asia = 3469,
5958 Vivoactive3Daimler = 3473,
5959 LegacyRey = 3498,
5960 LegacyDarthVader = 3499,
5961 LegacyCaptainMarvel = 3500,
5962 LegacyFirstAvenger = 3501,
5963 Fenix6sSportAsia = 3512,
5964 Fenix6sAsia = 3513,
5965 Fenix6SportAsia = 3514,
5966 Fenix6Asia = 3515,
5967 Fenix6xAsia = 3516,
5968 LegacyCaptainMarvelAsia = 3535,
5969 LegacyFirstAvengerAsia = 3536,
5970 LegacyReyAsia = 3537,
5971 LegacyDarthVaderAsia = 3538,
5972 DescentMk2s = 3542,
5973 Edge130Plus = 3558,
5974 Edge1030Plus = 3570,
5975 Rally200 = 3578,
5976 Fr745 = 3589,
5977 VenusqMusic = 3596,
5978 VenusqMusicV2 = 3599,
5979 Venusq = 3600,
5980 Lily = 3615,
5981 MarqAdventurer = 3624,
5982 Enduro = 3638,
5983 Swim2Apac = 3639,
5984 MarqAdventurerAsia = 3648,
5985 Fr945Lte = 3652,
5986 DescentMk2Asia = 3702,
5987 Venu2 = 3703,
5988 Venu2s = 3704,
5989 VenuDaimlerAsia = 3737,
5990 MarqGolfer = 3739,
5991 VenuDaimler = 3740,
5992 Fr745Asia = 3794,
5993 VariaRct715 = 3808,
5994 LilyAsia = 3809,
5995 Edge1030PlusAsia = 3812,
5996 Edge130PlusAsia = 3813,
5997 ApproachS12 = 3823,
5998 EnduroAsia = 3872,
5999 VenusqAsia = 3837,
6000 Edge1040 = 3843,
6001 MarqGolferAsia = 3850,
6002 Venu2Plus = 3851,
6003 Gnss = 3865,
6004 Fr55 = 3869,
6005 Instinct2 = 3888,
6006 Instinct2s = 3889,
6007 Fenix7s = 3905,
6008 Fenix7 = 3906,
6009 Fenix7x = 3907,
6010 Fenix7sApac = 3908,
6011 Fenix7Apac = 3909,
6012 Fenix7xApac = 3910,
6013 ApproachG12 = 3927,
6014 DescentMk2sAsia = 3930,
6015 ApproachS42 = 3934,
6016 EpixGen2 = 3943,
6017 EpixGen2Apac = 3944,
6018 Venu2sAsia = 3949,
6019 Venu2Asia = 3950,
6020 Fr945LteAsia = 3978,
6021 VivoMoveSport = 3982,
6022 VivomoveTrend = 3983,
6023 ApproachS12Asia = 3986,
6024 Fr255Music = 3990,
6025 Fr255SmallMusic = 3991,
6026 Fr255 = 3992,
6027 Fr255Small = 3993,
6028 ApproachG12Asia = 4001,
6029 ApproachS42Asia = 4002,
6030 DescentG1 = 4005,
6031 Venu2PlusAsia = 4017,
6032 Fr955 = 4024,
6033 Fr55Asia = 4033,
6034 Edge540 = 4061,
6035 Edge840 = 4062,
6036 Vivosmart5 = 4063,
6037 Instinct2Asia = 4071,
6038 MarqGen2 = 4105,
6039 Venusq2 = 4115,
6040 Venusq2music = 4116,
6041 MarqGen2Aviator = 4124,
6042 D2AirX10 = 4125,
6043 HrmProPlus = 4130,
6044 DescentG1Asia = 4132,
6045 Tactix7 = 4135,
6046 InstinctCrossover = 4155,
6047 EdgeExplore2 = 4169,
6048 DescentMk3 = 4222,
6049 DescentMk3i = 4223,
6050 ApproachS70 = 4233,
6051 Fr265Large = 4257,
6052 Fr265Small = 4258,
6053 Venu3 = 4260,
6054 Venu3s = 4261,
6055 TacxNeoSmart = 4265,
6056 TacxNeo2Smart = 4266,
6057 TacxNeo2TSmart = 4267,
6058 TacxNeoSmartBike = 4268,
6059 TacxSatoriSmart = 4269,
6060 TacxFlowSmart = 4270,
6061 TacxVortexSmart = 4271,
6062 TacxBushidoSmart = 4272,
6063 TacxGeniusSmart = 4273,
6064 TacxFluxFluxSSmart = 4274,
6065 TacxFlux2Smart = 4275,
6066 TacxMagnum = 4276,
6067 Edge1040Asia = 4305,
6068 EpixGen2Pro42 = 4312,
6069 EpixGen2Pro47 = 4313,
6070 EpixGen2Pro51 = 4314,
6071 Fr965 = 4315,
6072 Enduro2 = 4341,
6073 Fenix7sProSolar = 4374,
6074 Fenix7ProSolar = 4375,
6075 Fenix7xProSolar = 4376,
6076 Lily2 = 4380,
6077 Instinct2x = 4394,
6078 Vivoactive5 = 4426,
6079 Fr165 = 4432,
6080 Fr165Music = 4433,
6081 Edge1050 = 4440,
6082 DescentT2 = 4442,
6083 HrmFit = 4446,
6084 MarqGen2Commander = 4472,
6085 LilyAthlete = 4477,
6086 RallyX10 = 4525,
6087 Fenix8Solar = 4532,
6088 Fenix8SolarLarge = 4533,
6089 Fenix8Small = 4534,
6090 Fenix8 = 4536,
6091 D2Mach1Pro = 4556,
6092 Enduro3 = 4575,
6093 InstinctE40mm = 4583,
6094 InstinctE45mm = 4584,
6095 Instinct3Solar45mm = 4585,
6096 Instinct3Amoled45mm = 4586,
6097 Instinct3Amoled50mm = 4587,
6098 DescentG2 = 4588,
6099 VenuX1 = 4603,
6100 Hrm200 = 4606,
6101 Vivoactive6 = 4625,
6102 Fenix8Pro = 4631,
6103 Edge550 = 4633,
6104 Edge850 = 4634,
6105 Venu4 = 4643,
6106 Venu4s = 4644,
6107 ApproachS44 = 4647,
6108 EdgeMtb = 4655,
6109 ApproachS50 = 4656,
6110 FenixE = 4666,
6111 Bounce2 = 4745,
6112 Instinct3Solar50mm = 4759,
6113 Tactix8Amoled = 4775,
6114 Tactix8Solar = 4776,
6115 ApproachJ1 = 4825,
6116 D2Mach2 = 4879,
6117 InstinctCrossoverAmoled = 4678,
6118 D2AirX15 = 4944,
6119 Sdm4 = 10007,
6120 EdgeRemote = 10014,
6121 TacxTrainingAppWin = 20533,
6122 TacxTrainingAppMac = 20534,
6123 TacxTrainingAppMacCatalyst = 20565,
6124 TrainingCenter = 20119,
6125 TacxTrainingAppAndroid = 30045,
6126 TacxTrainingAppIos = 30046,
6127 TacxTrainingAppLegacy = 30047,
6128 ConnectiqSimulator = 65531,
6129 AndroidAntplusPlugin = 65532,
6130 Connect = 65534,
6131}
6132
6133impl GarminProduct {
6134 pub fn as_str(&self) -> &'static str {
6136 match self {
6137 GarminProduct::Hrm1 => "hrm1",
6138 GarminProduct::Axh01 => "axh01",
6139 GarminProduct::Axb01 => "axb01",
6140 GarminProduct::Axb02 => "axb02",
6141 GarminProduct::Hrm2ss => "hrm2ss",
6142 GarminProduct::DsiAlf02 => "dsi_alf02",
6143 GarminProduct::Hrm3ss => "hrm3ss",
6144 GarminProduct::HrmRunSingleByteProductId => "hrm_run_single_byte_product_id",
6145 GarminProduct::Bsm => "bsm",
6146 GarminProduct::Bcm => "bcm",
6147 GarminProduct::Axs01 => "axs01",
6148 GarminProduct::HrmTriSingleByteProductId => "hrm_tri_single_byte_product_id",
6149 GarminProduct::Hrm4RunSingleByteProductId => "hrm4_run_single_byte_product_id",
6150 GarminProduct::Fr225SingleByteProductId => "fr225_single_byte_product_id",
6151 GarminProduct::Gen3BsmSingleByteProductId => "gen3_bsm_single_byte_product_id",
6152 GarminProduct::Gen3BcmSingleByteProductId => "gen3_bcm_single_byte_product_id",
6153 GarminProduct::HrmFitSingleByteProductId => "hrm_fit_single_byte_product_id",
6154 GarminProduct::OHR => "OHR",
6155 GarminProduct::Fr301China => "fr301_china",
6156 GarminProduct::Fr301Japan => "fr301_japan",
6157 GarminProduct::Fr301Korea => "fr301_korea",
6158 GarminProduct::Fr301Taiwan => "fr301_taiwan",
6159 GarminProduct::Fr405 => "fr405",
6160 GarminProduct::Fr50 => "fr50",
6161 GarminProduct::Fr405Japan => "fr405_japan",
6162 GarminProduct::Fr60 => "fr60",
6163 GarminProduct::DsiAlf01 => "dsi_alf01",
6164 GarminProduct::Fr310xt => "fr310xt",
6165 GarminProduct::Edge500 => "edge500",
6166 GarminProduct::Fr110 => "fr110",
6167 GarminProduct::Edge800 => "edge800",
6168 GarminProduct::Edge500Taiwan => "edge500_taiwan",
6169 GarminProduct::Edge500Japan => "edge500_japan",
6170 GarminProduct::Chirp => "chirp",
6171 GarminProduct::Fr110Japan => "fr110_japan",
6172 GarminProduct::Edge200 => "edge200",
6173 GarminProduct::Fr910xt => "fr910xt",
6174 GarminProduct::Edge800Taiwan => "edge800_taiwan",
6175 GarminProduct::Edge800Japan => "edge800_japan",
6176 GarminProduct::Alf04 => "alf04",
6177 GarminProduct::Fr610 => "fr610",
6178 GarminProduct::Fr210Japan => "fr210_japan",
6179 GarminProduct::VectorSs => "vector_ss",
6180 GarminProduct::VectorCp => "vector_cp",
6181 GarminProduct::Edge800China => "edge800_china",
6182 GarminProduct::Edge500China => "edge500_china",
6183 GarminProduct::ApproachG10 => "approach_g10",
6184 GarminProduct::Fr610Japan => "fr610_japan",
6185 GarminProduct::Edge500Korea => "edge500_korea",
6186 GarminProduct::Fr70 => "fr70",
6187 GarminProduct::Fr310xt4t => "fr310xt_4t",
6188 GarminProduct::Amx => "amx",
6189 GarminProduct::Fr10 => "fr10",
6190 GarminProduct::Edge800Korea => "edge800_korea",
6191 GarminProduct::Swim => "swim",
6192 GarminProduct::Fr910xtChina => "fr910xt_china",
6193 GarminProduct::Fenix => "fenix",
6194 GarminProduct::Edge200Taiwan => "edge200_taiwan",
6195 GarminProduct::Edge510 => "edge510",
6196 GarminProduct::Edge810 => "edge810",
6197 GarminProduct::Tempe => "tempe",
6198 GarminProduct::Fr910xtJapan => "fr910xt_japan",
6199 GarminProduct::Fr620 => "fr620",
6200 GarminProduct::Fr220 => "fr220",
6201 GarminProduct::Fr910xtKorea => "fr910xt_korea",
6202 GarminProduct::Fr10Japan => "fr10_japan",
6203 GarminProduct::Edge810Japan => "edge810_japan",
6204 GarminProduct::VirbElite => "virb_elite",
6205 GarminProduct::EdgeTouring => "edge_touring",
6206 GarminProduct::Edge510Japan => "edge510_japan",
6207 GarminProduct::HrmTri => "hrm_tri",
6208 GarminProduct::HrmRun => "hrm_run",
6209 GarminProduct::Fr920xt => "fr920xt",
6210 GarminProduct::Edge510Asia => "edge510_asia",
6211 GarminProduct::Edge810China => "edge810_china",
6212 GarminProduct::Edge810Taiwan => "edge810_taiwan",
6213 GarminProduct::Edge1000 => "edge1000",
6214 GarminProduct::VivoFit => "vivo_fit",
6215 GarminProduct::VirbRemote => "virb_remote",
6216 GarminProduct::VivoKi => "vivo_ki",
6217 GarminProduct::Fr15 => "fr15",
6218 GarminProduct::VivoActive => "vivo_active",
6219 GarminProduct::Edge510Korea => "edge510_korea",
6220 GarminProduct::Fr620Japan => "fr620_japan",
6221 GarminProduct::Fr620China => "fr620_china",
6222 GarminProduct::Fr220Japan => "fr220_japan",
6223 GarminProduct::Fr220China => "fr220_china",
6224 GarminProduct::ApproachS6 => "approach_s6",
6225 GarminProduct::VivoSmart => "vivo_smart",
6226 GarminProduct::Fenix2 => "fenix2",
6227 GarminProduct::Epix => "epix",
6228 GarminProduct::Fenix3 => "fenix3",
6229 GarminProduct::Edge1000Taiwan => "edge1000_taiwan",
6230 GarminProduct::Edge1000Japan => "edge1000_japan",
6231 GarminProduct::Fr15Japan => "fr15_japan",
6232 GarminProduct::Edge520 => "edge520",
6233 GarminProduct::Edge1000China => "edge1000_china",
6234 GarminProduct::Fr620Russia => "fr620_russia",
6235 GarminProduct::Fr220Russia => "fr220_russia",
6236 GarminProduct::VectorS => "vector_s",
6237 GarminProduct::Edge1000Korea => "edge1000_korea",
6238 GarminProduct::Fr920xtTaiwan => "fr920xt_taiwan",
6239 GarminProduct::Fr920xtChina => "fr920xt_china",
6240 GarminProduct::Fr920xtJapan => "fr920xt_japan",
6241 GarminProduct::Virbx => "virbx",
6242 GarminProduct::VivoSmartApac => "vivo_smart_apac",
6243 GarminProduct::EtrexTouch => "etrex_touch",
6244 GarminProduct::Edge25 => "edge25",
6245 GarminProduct::Fr25 => "fr25",
6246 GarminProduct::VivoFit2 => "vivo_fit2",
6247 GarminProduct::Fr225 => "fr225",
6248 GarminProduct::Fr630 => "fr630",
6249 GarminProduct::Fr230 => "fr230",
6250 GarminProduct::Fr735xt => "fr735xt",
6251 GarminProduct::VivoActiveApac => "vivo_active_apac",
6252 GarminProduct::Vector2 => "vector_2",
6253 GarminProduct::Vector2s => "vector_2s",
6254 GarminProduct::Virbxe => "virbxe",
6255 GarminProduct::Fr620Taiwan => "fr620_taiwan",
6256 GarminProduct::Fr220Taiwan => "fr220_taiwan",
6257 GarminProduct::Truswing => "truswing",
6258 GarminProduct::D2airvenu => "d2airvenu",
6259 GarminProduct::Fenix3China => "fenix3_china",
6260 GarminProduct::Fenix3Twn => "fenix3_twn",
6261 GarminProduct::VariaHeadlight => "varia_headlight",
6262 GarminProduct::VariaTaillightOld => "varia_taillight_old",
6263 GarminProduct::EdgeExplore1000 => "edge_explore_1000",
6264 GarminProduct::Fr225Asia => "fr225_asia",
6265 GarminProduct::VariaRadarTaillight => "varia_radar_taillight",
6266 GarminProduct::VariaRadarDisplay => "varia_radar_display",
6267 GarminProduct::Edge20 => "edge20",
6268 GarminProduct::Edge520Asia => "edge520_asia",
6269 GarminProduct::Edge520Japan => "edge520_japan",
6270 GarminProduct::D2Bravo => "d2_bravo",
6271 GarminProduct::ApproachS20 => "approach_s20",
6272 GarminProduct::VivoSmart2 => "vivo_smart2",
6273 GarminProduct::Edge1000Thai => "edge1000_thai",
6274 GarminProduct::VariaRemote => "varia_remote",
6275 GarminProduct::Edge25Asia => "edge25_asia",
6276 GarminProduct::Edge25Jpn => "edge25_jpn",
6277 GarminProduct::Edge20Asia => "edge20_asia",
6278 GarminProduct::ApproachX40 => "approach_x40",
6279 GarminProduct::Fenix3Japan => "fenix3_japan",
6280 GarminProduct::VivoSmartEmea => "vivo_smart_emea",
6281 GarminProduct::Fr630Asia => "fr630_asia",
6282 GarminProduct::Fr630Jpn => "fr630_jpn",
6283 GarminProduct::Fr230Jpn => "fr230_jpn",
6284 GarminProduct::Hrm4Run => "hrm4_run",
6285 GarminProduct::EpixJapan => "epix_japan",
6286 GarminProduct::VivoActiveHr => "vivo_active_hr",
6287 GarminProduct::VivoSmartGpsHr => "vivo_smart_gps_hr",
6288 GarminProduct::VivoSmartHr => "vivo_smart_hr",
6289 GarminProduct::VivoSmartHrAsia => "vivo_smart_hr_asia",
6290 GarminProduct::VivoSmartGpsHrAsia => "vivo_smart_gps_hr_asia",
6291 GarminProduct::VivoMove => "vivo_move",
6292 GarminProduct::VariaTaillight => "varia_taillight",
6293 GarminProduct::Fr235Asia => "fr235_asia",
6294 GarminProduct::Fr235Japan => "fr235_japan",
6295 GarminProduct::VariaVision => "varia_vision",
6296 GarminProduct::VivoFit3 => "vivo_fit3",
6297 GarminProduct::Fenix3Korea => "fenix3_korea",
6298 GarminProduct::Fenix3Sea => "fenix3_sea",
6299 GarminProduct::Fenix3Hr => "fenix3_hr",
6300 GarminProduct::VirbUltra30 => "virb_ultra_30",
6301 GarminProduct::IndexSmartScale => "index_smart_scale",
6302 GarminProduct::Fr235 => "fr235",
6303 GarminProduct::Fenix3Chronos => "fenix3_chronos",
6304 GarminProduct::Oregon7xx => "oregon7xx",
6305 GarminProduct::Rino7xx => "rino7xx",
6306 GarminProduct::EpixKorea => "epix_korea",
6307 GarminProduct::Fenix3HrChn => "fenix3_hr_chn",
6308 GarminProduct::Fenix3HrTwn => "fenix3_hr_twn",
6309 GarminProduct::Fenix3HrJpn => "fenix3_hr_jpn",
6310 GarminProduct::Fenix3HrSea => "fenix3_hr_sea",
6311 GarminProduct::Fenix3HrKor => "fenix3_hr_kor",
6312 GarminProduct::Nautix => "nautix",
6313 GarminProduct::VivoActiveHrApac => "vivo_active_hr_apac",
6314 GarminProduct::Fr35 => "fr35",
6315 GarminProduct::Oregon7xxWw => "oregon7xx_ww",
6316 GarminProduct::Edge820 => "edge_820",
6317 GarminProduct::EdgeExplore820 => "edge_explore_820",
6318 GarminProduct::Fr735xtApac => "fr735xt_apac",
6319 GarminProduct::Fr735xtJapan => "fr735xt_japan",
6320 GarminProduct::Fenix5s => "fenix5s",
6321 GarminProduct::D2BravoTitanium => "d2_bravo_titanium",
6322 GarminProduct::VariaUt800 => "varia_ut800",
6323 GarminProduct::RunningDynamicsPod => "running_dynamics_pod",
6324 GarminProduct::Edge820China => "edge_820_china",
6325 GarminProduct::Edge820Japan => "edge_820_japan",
6326 GarminProduct::Fenix5x => "fenix5x",
6327 GarminProduct::VivoFitJr => "vivo_fit_jr",
6328 GarminProduct::VivoSmart3 => "vivo_smart3",
6329 GarminProduct::VivoSport => "vivo_sport",
6330 GarminProduct::Edge820Taiwan => "edge_820_taiwan",
6331 GarminProduct::Edge820Korea => "edge_820_korea",
6332 GarminProduct::Edge820Sea => "edge_820_sea",
6333 GarminProduct::Fr35Hebrew => "fr35_hebrew",
6334 GarminProduct::ApproachS60 => "approach_s60",
6335 GarminProduct::Fr35Apac => "fr35_apac",
6336 GarminProduct::Fr35Japan => "fr35_japan",
6337 GarminProduct::Fenix3ChronosAsia => "fenix3_chronos_asia",
6338 GarminProduct::Virb360 => "virb_360",
6339 GarminProduct::Fr935 => "fr935",
6340 GarminProduct::Fenix5 => "fenix5",
6341 GarminProduct::Vivoactive3 => "vivoactive3",
6342 GarminProduct::Fr235ChinaNfc => "fr235_china_nfc",
6343 GarminProduct::Foretrex601701 => "foretrex_601_701",
6344 GarminProduct::VivoMoveHr => "vivo_move_hr",
6345 GarminProduct::Edge1030 => "edge_1030",
6346 GarminProduct::Fr35Sea => "fr35_sea",
6347 GarminProduct::Vector3 => "vector_3",
6348 GarminProduct::Fenix5Asia => "fenix5_asia",
6349 GarminProduct::Fenix5sAsia => "fenix5s_asia",
6350 GarminProduct::Fenix5xAsia => "fenix5x_asia",
6351 GarminProduct::ApproachZ80 => "approach_z80",
6352 GarminProduct::Fr35Korea => "fr35_korea",
6353 GarminProduct::D2charlie => "d2charlie",
6354 GarminProduct::VivoSmart3Apac => "vivo_smart3_apac",
6355 GarminProduct::VivoSportApac => "vivo_sport_apac",
6356 GarminProduct::Fr935Asia => "fr935_asia",
6357 GarminProduct::Descent => "descent",
6358 GarminProduct::VivoFit4 => "vivo_fit4",
6359 GarminProduct::Fr645 => "fr645",
6360 GarminProduct::Fr645m => "fr645m",
6361 GarminProduct::Fr30 => "fr30",
6362 GarminProduct::Fenix5sPlus => "fenix5s_plus",
6363 GarminProduct::Edge130 => "Edge_130",
6364 GarminProduct::Edge1030Asia => "edge_1030_asia",
6365 GarminProduct::Vivosmart4 => "vivosmart_4",
6366 GarminProduct::VivoMoveHrAsia => "vivo_move_hr_asia",
6367 GarminProduct::ApproachX10 => "approach_x10",
6368 GarminProduct::Fr30Asia => "fr30_asia",
6369 GarminProduct::Vivoactive3mW => "vivoactive3m_w",
6370 GarminProduct::Fr645Asia => "fr645_asia",
6371 GarminProduct::Fr645mAsia => "fr645m_asia",
6372 GarminProduct::EdgeExplore => "edge_explore",
6373 GarminProduct::Gpsmap66 => "gpsmap66",
6374 GarminProduct::ApproachS10 => "approach_s10",
6375 GarminProduct::Vivoactive3mL => "vivoactive3m_l",
6376 GarminProduct::Fr245 => "fr245",
6377 GarminProduct::Fr245Music => "fr245_music",
6378 GarminProduct::ApproachG80 => "approach_g80",
6379 GarminProduct::Edge130Asia => "edge_130_asia",
6380 GarminProduct::Edge1030Bontrager => "edge_1030_bontrager",
6381 GarminProduct::Fenix5Plus => "fenix5_plus",
6382 GarminProduct::Fenix5xPlus => "fenix5x_plus",
6383 GarminProduct::Edge520Plus => "edge_520_plus",
6384 GarminProduct::Fr945 => "fr945",
6385 GarminProduct::Edge530 => "edge_530",
6386 GarminProduct::Edge830 => "edge_830",
6387 GarminProduct::InstinctEsports => "instinct_esports",
6388 GarminProduct::Fenix5sPlusApac => "fenix5s_plus_apac",
6389 GarminProduct::Fenix5xPlusApac => "fenix5x_plus_apac",
6390 GarminProduct::Edge520PlusApac => "edge_520_plus_apac",
6391 GarminProduct::DescentT1 => "descent_t1",
6392 GarminProduct::Fr235lAsia => "fr235l_asia",
6393 GarminProduct::Fr245Asia => "fr245_asia",
6394 GarminProduct::VivoActive3mApac => "vivo_active3m_apac",
6395 GarminProduct::Gen3Bsm => "gen3_bsm",
6396 GarminProduct::Gen3Bcm => "gen3_bcm",
6397 GarminProduct::VivoSmart4Asia => "vivo_smart4_asia",
6398 GarminProduct::Vivoactive4Small => "vivoactive4_small",
6399 GarminProduct::Vivoactive4Large => "vivoactive4_large",
6400 GarminProduct::Venu => "venu",
6401 GarminProduct::MarqDriver => "marq_driver",
6402 GarminProduct::MarqAviator => "marq_aviator",
6403 GarminProduct::MarqCaptain => "marq_captain",
6404 GarminProduct::MarqCommander => "marq_commander",
6405 GarminProduct::MarqExpedition => "marq_expedition",
6406 GarminProduct::MarqAthlete => "marq_athlete",
6407 GarminProduct::DescentMk2 => "descent_mk2",
6408 GarminProduct::Fr45 => "fr45",
6409 GarminProduct::Gpsmap66i => "gpsmap66i",
6410 GarminProduct::Fenix6SSport => "fenix6S_sport",
6411 GarminProduct::Fenix6S => "fenix6S",
6412 GarminProduct::Fenix6Sport => "fenix6_sport",
6413 GarminProduct::Fenix6 => "fenix6",
6414 GarminProduct::Fenix6x => "fenix6x",
6415 GarminProduct::HrmDual => "hrm_dual",
6416 GarminProduct::HrmPro => "hrm_pro",
6417 GarminProduct::VivoMove3Premium => "vivo_move3_premium",
6418 GarminProduct::ApproachS40 => "approach_s40",
6419 GarminProduct::Fr245mAsia => "fr245m_asia",
6420 GarminProduct::Edge530Apac => "edge_530_apac",
6421 GarminProduct::Edge830Apac => "edge_830_apac",
6422 GarminProduct::VivoMove3 => "vivo_move3",
6423 GarminProduct::VivoActive4SmallAsia => "vivo_active4_small_asia",
6424 GarminProduct::VivoActive4LargeAsia => "vivo_active4_large_asia",
6425 GarminProduct::VivoActive4OledAsia => "vivo_active4_oled_asia",
6426 GarminProduct::Swim2 => "swim2",
6427 GarminProduct::MarqDriverAsia => "marq_driver_asia",
6428 GarminProduct::MarqAviatorAsia => "marq_aviator_asia",
6429 GarminProduct::VivoMove3Asia => "vivo_move3_asia",
6430 GarminProduct::Fr945Asia => "fr945_asia",
6431 GarminProduct::VivoActive3tChn => "vivo_active3t_chn",
6432 GarminProduct::MarqCaptainAsia => "marq_captain_asia",
6433 GarminProduct::MarqCommanderAsia => "marq_commander_asia",
6434 GarminProduct::MarqExpeditionAsia => "marq_expedition_asia",
6435 GarminProduct::MarqAthleteAsia => "marq_athlete_asia",
6436 GarminProduct::IndexSmartScale2 => "index_smart_scale_2",
6437 GarminProduct::InstinctSolar => "instinct_solar",
6438 GarminProduct::Fr45Asia => "fr45_asia",
6439 GarminProduct::Vivoactive3Daimler => "vivoactive3_daimler",
6440 GarminProduct::LegacyRey => "legacy_rey",
6441 GarminProduct::LegacyDarthVader => "legacy_darth_vader",
6442 GarminProduct::LegacyCaptainMarvel => "legacy_captain_marvel",
6443 GarminProduct::LegacyFirstAvenger => "legacy_first_avenger",
6444 GarminProduct::Fenix6sSportAsia => "fenix6s_sport_asia",
6445 GarminProduct::Fenix6sAsia => "fenix6s_asia",
6446 GarminProduct::Fenix6SportAsia => "fenix6_sport_asia",
6447 GarminProduct::Fenix6Asia => "fenix6_asia",
6448 GarminProduct::Fenix6xAsia => "fenix6x_asia",
6449 GarminProduct::LegacyCaptainMarvelAsia => "legacy_captain_marvel_asia",
6450 GarminProduct::LegacyFirstAvengerAsia => "legacy_first_avenger_asia",
6451 GarminProduct::LegacyReyAsia => "legacy_rey_asia",
6452 GarminProduct::LegacyDarthVaderAsia => "legacy_darth_vader_asia",
6453 GarminProduct::DescentMk2s => "descent_mk2s",
6454 GarminProduct::Edge130Plus => "edge_130_plus",
6455 GarminProduct::Edge1030Plus => "edge_1030_plus",
6456 GarminProduct::Rally200 => "rally_200",
6457 GarminProduct::Fr745 => "fr745",
6458 GarminProduct::VenusqMusic => "venusq_music",
6459 GarminProduct::VenusqMusicV2 => "venusq_music_v2",
6460 GarminProduct::Venusq => "venusq",
6461 GarminProduct::Lily => "lily",
6462 GarminProduct::MarqAdventurer => "marq_adventurer",
6463 GarminProduct::Enduro => "enduro",
6464 GarminProduct::Swim2Apac => "swim2_apac",
6465 GarminProduct::MarqAdventurerAsia => "marq_adventurer_asia",
6466 GarminProduct::Fr945Lte => "fr945_lte",
6467 GarminProduct::DescentMk2Asia => "descent_mk2_asia",
6468 GarminProduct::Venu2 => "venu2",
6469 GarminProduct::Venu2s => "venu2s",
6470 GarminProduct::VenuDaimlerAsia => "venu_daimler_asia",
6471 GarminProduct::MarqGolfer => "marq_golfer",
6472 GarminProduct::VenuDaimler => "venu_daimler",
6473 GarminProduct::Fr745Asia => "fr745_asia",
6474 GarminProduct::VariaRct715 => "varia_rct715",
6475 GarminProduct::LilyAsia => "lily_asia",
6476 GarminProduct::Edge1030PlusAsia => "edge_1030_plus_asia",
6477 GarminProduct::Edge130PlusAsia => "edge_130_plus_asia",
6478 GarminProduct::ApproachS12 => "approach_s12",
6479 GarminProduct::EnduroAsia => "enduro_asia",
6480 GarminProduct::VenusqAsia => "venusq_asia",
6481 GarminProduct::Edge1040 => "edge_1040",
6482 GarminProduct::MarqGolferAsia => "marq_golfer_asia",
6483 GarminProduct::Venu2Plus => "venu2_plus",
6484 GarminProduct::Gnss => "gnss",
6485 GarminProduct::Fr55 => "fr55",
6486 GarminProduct::Instinct2 => "instinct_2",
6487 GarminProduct::Instinct2s => "instinct_2s",
6488 GarminProduct::Fenix7s => "fenix7s",
6489 GarminProduct::Fenix7 => "fenix7",
6490 GarminProduct::Fenix7x => "fenix7x",
6491 GarminProduct::Fenix7sApac => "fenix7s_apac",
6492 GarminProduct::Fenix7Apac => "fenix7_apac",
6493 GarminProduct::Fenix7xApac => "fenix7x_apac",
6494 GarminProduct::ApproachG12 => "approach_g12",
6495 GarminProduct::DescentMk2sAsia => "descent_mk2s_asia",
6496 GarminProduct::ApproachS42 => "approach_s42",
6497 GarminProduct::EpixGen2 => "epix_gen2",
6498 GarminProduct::EpixGen2Apac => "epix_gen2_apac",
6499 GarminProduct::Venu2sAsia => "venu2s_asia",
6500 GarminProduct::Venu2Asia => "venu2_asia",
6501 GarminProduct::Fr945LteAsia => "fr945_lte_asia",
6502 GarminProduct::VivoMoveSport => "vivo_move_sport",
6503 GarminProduct::VivomoveTrend => "vivomove_trend",
6504 GarminProduct::ApproachS12Asia => "approach_S12_asia",
6505 GarminProduct::Fr255Music => "fr255_music",
6506 GarminProduct::Fr255SmallMusic => "fr255_small_music",
6507 GarminProduct::Fr255 => "fr255",
6508 GarminProduct::Fr255Small => "fr255_small",
6509 GarminProduct::ApproachG12Asia => "approach_g12_asia",
6510 GarminProduct::ApproachS42Asia => "approach_s42_asia",
6511 GarminProduct::DescentG1 => "descent_g1",
6512 GarminProduct::Venu2PlusAsia => "venu2_plus_asia",
6513 GarminProduct::Fr955 => "fr955",
6514 GarminProduct::Fr55Asia => "fr55_asia",
6515 GarminProduct::Edge540 => "edge_540",
6516 GarminProduct::Edge840 => "edge_840",
6517 GarminProduct::Vivosmart5 => "vivosmart_5",
6518 GarminProduct::Instinct2Asia => "instinct_2_asia",
6519 GarminProduct::MarqGen2 => "marq_gen2",
6520 GarminProduct::Venusq2 => "venusq2",
6521 GarminProduct::Venusq2music => "venusq2music",
6522 GarminProduct::MarqGen2Aviator => "marq_gen2_aviator",
6523 GarminProduct::D2AirX10 => "d2_air_x10",
6524 GarminProduct::HrmProPlus => "hrm_pro_plus",
6525 GarminProduct::DescentG1Asia => "descent_g1_asia",
6526 GarminProduct::Tactix7 => "tactix7",
6527 GarminProduct::InstinctCrossover => "instinct_crossover",
6528 GarminProduct::EdgeExplore2 => "edge_explore2",
6529 GarminProduct::DescentMk3 => "descent_mk3",
6530 GarminProduct::DescentMk3i => "descent_mk3i",
6531 GarminProduct::ApproachS70 => "approach_s70",
6532 GarminProduct::Fr265Large => "fr265_large",
6533 GarminProduct::Fr265Small => "fr265_small",
6534 GarminProduct::Venu3 => "venu3",
6535 GarminProduct::Venu3s => "venu3s",
6536 GarminProduct::TacxNeoSmart => "tacx_neo_smart",
6537 GarminProduct::TacxNeo2Smart => "tacx_neo2_smart",
6538 GarminProduct::TacxNeo2TSmart => "tacx_neo2_t_smart",
6539 GarminProduct::TacxNeoSmartBike => "tacx_neo_smart_bike",
6540 GarminProduct::TacxSatoriSmart => "tacx_satori_smart",
6541 GarminProduct::TacxFlowSmart => "tacx_flow_smart",
6542 GarminProduct::TacxVortexSmart => "tacx_vortex_smart",
6543 GarminProduct::TacxBushidoSmart => "tacx_bushido_smart",
6544 GarminProduct::TacxGeniusSmart => "tacx_genius_smart",
6545 GarminProduct::TacxFluxFluxSSmart => "tacx_flux_flux_s_smart",
6546 GarminProduct::TacxFlux2Smart => "tacx_flux2_smart",
6547 GarminProduct::TacxMagnum => "tacx_magnum",
6548 GarminProduct::Edge1040Asia => "edge_1040_asia",
6549 GarminProduct::EpixGen2Pro42 => "epix_gen2_pro_42",
6550 GarminProduct::EpixGen2Pro47 => "epix_gen2_pro_47",
6551 GarminProduct::EpixGen2Pro51 => "epix_gen2_pro_51",
6552 GarminProduct::Fr965 => "fr965",
6553 GarminProduct::Enduro2 => "enduro2",
6554 GarminProduct::Fenix7sProSolar => "fenix7s_pro_solar",
6555 GarminProduct::Fenix7ProSolar => "fenix7_pro_solar",
6556 GarminProduct::Fenix7xProSolar => "fenix7x_pro_solar",
6557 GarminProduct::Lily2 => "lily2",
6558 GarminProduct::Instinct2x => "instinct_2x",
6559 GarminProduct::Vivoactive5 => "vivoactive5",
6560 GarminProduct::Fr165 => "fr165",
6561 GarminProduct::Fr165Music => "fr165_music",
6562 GarminProduct::Edge1050 => "edge_1050",
6563 GarminProduct::DescentT2 => "descent_t2",
6564 GarminProduct::HrmFit => "hrm_fit",
6565 GarminProduct::MarqGen2Commander => "marq_gen2_commander",
6566 GarminProduct::LilyAthlete => "lily_athlete",
6567 GarminProduct::RallyX10 => "rally_x10",
6568 GarminProduct::Fenix8Solar => "fenix8_solar",
6569 GarminProduct::Fenix8SolarLarge => "fenix8_solar_large",
6570 GarminProduct::Fenix8Small => "fenix8_small",
6571 GarminProduct::Fenix8 => "fenix8",
6572 GarminProduct::D2Mach1Pro => "d2_mach1_pro",
6573 GarminProduct::Enduro3 => "enduro3",
6574 GarminProduct::InstinctE40mm => "instinctE_40mm",
6575 GarminProduct::InstinctE45mm => "instinctE_45mm",
6576 GarminProduct::Instinct3Solar45mm => "instinct3_solar_45mm",
6577 GarminProduct::Instinct3Amoled45mm => "instinct3_amoled_45mm",
6578 GarminProduct::Instinct3Amoled50mm => "instinct3_amoled_50mm",
6579 GarminProduct::DescentG2 => "descent_g2",
6580 GarminProduct::VenuX1 => "venu_x1",
6581 GarminProduct::Hrm200 => "hrm_200",
6582 GarminProduct::Vivoactive6 => "vivoactive6",
6583 GarminProduct::Fenix8Pro => "fenix8_pro",
6584 GarminProduct::Edge550 => "edge_550",
6585 GarminProduct::Edge850 => "edge_850",
6586 GarminProduct::Venu4 => "venu4",
6587 GarminProduct::Venu4s => "venu4s",
6588 GarminProduct::ApproachS44 => "approachS44",
6589 GarminProduct::EdgeMtb => "edge_mtb",
6590 GarminProduct::ApproachS50 => "approachS50",
6591 GarminProduct::FenixE => "fenix_e",
6592 GarminProduct::Bounce2 => "bounce2",
6593 GarminProduct::Instinct3Solar50mm => "instinct3_solar_50mm",
6594 GarminProduct::Tactix8Amoled => "tactix8_amoled",
6595 GarminProduct::Tactix8Solar => "tactix8_solar",
6596 GarminProduct::ApproachJ1 => "approach_j1",
6597 GarminProduct::D2Mach2 => "d2_mach2",
6598 GarminProduct::InstinctCrossoverAmoled => "instinct_crossover_amoled",
6599 GarminProduct::D2AirX15 => "d2_air_x15",
6600 GarminProduct::Sdm4 => "sdm4",
6601 GarminProduct::EdgeRemote => "edge_remote",
6602 GarminProduct::TacxTrainingAppWin => "tacx_training_app_win",
6603 GarminProduct::TacxTrainingAppMac => "tacx_training_app_mac",
6604 GarminProduct::TacxTrainingAppMacCatalyst => "tacx_training_app_mac_catalyst",
6605 GarminProduct::TrainingCenter => "training_center",
6606 GarminProduct::TacxTrainingAppAndroid => "tacx_training_app_android",
6607 GarminProduct::TacxTrainingAppIos => "tacx_training_app_ios",
6608 GarminProduct::TacxTrainingAppLegacy => "tacx_training_app_legacy",
6609 GarminProduct::ConnectiqSimulator => "connectiq_simulator",
6610 GarminProduct::AndroidAntplusPlugin => "android_antplus_plugin",
6611 GarminProduct::Connect => "connect",
6612 }
6613 }
6614
6615 pub fn from_value(value: u16) -> Option<Self> {
6617 match value {
6618 1 => Some(GarminProduct::Hrm1),
6619 2 => Some(GarminProduct::Axh01),
6620 3 => Some(GarminProduct::Axb01),
6621 4 => Some(GarminProduct::Axb02),
6622 5 => Some(GarminProduct::Hrm2ss),
6623 6 => Some(GarminProduct::DsiAlf02),
6624 7 => Some(GarminProduct::Hrm3ss),
6625 8 => Some(GarminProduct::HrmRunSingleByteProductId),
6626 9 => Some(GarminProduct::Bsm),
6627 10 => Some(GarminProduct::Bcm),
6628 11 => Some(GarminProduct::Axs01),
6629 12 => Some(GarminProduct::HrmTriSingleByteProductId),
6630 13 => Some(GarminProduct::Hrm4RunSingleByteProductId),
6631 14 => Some(GarminProduct::Fr225SingleByteProductId),
6632 15 => Some(GarminProduct::Gen3BsmSingleByteProductId),
6633 16 => Some(GarminProduct::Gen3BcmSingleByteProductId),
6634 22 => Some(GarminProduct::HrmFitSingleByteProductId),
6635 255 => Some(GarminProduct::OHR),
6636 473 => Some(GarminProduct::Fr301China),
6637 474 => Some(GarminProduct::Fr301Japan),
6638 475 => Some(GarminProduct::Fr301Korea),
6639 494 => Some(GarminProduct::Fr301Taiwan),
6640 717 => Some(GarminProduct::Fr405),
6641 782 => Some(GarminProduct::Fr50),
6642 987 => Some(GarminProduct::Fr405Japan),
6643 988 => Some(GarminProduct::Fr60),
6644 1011 => Some(GarminProduct::DsiAlf01),
6645 1018 => Some(GarminProduct::Fr310xt),
6646 1036 => Some(GarminProduct::Edge500),
6647 1124 => Some(GarminProduct::Fr110),
6648 1169 => Some(GarminProduct::Edge800),
6649 1199 => Some(GarminProduct::Edge500Taiwan),
6650 1213 => Some(GarminProduct::Edge500Japan),
6651 1253 => Some(GarminProduct::Chirp),
6652 1274 => Some(GarminProduct::Fr110Japan),
6653 1325 => Some(GarminProduct::Edge200),
6654 1328 => Some(GarminProduct::Fr910xt),
6655 1333 => Some(GarminProduct::Edge800Taiwan),
6656 1334 => Some(GarminProduct::Edge800Japan),
6657 1341 => Some(GarminProduct::Alf04),
6658 1345 => Some(GarminProduct::Fr610),
6659 1360 => Some(GarminProduct::Fr210Japan),
6660 1380 => Some(GarminProduct::VectorSs),
6661 1381 => Some(GarminProduct::VectorCp),
6662 1386 => Some(GarminProduct::Edge800China),
6663 1387 => Some(GarminProduct::Edge500China),
6664 1405 => Some(GarminProduct::ApproachG10),
6665 1410 => Some(GarminProduct::Fr610Japan),
6666 1422 => Some(GarminProduct::Edge500Korea),
6667 1436 => Some(GarminProduct::Fr70),
6668 1446 => Some(GarminProduct::Fr310xt4t),
6669 1461 => Some(GarminProduct::Amx),
6670 1482 => Some(GarminProduct::Fr10),
6671 1497 => Some(GarminProduct::Edge800Korea),
6672 1499 => Some(GarminProduct::Swim),
6673 1537 => Some(GarminProduct::Fr910xtChina),
6674 1551 => Some(GarminProduct::Fenix),
6675 1555 => Some(GarminProduct::Edge200Taiwan),
6676 1561 => Some(GarminProduct::Edge510),
6677 1567 => Some(GarminProduct::Edge810),
6678 1570 => Some(GarminProduct::Tempe),
6679 1600 => Some(GarminProduct::Fr910xtJapan),
6680 1623 => Some(GarminProduct::Fr620),
6681 1632 => Some(GarminProduct::Fr220),
6682 1664 => Some(GarminProduct::Fr910xtKorea),
6683 1688 => Some(GarminProduct::Fr10Japan),
6684 1721 => Some(GarminProduct::Edge810Japan),
6685 1735 => Some(GarminProduct::VirbElite),
6686 1736 => Some(GarminProduct::EdgeTouring),
6687 1742 => Some(GarminProduct::Edge510Japan),
6688 1743 => Some(GarminProduct::HrmTri),
6689 1752 => Some(GarminProduct::HrmRun),
6690 1765 => Some(GarminProduct::Fr920xt),
6691 1821 => Some(GarminProduct::Edge510Asia),
6692 1822 => Some(GarminProduct::Edge810China),
6693 1823 => Some(GarminProduct::Edge810Taiwan),
6694 1836 => Some(GarminProduct::Edge1000),
6695 1837 => Some(GarminProduct::VivoFit),
6696 1853 => Some(GarminProduct::VirbRemote),
6697 1885 => Some(GarminProduct::VivoKi),
6698 1903 => Some(GarminProduct::Fr15),
6699 1907 => Some(GarminProduct::VivoActive),
6700 1918 => Some(GarminProduct::Edge510Korea),
6701 1928 => Some(GarminProduct::Fr620Japan),
6702 1929 => Some(GarminProduct::Fr620China),
6703 1930 => Some(GarminProduct::Fr220Japan),
6704 1931 => Some(GarminProduct::Fr220China),
6705 1936 => Some(GarminProduct::ApproachS6),
6706 1956 => Some(GarminProduct::VivoSmart),
6707 1967 => Some(GarminProduct::Fenix2),
6708 1988 => Some(GarminProduct::Epix),
6709 2050 => Some(GarminProduct::Fenix3),
6710 2052 => Some(GarminProduct::Edge1000Taiwan),
6711 2053 => Some(GarminProduct::Edge1000Japan),
6712 2061 => Some(GarminProduct::Fr15Japan),
6713 2067 => Some(GarminProduct::Edge520),
6714 2070 => Some(GarminProduct::Edge1000China),
6715 2072 => Some(GarminProduct::Fr620Russia),
6716 2073 => Some(GarminProduct::Fr220Russia),
6717 2079 => Some(GarminProduct::VectorS),
6718 2100 => Some(GarminProduct::Edge1000Korea),
6719 2130 => Some(GarminProduct::Fr920xtTaiwan),
6720 2131 => Some(GarminProduct::Fr920xtChina),
6721 2132 => Some(GarminProduct::Fr920xtJapan),
6722 2134 => Some(GarminProduct::Virbx),
6723 2135 => Some(GarminProduct::VivoSmartApac),
6724 2140 => Some(GarminProduct::EtrexTouch),
6725 2147 => Some(GarminProduct::Edge25),
6726 2148 => Some(GarminProduct::Fr25),
6727 2150 => Some(GarminProduct::VivoFit2),
6728 2153 => Some(GarminProduct::Fr225),
6729 2156 => Some(GarminProduct::Fr630),
6730 2157 => Some(GarminProduct::Fr230),
6731 2158 => Some(GarminProduct::Fr735xt),
6732 2160 => Some(GarminProduct::VivoActiveApac),
6733 2161 => Some(GarminProduct::Vector2),
6734 2162 => Some(GarminProduct::Vector2s),
6735 2172 => Some(GarminProduct::Virbxe),
6736 2173 => Some(GarminProduct::Fr620Taiwan),
6737 2174 => Some(GarminProduct::Fr220Taiwan),
6738 2175 => Some(GarminProduct::Truswing),
6739 2187 => Some(GarminProduct::D2airvenu),
6740 2188 => Some(GarminProduct::Fenix3China),
6741 2189 => Some(GarminProduct::Fenix3Twn),
6742 2192 => Some(GarminProduct::VariaHeadlight),
6743 2193 => Some(GarminProduct::VariaTaillightOld),
6744 2204 => Some(GarminProduct::EdgeExplore1000),
6745 2219 => Some(GarminProduct::Fr225Asia),
6746 2225 => Some(GarminProduct::VariaRadarTaillight),
6747 2226 => Some(GarminProduct::VariaRadarDisplay),
6748 2238 => Some(GarminProduct::Edge20),
6749 2260 => Some(GarminProduct::Edge520Asia),
6750 2261 => Some(GarminProduct::Edge520Japan),
6751 2262 => Some(GarminProduct::D2Bravo),
6752 2266 => Some(GarminProduct::ApproachS20),
6753 2271 => Some(GarminProduct::VivoSmart2),
6754 2274 => Some(GarminProduct::Edge1000Thai),
6755 2276 => Some(GarminProduct::VariaRemote),
6756 2288 => Some(GarminProduct::Edge25Asia),
6757 2289 => Some(GarminProduct::Edge25Jpn),
6758 2290 => Some(GarminProduct::Edge20Asia),
6759 2292 => Some(GarminProduct::ApproachX40),
6760 2293 => Some(GarminProduct::Fenix3Japan),
6761 2294 => Some(GarminProduct::VivoSmartEmea),
6762 2310 => Some(GarminProduct::Fr630Asia),
6763 2311 => Some(GarminProduct::Fr630Jpn),
6764 2313 => Some(GarminProduct::Fr230Jpn),
6765 2327 => Some(GarminProduct::Hrm4Run),
6766 2332 => Some(GarminProduct::EpixJapan),
6767 2337 => Some(GarminProduct::VivoActiveHr),
6768 2347 => Some(GarminProduct::VivoSmartGpsHr),
6769 2348 => Some(GarminProduct::VivoSmartHr),
6770 2361 => Some(GarminProduct::VivoSmartHrAsia),
6771 2362 => Some(GarminProduct::VivoSmartGpsHrAsia),
6772 2368 => Some(GarminProduct::VivoMove),
6773 2379 => Some(GarminProduct::VariaTaillight),
6774 2396 => Some(GarminProduct::Fr235Asia),
6775 2397 => Some(GarminProduct::Fr235Japan),
6776 2398 => Some(GarminProduct::VariaVision),
6777 2406 => Some(GarminProduct::VivoFit3),
6778 2407 => Some(GarminProduct::Fenix3Korea),
6779 2408 => Some(GarminProduct::Fenix3Sea),
6780 2413 => Some(GarminProduct::Fenix3Hr),
6781 2417 => Some(GarminProduct::VirbUltra30),
6782 2429 => Some(GarminProduct::IndexSmartScale),
6783 2431 => Some(GarminProduct::Fr235),
6784 2432 => Some(GarminProduct::Fenix3Chronos),
6785 2441 => Some(GarminProduct::Oregon7xx),
6786 2444 => Some(GarminProduct::Rino7xx),
6787 2457 => Some(GarminProduct::EpixKorea),
6788 2473 => Some(GarminProduct::Fenix3HrChn),
6789 2474 => Some(GarminProduct::Fenix3HrTwn),
6790 2475 => Some(GarminProduct::Fenix3HrJpn),
6791 2476 => Some(GarminProduct::Fenix3HrSea),
6792 2477 => Some(GarminProduct::Fenix3HrKor),
6793 2496 => Some(GarminProduct::Nautix),
6794 2497 => Some(GarminProduct::VivoActiveHrApac),
6795 2503 => Some(GarminProduct::Fr35),
6796 2512 => Some(GarminProduct::Oregon7xxWw),
6797 2530 => Some(GarminProduct::Edge820),
6798 2531 => Some(GarminProduct::EdgeExplore820),
6799 2533 => Some(GarminProduct::Fr735xtApac),
6800 2534 => Some(GarminProduct::Fr735xtJapan),
6801 2544 => Some(GarminProduct::Fenix5s),
6802 2547 => Some(GarminProduct::D2BravoTitanium),
6803 2567 => Some(GarminProduct::VariaUt800),
6804 2593 => Some(GarminProduct::RunningDynamicsPod),
6805 2599 => Some(GarminProduct::Edge820China),
6806 2600 => Some(GarminProduct::Edge820Japan),
6807 2604 => Some(GarminProduct::Fenix5x),
6808 2606 => Some(GarminProduct::VivoFitJr),
6809 2622 => Some(GarminProduct::VivoSmart3),
6810 2623 => Some(GarminProduct::VivoSport),
6811 2628 => Some(GarminProduct::Edge820Taiwan),
6812 2629 => Some(GarminProduct::Edge820Korea),
6813 2630 => Some(GarminProduct::Edge820Sea),
6814 2650 => Some(GarminProduct::Fr35Hebrew),
6815 2656 => Some(GarminProduct::ApproachS60),
6816 2667 => Some(GarminProduct::Fr35Apac),
6817 2668 => Some(GarminProduct::Fr35Japan),
6818 2675 => Some(GarminProduct::Fenix3ChronosAsia),
6819 2687 => Some(GarminProduct::Virb360),
6820 2691 => Some(GarminProduct::Fr935),
6821 2697 => Some(GarminProduct::Fenix5),
6822 2700 => Some(GarminProduct::Vivoactive3),
6823 2733 => Some(GarminProduct::Fr235ChinaNfc),
6824 2769 => Some(GarminProduct::Foretrex601701),
6825 2772 => Some(GarminProduct::VivoMoveHr),
6826 2713 => Some(GarminProduct::Edge1030),
6827 2727 => Some(GarminProduct::Fr35Sea),
6828 2787 => Some(GarminProduct::Vector3),
6829 2796 => Some(GarminProduct::Fenix5Asia),
6830 2797 => Some(GarminProduct::Fenix5sAsia),
6831 2798 => Some(GarminProduct::Fenix5xAsia),
6832 2806 => Some(GarminProduct::ApproachZ80),
6833 2814 => Some(GarminProduct::Fr35Korea),
6834 2819 => Some(GarminProduct::D2charlie),
6835 2831 => Some(GarminProduct::VivoSmart3Apac),
6836 2832 => Some(GarminProduct::VivoSportApac),
6837 2833 => Some(GarminProduct::Fr935Asia),
6838 2859 => Some(GarminProduct::Descent),
6839 2878 => Some(GarminProduct::VivoFit4),
6840 2886 => Some(GarminProduct::Fr645),
6841 2888 => Some(GarminProduct::Fr645m),
6842 2891 => Some(GarminProduct::Fr30),
6843 2900 => Some(GarminProduct::Fenix5sPlus),
6844 2909 => Some(GarminProduct::Edge130),
6845 2924 => Some(GarminProduct::Edge1030Asia),
6846 2927 => Some(GarminProduct::Vivosmart4),
6847 2945 => Some(GarminProduct::VivoMoveHrAsia),
6848 2962 => Some(GarminProduct::ApproachX10),
6849 2977 => Some(GarminProduct::Fr30Asia),
6850 2988 => Some(GarminProduct::Vivoactive3mW),
6851 3003 => Some(GarminProduct::Fr645Asia),
6852 3004 => Some(GarminProduct::Fr645mAsia),
6853 3011 => Some(GarminProduct::EdgeExplore),
6854 3028 => Some(GarminProduct::Gpsmap66),
6855 3049 => Some(GarminProduct::ApproachS10),
6856 3066 => Some(GarminProduct::Vivoactive3mL),
6857 3076 => Some(GarminProduct::Fr245),
6858 3077 => Some(GarminProduct::Fr245Music),
6859 3085 => Some(GarminProduct::ApproachG80),
6860 3092 => Some(GarminProduct::Edge130Asia),
6861 3095 => Some(GarminProduct::Edge1030Bontrager),
6862 3110 => Some(GarminProduct::Fenix5Plus),
6863 3111 => Some(GarminProduct::Fenix5xPlus),
6864 3112 => Some(GarminProduct::Edge520Plus),
6865 3113 => Some(GarminProduct::Fr945),
6866 3121 => Some(GarminProduct::Edge530),
6867 3122 => Some(GarminProduct::Edge830),
6868 3126 => Some(GarminProduct::InstinctEsports),
6869 3134 => Some(GarminProduct::Fenix5sPlusApac),
6870 3135 => Some(GarminProduct::Fenix5xPlusApac),
6871 3142 => Some(GarminProduct::Edge520PlusApac),
6872 3143 => Some(GarminProduct::DescentT1),
6873 3144 => Some(GarminProduct::Fr235lAsia),
6874 3145 => Some(GarminProduct::Fr245Asia),
6875 3163 => Some(GarminProduct::VivoActive3mApac),
6876 3192 => Some(GarminProduct::Gen3Bsm),
6877 3193 => Some(GarminProduct::Gen3Bcm),
6878 3218 => Some(GarminProduct::VivoSmart4Asia),
6879 3224 => Some(GarminProduct::Vivoactive4Small),
6880 3225 => Some(GarminProduct::Vivoactive4Large),
6881 3226 => Some(GarminProduct::Venu),
6882 3246 => Some(GarminProduct::MarqDriver),
6883 3247 => Some(GarminProduct::MarqAviator),
6884 3248 => Some(GarminProduct::MarqCaptain),
6885 3249 => Some(GarminProduct::MarqCommander),
6886 3250 => Some(GarminProduct::MarqExpedition),
6887 3251 => Some(GarminProduct::MarqAthlete),
6888 3258 => Some(GarminProduct::DescentMk2),
6889 3282 => Some(GarminProduct::Fr45),
6890 3284 => Some(GarminProduct::Gpsmap66i),
6891 3287 => Some(GarminProduct::Fenix6SSport),
6892 3288 => Some(GarminProduct::Fenix6S),
6893 3289 => Some(GarminProduct::Fenix6Sport),
6894 3290 => Some(GarminProduct::Fenix6),
6895 3291 => Some(GarminProduct::Fenix6x),
6896 3299 => Some(GarminProduct::HrmDual),
6897 3300 => Some(GarminProduct::HrmPro),
6898 3308 => Some(GarminProduct::VivoMove3Premium),
6899 3314 => Some(GarminProduct::ApproachS40),
6900 3321 => Some(GarminProduct::Fr245mAsia),
6901 3349 => Some(GarminProduct::Edge530Apac),
6902 3350 => Some(GarminProduct::Edge830Apac),
6903 3378 => Some(GarminProduct::VivoMove3),
6904 3387 => Some(GarminProduct::VivoActive4SmallAsia),
6905 3388 => Some(GarminProduct::VivoActive4LargeAsia),
6906 3389 => Some(GarminProduct::VivoActive4OledAsia),
6907 3405 => Some(GarminProduct::Swim2),
6908 3420 => Some(GarminProduct::MarqDriverAsia),
6909 3421 => Some(GarminProduct::MarqAviatorAsia),
6910 3422 => Some(GarminProduct::VivoMove3Asia),
6911 3441 => Some(GarminProduct::Fr945Asia),
6912 3446 => Some(GarminProduct::VivoActive3tChn),
6913 3448 => Some(GarminProduct::MarqCaptainAsia),
6914 3449 => Some(GarminProduct::MarqCommanderAsia),
6915 3450 => Some(GarminProduct::MarqExpeditionAsia),
6916 3451 => Some(GarminProduct::MarqAthleteAsia),
6917 3461 => Some(GarminProduct::IndexSmartScale2),
6918 3466 => Some(GarminProduct::InstinctSolar),
6919 3469 => Some(GarminProduct::Fr45Asia),
6920 3473 => Some(GarminProduct::Vivoactive3Daimler),
6921 3498 => Some(GarminProduct::LegacyRey),
6922 3499 => Some(GarminProduct::LegacyDarthVader),
6923 3500 => Some(GarminProduct::LegacyCaptainMarvel),
6924 3501 => Some(GarminProduct::LegacyFirstAvenger),
6925 3512 => Some(GarminProduct::Fenix6sSportAsia),
6926 3513 => Some(GarminProduct::Fenix6sAsia),
6927 3514 => Some(GarminProduct::Fenix6SportAsia),
6928 3515 => Some(GarminProduct::Fenix6Asia),
6929 3516 => Some(GarminProduct::Fenix6xAsia),
6930 3535 => Some(GarminProduct::LegacyCaptainMarvelAsia),
6931 3536 => Some(GarminProduct::LegacyFirstAvengerAsia),
6932 3537 => Some(GarminProduct::LegacyReyAsia),
6933 3538 => Some(GarminProduct::LegacyDarthVaderAsia),
6934 3542 => Some(GarminProduct::DescentMk2s),
6935 3558 => Some(GarminProduct::Edge130Plus),
6936 3570 => Some(GarminProduct::Edge1030Plus),
6937 3578 => Some(GarminProduct::Rally200),
6938 3589 => Some(GarminProduct::Fr745),
6939 3596 => Some(GarminProduct::VenusqMusic),
6940 3599 => Some(GarminProduct::VenusqMusicV2),
6941 3600 => Some(GarminProduct::Venusq),
6942 3615 => Some(GarminProduct::Lily),
6943 3624 => Some(GarminProduct::MarqAdventurer),
6944 3638 => Some(GarminProduct::Enduro),
6945 3639 => Some(GarminProduct::Swim2Apac),
6946 3648 => Some(GarminProduct::MarqAdventurerAsia),
6947 3652 => Some(GarminProduct::Fr945Lte),
6948 3702 => Some(GarminProduct::DescentMk2Asia),
6949 3703 => Some(GarminProduct::Venu2),
6950 3704 => Some(GarminProduct::Venu2s),
6951 3737 => Some(GarminProduct::VenuDaimlerAsia),
6952 3739 => Some(GarminProduct::MarqGolfer),
6953 3740 => Some(GarminProduct::VenuDaimler),
6954 3794 => Some(GarminProduct::Fr745Asia),
6955 3808 => Some(GarminProduct::VariaRct715),
6956 3809 => Some(GarminProduct::LilyAsia),
6957 3812 => Some(GarminProduct::Edge1030PlusAsia),
6958 3813 => Some(GarminProduct::Edge130PlusAsia),
6959 3823 => Some(GarminProduct::ApproachS12),
6960 3872 => Some(GarminProduct::EnduroAsia),
6961 3837 => Some(GarminProduct::VenusqAsia),
6962 3843 => Some(GarminProduct::Edge1040),
6963 3850 => Some(GarminProduct::MarqGolferAsia),
6964 3851 => Some(GarminProduct::Venu2Plus),
6965 3865 => Some(GarminProduct::Gnss),
6966 3869 => Some(GarminProduct::Fr55),
6967 3888 => Some(GarminProduct::Instinct2),
6968 3889 => Some(GarminProduct::Instinct2s),
6969 3905 => Some(GarminProduct::Fenix7s),
6970 3906 => Some(GarminProduct::Fenix7),
6971 3907 => Some(GarminProduct::Fenix7x),
6972 3908 => Some(GarminProduct::Fenix7sApac),
6973 3909 => Some(GarminProduct::Fenix7Apac),
6974 3910 => Some(GarminProduct::Fenix7xApac),
6975 3927 => Some(GarminProduct::ApproachG12),
6976 3930 => Some(GarminProduct::DescentMk2sAsia),
6977 3934 => Some(GarminProduct::ApproachS42),
6978 3943 => Some(GarminProduct::EpixGen2),
6979 3944 => Some(GarminProduct::EpixGen2Apac),
6980 3949 => Some(GarminProduct::Venu2sAsia),
6981 3950 => Some(GarminProduct::Venu2Asia),
6982 3978 => Some(GarminProduct::Fr945LteAsia),
6983 3982 => Some(GarminProduct::VivoMoveSport),
6984 3983 => Some(GarminProduct::VivomoveTrend),
6985 3986 => Some(GarminProduct::ApproachS12Asia),
6986 3990 => Some(GarminProduct::Fr255Music),
6987 3991 => Some(GarminProduct::Fr255SmallMusic),
6988 3992 => Some(GarminProduct::Fr255),
6989 3993 => Some(GarminProduct::Fr255Small),
6990 4001 => Some(GarminProduct::ApproachG12Asia),
6991 4002 => Some(GarminProduct::ApproachS42Asia),
6992 4005 => Some(GarminProduct::DescentG1),
6993 4017 => Some(GarminProduct::Venu2PlusAsia),
6994 4024 => Some(GarminProduct::Fr955),
6995 4033 => Some(GarminProduct::Fr55Asia),
6996 4061 => Some(GarminProduct::Edge540),
6997 4062 => Some(GarminProduct::Edge840),
6998 4063 => Some(GarminProduct::Vivosmart5),
6999 4071 => Some(GarminProduct::Instinct2Asia),
7000 4105 => Some(GarminProduct::MarqGen2),
7001 4115 => Some(GarminProduct::Venusq2),
7002 4116 => Some(GarminProduct::Venusq2music),
7003 4124 => Some(GarminProduct::MarqGen2Aviator),
7004 4125 => Some(GarminProduct::D2AirX10),
7005 4130 => Some(GarminProduct::HrmProPlus),
7006 4132 => Some(GarminProduct::DescentG1Asia),
7007 4135 => Some(GarminProduct::Tactix7),
7008 4155 => Some(GarminProduct::InstinctCrossover),
7009 4169 => Some(GarminProduct::EdgeExplore2),
7010 4222 => Some(GarminProduct::DescentMk3),
7011 4223 => Some(GarminProduct::DescentMk3i),
7012 4233 => Some(GarminProduct::ApproachS70),
7013 4257 => Some(GarminProduct::Fr265Large),
7014 4258 => Some(GarminProduct::Fr265Small),
7015 4260 => Some(GarminProduct::Venu3),
7016 4261 => Some(GarminProduct::Venu3s),
7017 4265 => Some(GarminProduct::TacxNeoSmart),
7018 4266 => Some(GarminProduct::TacxNeo2Smart),
7019 4267 => Some(GarminProduct::TacxNeo2TSmart),
7020 4268 => Some(GarminProduct::TacxNeoSmartBike),
7021 4269 => Some(GarminProduct::TacxSatoriSmart),
7022 4270 => Some(GarminProduct::TacxFlowSmart),
7023 4271 => Some(GarminProduct::TacxVortexSmart),
7024 4272 => Some(GarminProduct::TacxBushidoSmart),
7025 4273 => Some(GarminProduct::TacxGeniusSmart),
7026 4274 => Some(GarminProduct::TacxFluxFluxSSmart),
7027 4275 => Some(GarminProduct::TacxFlux2Smart),
7028 4276 => Some(GarminProduct::TacxMagnum),
7029 4305 => Some(GarminProduct::Edge1040Asia),
7030 4312 => Some(GarminProduct::EpixGen2Pro42),
7031 4313 => Some(GarminProduct::EpixGen2Pro47),
7032 4314 => Some(GarminProduct::EpixGen2Pro51),
7033 4315 => Some(GarminProduct::Fr965),
7034 4341 => Some(GarminProduct::Enduro2),
7035 4374 => Some(GarminProduct::Fenix7sProSolar),
7036 4375 => Some(GarminProduct::Fenix7ProSolar),
7037 4376 => Some(GarminProduct::Fenix7xProSolar),
7038 4380 => Some(GarminProduct::Lily2),
7039 4394 => Some(GarminProduct::Instinct2x),
7040 4426 => Some(GarminProduct::Vivoactive5),
7041 4432 => Some(GarminProduct::Fr165),
7042 4433 => Some(GarminProduct::Fr165Music),
7043 4440 => Some(GarminProduct::Edge1050),
7044 4442 => Some(GarminProduct::DescentT2),
7045 4446 => Some(GarminProduct::HrmFit),
7046 4472 => Some(GarminProduct::MarqGen2Commander),
7047 4477 => Some(GarminProduct::LilyAthlete),
7048 4525 => Some(GarminProduct::RallyX10),
7049 4532 => Some(GarminProduct::Fenix8Solar),
7050 4533 => Some(GarminProduct::Fenix8SolarLarge),
7051 4534 => Some(GarminProduct::Fenix8Small),
7052 4536 => Some(GarminProduct::Fenix8),
7053 4556 => Some(GarminProduct::D2Mach1Pro),
7054 4575 => Some(GarminProduct::Enduro3),
7055 4583 => Some(GarminProduct::InstinctE40mm),
7056 4584 => Some(GarminProduct::InstinctE45mm),
7057 4585 => Some(GarminProduct::Instinct3Solar45mm),
7058 4586 => Some(GarminProduct::Instinct3Amoled45mm),
7059 4587 => Some(GarminProduct::Instinct3Amoled50mm),
7060 4588 => Some(GarminProduct::DescentG2),
7061 4603 => Some(GarminProduct::VenuX1),
7062 4606 => Some(GarminProduct::Hrm200),
7063 4625 => Some(GarminProduct::Vivoactive6),
7064 4631 => Some(GarminProduct::Fenix8Pro),
7065 4633 => Some(GarminProduct::Edge550),
7066 4634 => Some(GarminProduct::Edge850),
7067 4643 => Some(GarminProduct::Venu4),
7068 4644 => Some(GarminProduct::Venu4s),
7069 4647 => Some(GarminProduct::ApproachS44),
7070 4655 => Some(GarminProduct::EdgeMtb),
7071 4656 => Some(GarminProduct::ApproachS50),
7072 4666 => Some(GarminProduct::FenixE),
7073 4745 => Some(GarminProduct::Bounce2),
7074 4759 => Some(GarminProduct::Instinct3Solar50mm),
7075 4775 => Some(GarminProduct::Tactix8Amoled),
7076 4776 => Some(GarminProduct::Tactix8Solar),
7077 4825 => Some(GarminProduct::ApproachJ1),
7078 4879 => Some(GarminProduct::D2Mach2),
7079 4678 => Some(GarminProduct::InstinctCrossoverAmoled),
7080 4944 => Some(GarminProduct::D2AirX15),
7081 10007 => Some(GarminProduct::Sdm4),
7082 10014 => Some(GarminProduct::EdgeRemote),
7083 20533 => Some(GarminProduct::TacxTrainingAppWin),
7084 20534 => Some(GarminProduct::TacxTrainingAppMac),
7085 20565 => Some(GarminProduct::TacxTrainingAppMacCatalyst),
7086 20119 => Some(GarminProduct::TrainingCenter),
7087 30045 => Some(GarminProduct::TacxTrainingAppAndroid),
7088 30046 => Some(GarminProduct::TacxTrainingAppIos),
7089 30047 => Some(GarminProduct::TacxTrainingAppLegacy),
7090 65531 => Some(GarminProduct::ConnectiqSimulator),
7091 65532 => Some(GarminProduct::AndroidAntplusPlugin),
7092 65534 => Some(GarminProduct::Connect),
7093 _ => None,
7094 }
7095 }
7096
7097 pub fn from_str(name: &str) -> Option<Self> {
7099 match name {
7100 "hrm1" => Some(GarminProduct::Hrm1),
7101 "axh01" => Some(GarminProduct::Axh01),
7102 "axb01" => Some(GarminProduct::Axb01),
7103 "axb02" => Some(GarminProduct::Axb02),
7104 "hrm2ss" => Some(GarminProduct::Hrm2ss),
7105 "dsi_alf02" => Some(GarminProduct::DsiAlf02),
7106 "hrm3ss" => Some(GarminProduct::Hrm3ss),
7107 "hrm_run_single_byte_product_id" => Some(GarminProduct::HrmRunSingleByteProductId),
7108 "bsm" => Some(GarminProduct::Bsm),
7109 "bcm" => Some(GarminProduct::Bcm),
7110 "axs01" => Some(GarminProduct::Axs01),
7111 "hrm_tri_single_byte_product_id" => Some(GarminProduct::HrmTriSingleByteProductId),
7112 "hrm4_run_single_byte_product_id" => Some(GarminProduct::Hrm4RunSingleByteProductId),
7113 "fr225_single_byte_product_id" => Some(GarminProduct::Fr225SingleByteProductId),
7114 "gen3_bsm_single_byte_product_id" => Some(GarminProduct::Gen3BsmSingleByteProductId),
7115 "gen3_bcm_single_byte_product_id" => Some(GarminProduct::Gen3BcmSingleByteProductId),
7116 "hrm_fit_single_byte_product_id" => Some(GarminProduct::HrmFitSingleByteProductId),
7117 "OHR" => Some(GarminProduct::OHR),
7118 "fr301_china" => Some(GarminProduct::Fr301China),
7119 "fr301_japan" => Some(GarminProduct::Fr301Japan),
7120 "fr301_korea" => Some(GarminProduct::Fr301Korea),
7121 "fr301_taiwan" => Some(GarminProduct::Fr301Taiwan),
7122 "fr405" => Some(GarminProduct::Fr405),
7123 "fr50" => Some(GarminProduct::Fr50),
7124 "fr405_japan" => Some(GarminProduct::Fr405Japan),
7125 "fr60" => Some(GarminProduct::Fr60),
7126 "dsi_alf01" => Some(GarminProduct::DsiAlf01),
7127 "fr310xt" => Some(GarminProduct::Fr310xt),
7128 "edge500" => Some(GarminProduct::Edge500),
7129 "fr110" => Some(GarminProduct::Fr110),
7130 "edge800" => Some(GarminProduct::Edge800),
7131 "edge500_taiwan" => Some(GarminProduct::Edge500Taiwan),
7132 "edge500_japan" => Some(GarminProduct::Edge500Japan),
7133 "chirp" => Some(GarminProduct::Chirp),
7134 "fr110_japan" => Some(GarminProduct::Fr110Japan),
7135 "edge200" => Some(GarminProduct::Edge200),
7136 "fr910xt" => Some(GarminProduct::Fr910xt),
7137 "edge800_taiwan" => Some(GarminProduct::Edge800Taiwan),
7138 "edge800_japan" => Some(GarminProduct::Edge800Japan),
7139 "alf04" => Some(GarminProduct::Alf04),
7140 "fr610" => Some(GarminProduct::Fr610),
7141 "fr210_japan" => Some(GarminProduct::Fr210Japan),
7142 "vector_ss" => Some(GarminProduct::VectorSs),
7143 "vector_cp" => Some(GarminProduct::VectorCp),
7144 "edge800_china" => Some(GarminProduct::Edge800China),
7145 "edge500_china" => Some(GarminProduct::Edge500China),
7146 "approach_g10" => Some(GarminProduct::ApproachG10),
7147 "fr610_japan" => Some(GarminProduct::Fr610Japan),
7148 "edge500_korea" => Some(GarminProduct::Edge500Korea),
7149 "fr70" => Some(GarminProduct::Fr70),
7150 "fr310xt_4t" => Some(GarminProduct::Fr310xt4t),
7151 "amx" => Some(GarminProduct::Amx),
7152 "fr10" => Some(GarminProduct::Fr10),
7153 "edge800_korea" => Some(GarminProduct::Edge800Korea),
7154 "swim" => Some(GarminProduct::Swim),
7155 "fr910xt_china" => Some(GarminProduct::Fr910xtChina),
7156 "fenix" => Some(GarminProduct::Fenix),
7157 "edge200_taiwan" => Some(GarminProduct::Edge200Taiwan),
7158 "edge510" => Some(GarminProduct::Edge510),
7159 "edge810" => Some(GarminProduct::Edge810),
7160 "tempe" => Some(GarminProduct::Tempe),
7161 "fr910xt_japan" => Some(GarminProduct::Fr910xtJapan),
7162 "fr620" => Some(GarminProduct::Fr620),
7163 "fr220" => Some(GarminProduct::Fr220),
7164 "fr910xt_korea" => Some(GarminProduct::Fr910xtKorea),
7165 "fr10_japan" => Some(GarminProduct::Fr10Japan),
7166 "edge810_japan" => Some(GarminProduct::Edge810Japan),
7167 "virb_elite" => Some(GarminProduct::VirbElite),
7168 "edge_touring" => Some(GarminProduct::EdgeTouring),
7169 "edge510_japan" => Some(GarminProduct::Edge510Japan),
7170 "hrm_tri" => Some(GarminProduct::HrmTri),
7171 "hrm_run" => Some(GarminProduct::HrmRun),
7172 "fr920xt" => Some(GarminProduct::Fr920xt),
7173 "edge510_asia" => Some(GarminProduct::Edge510Asia),
7174 "edge810_china" => Some(GarminProduct::Edge810China),
7175 "edge810_taiwan" => Some(GarminProduct::Edge810Taiwan),
7176 "edge1000" => Some(GarminProduct::Edge1000),
7177 "vivo_fit" => Some(GarminProduct::VivoFit),
7178 "virb_remote" => Some(GarminProduct::VirbRemote),
7179 "vivo_ki" => Some(GarminProduct::VivoKi),
7180 "fr15" => Some(GarminProduct::Fr15),
7181 "vivo_active" => Some(GarminProduct::VivoActive),
7182 "edge510_korea" => Some(GarminProduct::Edge510Korea),
7183 "fr620_japan" => Some(GarminProduct::Fr620Japan),
7184 "fr620_china" => Some(GarminProduct::Fr620China),
7185 "fr220_japan" => Some(GarminProduct::Fr220Japan),
7186 "fr220_china" => Some(GarminProduct::Fr220China),
7187 "approach_s6" => Some(GarminProduct::ApproachS6),
7188 "vivo_smart" => Some(GarminProduct::VivoSmart),
7189 "fenix2" => Some(GarminProduct::Fenix2),
7190 "epix" => Some(GarminProduct::Epix),
7191 "fenix3" => Some(GarminProduct::Fenix3),
7192 "edge1000_taiwan" => Some(GarminProduct::Edge1000Taiwan),
7193 "edge1000_japan" => Some(GarminProduct::Edge1000Japan),
7194 "fr15_japan" => Some(GarminProduct::Fr15Japan),
7195 "edge520" => Some(GarminProduct::Edge520),
7196 "edge1000_china" => Some(GarminProduct::Edge1000China),
7197 "fr620_russia" => Some(GarminProduct::Fr620Russia),
7198 "fr220_russia" => Some(GarminProduct::Fr220Russia),
7199 "vector_s" => Some(GarminProduct::VectorS),
7200 "edge1000_korea" => Some(GarminProduct::Edge1000Korea),
7201 "fr920xt_taiwan" => Some(GarminProduct::Fr920xtTaiwan),
7202 "fr920xt_china" => Some(GarminProduct::Fr920xtChina),
7203 "fr920xt_japan" => Some(GarminProduct::Fr920xtJapan),
7204 "virbx" => Some(GarminProduct::Virbx),
7205 "vivo_smart_apac" => Some(GarminProduct::VivoSmartApac),
7206 "etrex_touch" => Some(GarminProduct::EtrexTouch),
7207 "edge25" => Some(GarminProduct::Edge25),
7208 "fr25" => Some(GarminProduct::Fr25),
7209 "vivo_fit2" => Some(GarminProduct::VivoFit2),
7210 "fr225" => Some(GarminProduct::Fr225),
7211 "fr630" => Some(GarminProduct::Fr630),
7212 "fr230" => Some(GarminProduct::Fr230),
7213 "fr735xt" => Some(GarminProduct::Fr735xt),
7214 "vivo_active_apac" => Some(GarminProduct::VivoActiveApac),
7215 "vector_2" => Some(GarminProduct::Vector2),
7216 "vector_2s" => Some(GarminProduct::Vector2s),
7217 "virbxe" => Some(GarminProduct::Virbxe),
7218 "fr620_taiwan" => Some(GarminProduct::Fr620Taiwan),
7219 "fr220_taiwan" => Some(GarminProduct::Fr220Taiwan),
7220 "truswing" => Some(GarminProduct::Truswing),
7221 "d2airvenu" => Some(GarminProduct::D2airvenu),
7222 "fenix3_china" => Some(GarminProduct::Fenix3China),
7223 "fenix3_twn" => Some(GarminProduct::Fenix3Twn),
7224 "varia_headlight" => Some(GarminProduct::VariaHeadlight),
7225 "varia_taillight_old" => Some(GarminProduct::VariaTaillightOld),
7226 "edge_explore_1000" => Some(GarminProduct::EdgeExplore1000),
7227 "fr225_asia" => Some(GarminProduct::Fr225Asia),
7228 "varia_radar_taillight" => Some(GarminProduct::VariaRadarTaillight),
7229 "varia_radar_display" => Some(GarminProduct::VariaRadarDisplay),
7230 "edge20" => Some(GarminProduct::Edge20),
7231 "edge520_asia" => Some(GarminProduct::Edge520Asia),
7232 "edge520_japan" => Some(GarminProduct::Edge520Japan),
7233 "d2_bravo" => Some(GarminProduct::D2Bravo),
7234 "approach_s20" => Some(GarminProduct::ApproachS20),
7235 "vivo_smart2" => Some(GarminProduct::VivoSmart2),
7236 "edge1000_thai" => Some(GarminProduct::Edge1000Thai),
7237 "varia_remote" => Some(GarminProduct::VariaRemote),
7238 "edge25_asia" => Some(GarminProduct::Edge25Asia),
7239 "edge25_jpn" => Some(GarminProduct::Edge25Jpn),
7240 "edge20_asia" => Some(GarminProduct::Edge20Asia),
7241 "approach_x40" => Some(GarminProduct::ApproachX40),
7242 "fenix3_japan" => Some(GarminProduct::Fenix3Japan),
7243 "vivo_smart_emea" => Some(GarminProduct::VivoSmartEmea),
7244 "fr630_asia" => Some(GarminProduct::Fr630Asia),
7245 "fr630_jpn" => Some(GarminProduct::Fr630Jpn),
7246 "fr230_jpn" => Some(GarminProduct::Fr230Jpn),
7247 "hrm4_run" => Some(GarminProduct::Hrm4Run),
7248 "epix_japan" => Some(GarminProduct::EpixJapan),
7249 "vivo_active_hr" => Some(GarminProduct::VivoActiveHr),
7250 "vivo_smart_gps_hr" => Some(GarminProduct::VivoSmartGpsHr),
7251 "vivo_smart_hr" => Some(GarminProduct::VivoSmartHr),
7252 "vivo_smart_hr_asia" => Some(GarminProduct::VivoSmartHrAsia),
7253 "vivo_smart_gps_hr_asia" => Some(GarminProduct::VivoSmartGpsHrAsia),
7254 "vivo_move" => Some(GarminProduct::VivoMove),
7255 "varia_taillight" => Some(GarminProduct::VariaTaillight),
7256 "fr235_asia" => Some(GarminProduct::Fr235Asia),
7257 "fr235_japan" => Some(GarminProduct::Fr235Japan),
7258 "varia_vision" => Some(GarminProduct::VariaVision),
7259 "vivo_fit3" => Some(GarminProduct::VivoFit3),
7260 "fenix3_korea" => Some(GarminProduct::Fenix3Korea),
7261 "fenix3_sea" => Some(GarminProduct::Fenix3Sea),
7262 "fenix3_hr" => Some(GarminProduct::Fenix3Hr),
7263 "virb_ultra_30" => Some(GarminProduct::VirbUltra30),
7264 "index_smart_scale" => Some(GarminProduct::IndexSmartScale),
7265 "fr235" => Some(GarminProduct::Fr235),
7266 "fenix3_chronos" => Some(GarminProduct::Fenix3Chronos),
7267 "oregon7xx" => Some(GarminProduct::Oregon7xx),
7268 "rino7xx" => Some(GarminProduct::Rino7xx),
7269 "epix_korea" => Some(GarminProduct::EpixKorea),
7270 "fenix3_hr_chn" => Some(GarminProduct::Fenix3HrChn),
7271 "fenix3_hr_twn" => Some(GarminProduct::Fenix3HrTwn),
7272 "fenix3_hr_jpn" => Some(GarminProduct::Fenix3HrJpn),
7273 "fenix3_hr_sea" => Some(GarminProduct::Fenix3HrSea),
7274 "fenix3_hr_kor" => Some(GarminProduct::Fenix3HrKor),
7275 "nautix" => Some(GarminProduct::Nautix),
7276 "vivo_active_hr_apac" => Some(GarminProduct::VivoActiveHrApac),
7277 "fr35" => Some(GarminProduct::Fr35),
7278 "oregon7xx_ww" => Some(GarminProduct::Oregon7xxWw),
7279 "edge_820" => Some(GarminProduct::Edge820),
7280 "edge_explore_820" => Some(GarminProduct::EdgeExplore820),
7281 "fr735xt_apac" => Some(GarminProduct::Fr735xtApac),
7282 "fr735xt_japan" => Some(GarminProduct::Fr735xtJapan),
7283 "fenix5s" => Some(GarminProduct::Fenix5s),
7284 "d2_bravo_titanium" => Some(GarminProduct::D2BravoTitanium),
7285 "varia_ut800" => Some(GarminProduct::VariaUt800),
7286 "running_dynamics_pod" => Some(GarminProduct::RunningDynamicsPod),
7287 "edge_820_china" => Some(GarminProduct::Edge820China),
7288 "edge_820_japan" => Some(GarminProduct::Edge820Japan),
7289 "fenix5x" => Some(GarminProduct::Fenix5x),
7290 "vivo_fit_jr" => Some(GarminProduct::VivoFitJr),
7291 "vivo_smart3" => Some(GarminProduct::VivoSmart3),
7292 "vivo_sport" => Some(GarminProduct::VivoSport),
7293 "edge_820_taiwan" => Some(GarminProduct::Edge820Taiwan),
7294 "edge_820_korea" => Some(GarminProduct::Edge820Korea),
7295 "edge_820_sea" => Some(GarminProduct::Edge820Sea),
7296 "fr35_hebrew" => Some(GarminProduct::Fr35Hebrew),
7297 "approach_s60" => Some(GarminProduct::ApproachS60),
7298 "fr35_apac" => Some(GarminProduct::Fr35Apac),
7299 "fr35_japan" => Some(GarminProduct::Fr35Japan),
7300 "fenix3_chronos_asia" => Some(GarminProduct::Fenix3ChronosAsia),
7301 "virb_360" => Some(GarminProduct::Virb360),
7302 "fr935" => Some(GarminProduct::Fr935),
7303 "fenix5" => Some(GarminProduct::Fenix5),
7304 "vivoactive3" => Some(GarminProduct::Vivoactive3),
7305 "fr235_china_nfc" => Some(GarminProduct::Fr235ChinaNfc),
7306 "foretrex_601_701" => Some(GarminProduct::Foretrex601701),
7307 "vivo_move_hr" => Some(GarminProduct::VivoMoveHr),
7308 "edge_1030" => Some(GarminProduct::Edge1030),
7309 "fr35_sea" => Some(GarminProduct::Fr35Sea),
7310 "vector_3" => Some(GarminProduct::Vector3),
7311 "fenix5_asia" => Some(GarminProduct::Fenix5Asia),
7312 "fenix5s_asia" => Some(GarminProduct::Fenix5sAsia),
7313 "fenix5x_asia" => Some(GarminProduct::Fenix5xAsia),
7314 "approach_z80" => Some(GarminProduct::ApproachZ80),
7315 "fr35_korea" => Some(GarminProduct::Fr35Korea),
7316 "d2charlie" => Some(GarminProduct::D2charlie),
7317 "vivo_smart3_apac" => Some(GarminProduct::VivoSmart3Apac),
7318 "vivo_sport_apac" => Some(GarminProduct::VivoSportApac),
7319 "fr935_asia" => Some(GarminProduct::Fr935Asia),
7320 "descent" => Some(GarminProduct::Descent),
7321 "vivo_fit4" => Some(GarminProduct::VivoFit4),
7322 "fr645" => Some(GarminProduct::Fr645),
7323 "fr645m" => Some(GarminProduct::Fr645m),
7324 "fr30" => Some(GarminProduct::Fr30),
7325 "fenix5s_plus" => Some(GarminProduct::Fenix5sPlus),
7326 "Edge_130" => Some(GarminProduct::Edge130),
7327 "edge_1030_asia" => Some(GarminProduct::Edge1030Asia),
7328 "vivosmart_4" => Some(GarminProduct::Vivosmart4),
7329 "vivo_move_hr_asia" => Some(GarminProduct::VivoMoveHrAsia),
7330 "approach_x10" => Some(GarminProduct::ApproachX10),
7331 "fr30_asia" => Some(GarminProduct::Fr30Asia),
7332 "vivoactive3m_w" => Some(GarminProduct::Vivoactive3mW),
7333 "fr645_asia" => Some(GarminProduct::Fr645Asia),
7334 "fr645m_asia" => Some(GarminProduct::Fr645mAsia),
7335 "edge_explore" => Some(GarminProduct::EdgeExplore),
7336 "gpsmap66" => Some(GarminProduct::Gpsmap66),
7337 "approach_s10" => Some(GarminProduct::ApproachS10),
7338 "vivoactive3m_l" => Some(GarminProduct::Vivoactive3mL),
7339 "fr245" => Some(GarminProduct::Fr245),
7340 "fr245_music" => Some(GarminProduct::Fr245Music),
7341 "approach_g80" => Some(GarminProduct::ApproachG80),
7342 "edge_130_asia" => Some(GarminProduct::Edge130Asia),
7343 "edge_1030_bontrager" => Some(GarminProduct::Edge1030Bontrager),
7344 "fenix5_plus" => Some(GarminProduct::Fenix5Plus),
7345 "fenix5x_plus" => Some(GarminProduct::Fenix5xPlus),
7346 "edge_520_plus" => Some(GarminProduct::Edge520Plus),
7347 "fr945" => Some(GarminProduct::Fr945),
7348 "edge_530" => Some(GarminProduct::Edge530),
7349 "edge_830" => Some(GarminProduct::Edge830),
7350 "instinct_esports" => Some(GarminProduct::InstinctEsports),
7351 "fenix5s_plus_apac" => Some(GarminProduct::Fenix5sPlusApac),
7352 "fenix5x_plus_apac" => Some(GarminProduct::Fenix5xPlusApac),
7353 "edge_520_plus_apac" => Some(GarminProduct::Edge520PlusApac),
7354 "descent_t1" => Some(GarminProduct::DescentT1),
7355 "fr235l_asia" => Some(GarminProduct::Fr235lAsia),
7356 "fr245_asia" => Some(GarminProduct::Fr245Asia),
7357 "vivo_active3m_apac" => Some(GarminProduct::VivoActive3mApac),
7358 "gen3_bsm" => Some(GarminProduct::Gen3Bsm),
7359 "gen3_bcm" => Some(GarminProduct::Gen3Bcm),
7360 "vivo_smart4_asia" => Some(GarminProduct::VivoSmart4Asia),
7361 "vivoactive4_small" => Some(GarminProduct::Vivoactive4Small),
7362 "vivoactive4_large" => Some(GarminProduct::Vivoactive4Large),
7363 "venu" => Some(GarminProduct::Venu),
7364 "marq_driver" => Some(GarminProduct::MarqDriver),
7365 "marq_aviator" => Some(GarminProduct::MarqAviator),
7366 "marq_captain" => Some(GarminProduct::MarqCaptain),
7367 "marq_commander" => Some(GarminProduct::MarqCommander),
7368 "marq_expedition" => Some(GarminProduct::MarqExpedition),
7369 "marq_athlete" => Some(GarminProduct::MarqAthlete),
7370 "descent_mk2" => Some(GarminProduct::DescentMk2),
7371 "fr45" => Some(GarminProduct::Fr45),
7372 "gpsmap66i" => Some(GarminProduct::Gpsmap66i),
7373 "fenix6S_sport" => Some(GarminProduct::Fenix6SSport),
7374 "fenix6S" => Some(GarminProduct::Fenix6S),
7375 "fenix6_sport" => Some(GarminProduct::Fenix6Sport),
7376 "fenix6" => Some(GarminProduct::Fenix6),
7377 "fenix6x" => Some(GarminProduct::Fenix6x),
7378 "hrm_dual" => Some(GarminProduct::HrmDual),
7379 "hrm_pro" => Some(GarminProduct::HrmPro),
7380 "vivo_move3_premium" => Some(GarminProduct::VivoMove3Premium),
7381 "approach_s40" => Some(GarminProduct::ApproachS40),
7382 "fr245m_asia" => Some(GarminProduct::Fr245mAsia),
7383 "edge_530_apac" => Some(GarminProduct::Edge530Apac),
7384 "edge_830_apac" => Some(GarminProduct::Edge830Apac),
7385 "vivo_move3" => Some(GarminProduct::VivoMove3),
7386 "vivo_active4_small_asia" => Some(GarminProduct::VivoActive4SmallAsia),
7387 "vivo_active4_large_asia" => Some(GarminProduct::VivoActive4LargeAsia),
7388 "vivo_active4_oled_asia" => Some(GarminProduct::VivoActive4OledAsia),
7389 "swim2" => Some(GarminProduct::Swim2),
7390 "marq_driver_asia" => Some(GarminProduct::MarqDriverAsia),
7391 "marq_aviator_asia" => Some(GarminProduct::MarqAviatorAsia),
7392 "vivo_move3_asia" => Some(GarminProduct::VivoMove3Asia),
7393 "fr945_asia" => Some(GarminProduct::Fr945Asia),
7394 "vivo_active3t_chn" => Some(GarminProduct::VivoActive3tChn),
7395 "marq_captain_asia" => Some(GarminProduct::MarqCaptainAsia),
7396 "marq_commander_asia" => Some(GarminProduct::MarqCommanderAsia),
7397 "marq_expedition_asia" => Some(GarminProduct::MarqExpeditionAsia),
7398 "marq_athlete_asia" => Some(GarminProduct::MarqAthleteAsia),
7399 "index_smart_scale_2" => Some(GarminProduct::IndexSmartScale2),
7400 "instinct_solar" => Some(GarminProduct::InstinctSolar),
7401 "fr45_asia" => Some(GarminProduct::Fr45Asia),
7402 "vivoactive3_daimler" => Some(GarminProduct::Vivoactive3Daimler),
7403 "legacy_rey" => Some(GarminProduct::LegacyRey),
7404 "legacy_darth_vader" => Some(GarminProduct::LegacyDarthVader),
7405 "legacy_captain_marvel" => Some(GarminProduct::LegacyCaptainMarvel),
7406 "legacy_first_avenger" => Some(GarminProduct::LegacyFirstAvenger),
7407 "fenix6s_sport_asia" => Some(GarminProduct::Fenix6sSportAsia),
7408 "fenix6s_asia" => Some(GarminProduct::Fenix6sAsia),
7409 "fenix6_sport_asia" => Some(GarminProduct::Fenix6SportAsia),
7410 "fenix6_asia" => Some(GarminProduct::Fenix6Asia),
7411 "fenix6x_asia" => Some(GarminProduct::Fenix6xAsia),
7412 "legacy_captain_marvel_asia" => Some(GarminProduct::LegacyCaptainMarvelAsia),
7413 "legacy_first_avenger_asia" => Some(GarminProduct::LegacyFirstAvengerAsia),
7414 "legacy_rey_asia" => Some(GarminProduct::LegacyReyAsia),
7415 "legacy_darth_vader_asia" => Some(GarminProduct::LegacyDarthVaderAsia),
7416 "descent_mk2s" => Some(GarminProduct::DescentMk2s),
7417 "edge_130_plus" => Some(GarminProduct::Edge130Plus),
7418 "edge_1030_plus" => Some(GarminProduct::Edge1030Plus),
7419 "rally_200" => Some(GarminProduct::Rally200),
7420 "fr745" => Some(GarminProduct::Fr745),
7421 "venusq_music" => Some(GarminProduct::VenusqMusic),
7422 "venusq_music_v2" => Some(GarminProduct::VenusqMusicV2),
7423 "venusq" => Some(GarminProduct::Venusq),
7424 "lily" => Some(GarminProduct::Lily),
7425 "marq_adventurer" => Some(GarminProduct::MarqAdventurer),
7426 "enduro" => Some(GarminProduct::Enduro),
7427 "swim2_apac" => Some(GarminProduct::Swim2Apac),
7428 "marq_adventurer_asia" => Some(GarminProduct::MarqAdventurerAsia),
7429 "fr945_lte" => Some(GarminProduct::Fr945Lte),
7430 "descent_mk2_asia" => Some(GarminProduct::DescentMk2Asia),
7431 "venu2" => Some(GarminProduct::Venu2),
7432 "venu2s" => Some(GarminProduct::Venu2s),
7433 "venu_daimler_asia" => Some(GarminProduct::VenuDaimlerAsia),
7434 "marq_golfer" => Some(GarminProduct::MarqGolfer),
7435 "venu_daimler" => Some(GarminProduct::VenuDaimler),
7436 "fr745_asia" => Some(GarminProduct::Fr745Asia),
7437 "varia_rct715" => Some(GarminProduct::VariaRct715),
7438 "lily_asia" => Some(GarminProduct::LilyAsia),
7439 "edge_1030_plus_asia" => Some(GarminProduct::Edge1030PlusAsia),
7440 "edge_130_plus_asia" => Some(GarminProduct::Edge130PlusAsia),
7441 "approach_s12" => Some(GarminProduct::ApproachS12),
7442 "enduro_asia" => Some(GarminProduct::EnduroAsia),
7443 "venusq_asia" => Some(GarminProduct::VenusqAsia),
7444 "edge_1040" => Some(GarminProduct::Edge1040),
7445 "marq_golfer_asia" => Some(GarminProduct::MarqGolferAsia),
7446 "venu2_plus" => Some(GarminProduct::Venu2Plus),
7447 "gnss" => Some(GarminProduct::Gnss),
7448 "fr55" => Some(GarminProduct::Fr55),
7449 "instinct_2" => Some(GarminProduct::Instinct2),
7450 "instinct_2s" => Some(GarminProduct::Instinct2s),
7451 "fenix7s" => Some(GarminProduct::Fenix7s),
7452 "fenix7" => Some(GarminProduct::Fenix7),
7453 "fenix7x" => Some(GarminProduct::Fenix7x),
7454 "fenix7s_apac" => Some(GarminProduct::Fenix7sApac),
7455 "fenix7_apac" => Some(GarminProduct::Fenix7Apac),
7456 "fenix7x_apac" => Some(GarminProduct::Fenix7xApac),
7457 "approach_g12" => Some(GarminProduct::ApproachG12),
7458 "descent_mk2s_asia" => Some(GarminProduct::DescentMk2sAsia),
7459 "approach_s42" => Some(GarminProduct::ApproachS42),
7460 "epix_gen2" => Some(GarminProduct::EpixGen2),
7461 "epix_gen2_apac" => Some(GarminProduct::EpixGen2Apac),
7462 "venu2s_asia" => Some(GarminProduct::Venu2sAsia),
7463 "venu2_asia" => Some(GarminProduct::Venu2Asia),
7464 "fr945_lte_asia" => Some(GarminProduct::Fr945LteAsia),
7465 "vivo_move_sport" => Some(GarminProduct::VivoMoveSport),
7466 "vivomove_trend" => Some(GarminProduct::VivomoveTrend),
7467 "approach_S12_asia" => Some(GarminProduct::ApproachS12Asia),
7468 "fr255_music" => Some(GarminProduct::Fr255Music),
7469 "fr255_small_music" => Some(GarminProduct::Fr255SmallMusic),
7470 "fr255" => Some(GarminProduct::Fr255),
7471 "fr255_small" => Some(GarminProduct::Fr255Small),
7472 "approach_g12_asia" => Some(GarminProduct::ApproachG12Asia),
7473 "approach_s42_asia" => Some(GarminProduct::ApproachS42Asia),
7474 "descent_g1" => Some(GarminProduct::DescentG1),
7475 "venu2_plus_asia" => Some(GarminProduct::Venu2PlusAsia),
7476 "fr955" => Some(GarminProduct::Fr955),
7477 "fr55_asia" => Some(GarminProduct::Fr55Asia),
7478 "edge_540" => Some(GarminProduct::Edge540),
7479 "edge_840" => Some(GarminProduct::Edge840),
7480 "vivosmart_5" => Some(GarminProduct::Vivosmart5),
7481 "instinct_2_asia" => Some(GarminProduct::Instinct2Asia),
7482 "marq_gen2" => Some(GarminProduct::MarqGen2),
7483 "venusq2" => Some(GarminProduct::Venusq2),
7484 "venusq2music" => Some(GarminProduct::Venusq2music),
7485 "marq_gen2_aviator" => Some(GarminProduct::MarqGen2Aviator),
7486 "d2_air_x10" => Some(GarminProduct::D2AirX10),
7487 "hrm_pro_plus" => Some(GarminProduct::HrmProPlus),
7488 "descent_g1_asia" => Some(GarminProduct::DescentG1Asia),
7489 "tactix7" => Some(GarminProduct::Tactix7),
7490 "instinct_crossover" => Some(GarminProduct::InstinctCrossover),
7491 "edge_explore2" => Some(GarminProduct::EdgeExplore2),
7492 "descent_mk3" => Some(GarminProduct::DescentMk3),
7493 "descent_mk3i" => Some(GarminProduct::DescentMk3i),
7494 "approach_s70" => Some(GarminProduct::ApproachS70),
7495 "fr265_large" => Some(GarminProduct::Fr265Large),
7496 "fr265_small" => Some(GarminProduct::Fr265Small),
7497 "venu3" => Some(GarminProduct::Venu3),
7498 "venu3s" => Some(GarminProduct::Venu3s),
7499 "tacx_neo_smart" => Some(GarminProduct::TacxNeoSmart),
7500 "tacx_neo2_smart" => Some(GarminProduct::TacxNeo2Smart),
7501 "tacx_neo2_t_smart" => Some(GarminProduct::TacxNeo2TSmart),
7502 "tacx_neo_smart_bike" => Some(GarminProduct::TacxNeoSmartBike),
7503 "tacx_satori_smart" => Some(GarminProduct::TacxSatoriSmart),
7504 "tacx_flow_smart" => Some(GarminProduct::TacxFlowSmart),
7505 "tacx_vortex_smart" => Some(GarminProduct::TacxVortexSmart),
7506 "tacx_bushido_smart" => Some(GarminProduct::TacxBushidoSmart),
7507 "tacx_genius_smart" => Some(GarminProduct::TacxGeniusSmart),
7508 "tacx_flux_flux_s_smart" => Some(GarminProduct::TacxFluxFluxSSmart),
7509 "tacx_flux2_smart" => Some(GarminProduct::TacxFlux2Smart),
7510 "tacx_magnum" => Some(GarminProduct::TacxMagnum),
7511 "edge_1040_asia" => Some(GarminProduct::Edge1040Asia),
7512 "epix_gen2_pro_42" => Some(GarminProduct::EpixGen2Pro42),
7513 "epix_gen2_pro_47" => Some(GarminProduct::EpixGen2Pro47),
7514 "epix_gen2_pro_51" => Some(GarminProduct::EpixGen2Pro51),
7515 "fr965" => Some(GarminProduct::Fr965),
7516 "enduro2" => Some(GarminProduct::Enduro2),
7517 "fenix7s_pro_solar" => Some(GarminProduct::Fenix7sProSolar),
7518 "fenix7_pro_solar" => Some(GarminProduct::Fenix7ProSolar),
7519 "fenix7x_pro_solar" => Some(GarminProduct::Fenix7xProSolar),
7520 "lily2" => Some(GarminProduct::Lily2),
7521 "instinct_2x" => Some(GarminProduct::Instinct2x),
7522 "vivoactive5" => Some(GarminProduct::Vivoactive5),
7523 "fr165" => Some(GarminProduct::Fr165),
7524 "fr165_music" => Some(GarminProduct::Fr165Music),
7525 "edge_1050" => Some(GarminProduct::Edge1050),
7526 "descent_t2" => Some(GarminProduct::DescentT2),
7527 "hrm_fit" => Some(GarminProduct::HrmFit),
7528 "marq_gen2_commander" => Some(GarminProduct::MarqGen2Commander),
7529 "lily_athlete" => Some(GarminProduct::LilyAthlete),
7530 "rally_x10" => Some(GarminProduct::RallyX10),
7531 "fenix8_solar" => Some(GarminProduct::Fenix8Solar),
7532 "fenix8_solar_large" => Some(GarminProduct::Fenix8SolarLarge),
7533 "fenix8_small" => Some(GarminProduct::Fenix8Small),
7534 "fenix8" => Some(GarminProduct::Fenix8),
7535 "d2_mach1_pro" => Some(GarminProduct::D2Mach1Pro),
7536 "enduro3" => Some(GarminProduct::Enduro3),
7537 "instinctE_40mm" => Some(GarminProduct::InstinctE40mm),
7538 "instinctE_45mm" => Some(GarminProduct::InstinctE45mm),
7539 "instinct3_solar_45mm" => Some(GarminProduct::Instinct3Solar45mm),
7540 "instinct3_amoled_45mm" => Some(GarminProduct::Instinct3Amoled45mm),
7541 "instinct3_amoled_50mm" => Some(GarminProduct::Instinct3Amoled50mm),
7542 "descent_g2" => Some(GarminProduct::DescentG2),
7543 "venu_x1" => Some(GarminProduct::VenuX1),
7544 "hrm_200" => Some(GarminProduct::Hrm200),
7545 "vivoactive6" => Some(GarminProduct::Vivoactive6),
7546 "fenix8_pro" => Some(GarminProduct::Fenix8Pro),
7547 "edge_550" => Some(GarminProduct::Edge550),
7548 "edge_850" => Some(GarminProduct::Edge850),
7549 "venu4" => Some(GarminProduct::Venu4),
7550 "venu4s" => Some(GarminProduct::Venu4s),
7551 "approachS44" => Some(GarminProduct::ApproachS44),
7552 "edge_mtb" => Some(GarminProduct::EdgeMtb),
7553 "approachS50" => Some(GarminProduct::ApproachS50),
7554 "fenix_e" => Some(GarminProduct::FenixE),
7555 "bounce2" => Some(GarminProduct::Bounce2),
7556 "instinct3_solar_50mm" => Some(GarminProduct::Instinct3Solar50mm),
7557 "tactix8_amoled" => Some(GarminProduct::Tactix8Amoled),
7558 "tactix8_solar" => Some(GarminProduct::Tactix8Solar),
7559 "approach_j1" => Some(GarminProduct::ApproachJ1),
7560 "d2_mach2" => Some(GarminProduct::D2Mach2),
7561 "instinct_crossover_amoled" => Some(GarminProduct::InstinctCrossoverAmoled),
7562 "d2_air_x15" => Some(GarminProduct::D2AirX15),
7563 "sdm4" => Some(GarminProduct::Sdm4),
7564 "edge_remote" => Some(GarminProduct::EdgeRemote),
7565 "tacx_training_app_win" => Some(GarminProduct::TacxTrainingAppWin),
7566 "tacx_training_app_mac" => Some(GarminProduct::TacxTrainingAppMac),
7567 "tacx_training_app_mac_catalyst" => Some(GarminProduct::TacxTrainingAppMacCatalyst),
7568 "training_center" => Some(GarminProduct::TrainingCenter),
7569 "tacx_training_app_android" => Some(GarminProduct::TacxTrainingAppAndroid),
7570 "tacx_training_app_ios" => Some(GarminProduct::TacxTrainingAppIos),
7571 "tacx_training_app_legacy" => Some(GarminProduct::TacxTrainingAppLegacy),
7572 "connectiq_simulator" => Some(GarminProduct::ConnectiqSimulator),
7573 "android_antplus_plugin" => Some(GarminProduct::AndroidAntplusPlugin),
7574 "connect" => Some(GarminProduct::Connect),
7575 _ => None,
7576 }
7577 }
7578}
7579
7580#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7581#[repr(u8)]
7582#[non_exhaustive]
7583pub enum AntplusDeviceType {
7584 Antfs = 1,
7585 BikePower = 11,
7586 EnvironmentSensorLegacy = 12,
7587 MultiSportSpeedDistance = 15,
7588 Control = 16,
7589 FitnessEquipment = 17,
7590 BloodPressure = 18,
7591 GeocacheNode = 19,
7592 LightElectricVehicle = 20,
7593 EnvSensor = 25,
7594 Racquet = 26,
7595 ControlHub = 27,
7596 MuscleOxygen = 31,
7597 Shifting = 34,
7598 BikeLightMain = 35,
7599 BikeLightShared = 36,
7600 Exd = 38,
7601 BikeRadar = 40,
7602 BikeAero = 46,
7603 WeightScale = 119,
7604 HeartRate = 120,
7605 BikeSpeedCadence = 121,
7606 BikeCadence = 122,
7607 BikeSpeed = 123,
7608 StrideSpeedDistance = 124,
7609}
7610
7611impl AntplusDeviceType {
7612 pub fn as_str(&self) -> &'static str {
7614 match self {
7615 AntplusDeviceType::Antfs => "antfs",
7616 AntplusDeviceType::BikePower => "bike_power",
7617 AntplusDeviceType::EnvironmentSensorLegacy => "environment_sensor_legacy",
7618 AntplusDeviceType::MultiSportSpeedDistance => "multi_sport_speed_distance",
7619 AntplusDeviceType::Control => "control",
7620 AntplusDeviceType::FitnessEquipment => "fitness_equipment",
7621 AntplusDeviceType::BloodPressure => "blood_pressure",
7622 AntplusDeviceType::GeocacheNode => "geocache_node",
7623 AntplusDeviceType::LightElectricVehicle => "light_electric_vehicle",
7624 AntplusDeviceType::EnvSensor => "env_sensor",
7625 AntplusDeviceType::Racquet => "racquet",
7626 AntplusDeviceType::ControlHub => "control_hub",
7627 AntplusDeviceType::MuscleOxygen => "muscle_oxygen",
7628 AntplusDeviceType::Shifting => "shifting",
7629 AntplusDeviceType::BikeLightMain => "bike_light_main",
7630 AntplusDeviceType::BikeLightShared => "bike_light_shared",
7631 AntplusDeviceType::Exd => "exd",
7632 AntplusDeviceType::BikeRadar => "bike_radar",
7633 AntplusDeviceType::BikeAero => "bike_aero",
7634 AntplusDeviceType::WeightScale => "weight_scale",
7635 AntplusDeviceType::HeartRate => "heart_rate",
7636 AntplusDeviceType::BikeSpeedCadence => "bike_speed_cadence",
7637 AntplusDeviceType::BikeCadence => "bike_cadence",
7638 AntplusDeviceType::BikeSpeed => "bike_speed",
7639 AntplusDeviceType::StrideSpeedDistance => "stride_speed_distance",
7640 }
7641 }
7642
7643 pub fn from_value(value: u8) -> Option<Self> {
7645 match value {
7646 1 => Some(AntplusDeviceType::Antfs),
7647 11 => Some(AntplusDeviceType::BikePower),
7648 12 => Some(AntplusDeviceType::EnvironmentSensorLegacy),
7649 15 => Some(AntplusDeviceType::MultiSportSpeedDistance),
7650 16 => Some(AntplusDeviceType::Control),
7651 17 => Some(AntplusDeviceType::FitnessEquipment),
7652 18 => Some(AntplusDeviceType::BloodPressure),
7653 19 => Some(AntplusDeviceType::GeocacheNode),
7654 20 => Some(AntplusDeviceType::LightElectricVehicle),
7655 25 => Some(AntplusDeviceType::EnvSensor),
7656 26 => Some(AntplusDeviceType::Racquet),
7657 27 => Some(AntplusDeviceType::ControlHub),
7658 31 => Some(AntplusDeviceType::MuscleOxygen),
7659 34 => Some(AntplusDeviceType::Shifting),
7660 35 => Some(AntplusDeviceType::BikeLightMain),
7661 36 => Some(AntplusDeviceType::BikeLightShared),
7662 38 => Some(AntplusDeviceType::Exd),
7663 40 => Some(AntplusDeviceType::BikeRadar),
7664 46 => Some(AntplusDeviceType::BikeAero),
7665 119 => Some(AntplusDeviceType::WeightScale),
7666 120 => Some(AntplusDeviceType::HeartRate),
7667 121 => Some(AntplusDeviceType::BikeSpeedCadence),
7668 122 => Some(AntplusDeviceType::BikeCadence),
7669 123 => Some(AntplusDeviceType::BikeSpeed),
7670 124 => Some(AntplusDeviceType::StrideSpeedDistance),
7671 _ => None,
7672 }
7673 }
7674
7675 pub fn from_str(name: &str) -> Option<Self> {
7677 match name {
7678 "antfs" => Some(AntplusDeviceType::Antfs),
7679 "bike_power" => Some(AntplusDeviceType::BikePower),
7680 "environment_sensor_legacy" => Some(AntplusDeviceType::EnvironmentSensorLegacy),
7681 "multi_sport_speed_distance" => Some(AntplusDeviceType::MultiSportSpeedDistance),
7682 "control" => Some(AntplusDeviceType::Control),
7683 "fitness_equipment" => Some(AntplusDeviceType::FitnessEquipment),
7684 "blood_pressure" => Some(AntplusDeviceType::BloodPressure),
7685 "geocache_node" => Some(AntplusDeviceType::GeocacheNode),
7686 "light_electric_vehicle" => Some(AntplusDeviceType::LightElectricVehicle),
7687 "env_sensor" => Some(AntplusDeviceType::EnvSensor),
7688 "racquet" => Some(AntplusDeviceType::Racquet),
7689 "control_hub" => Some(AntplusDeviceType::ControlHub),
7690 "muscle_oxygen" => Some(AntplusDeviceType::MuscleOxygen),
7691 "shifting" => Some(AntplusDeviceType::Shifting),
7692 "bike_light_main" => Some(AntplusDeviceType::BikeLightMain),
7693 "bike_light_shared" => Some(AntplusDeviceType::BikeLightShared),
7694 "exd" => Some(AntplusDeviceType::Exd),
7695 "bike_radar" => Some(AntplusDeviceType::BikeRadar),
7696 "bike_aero" => Some(AntplusDeviceType::BikeAero),
7697 "weight_scale" => Some(AntplusDeviceType::WeightScale),
7698 "heart_rate" => Some(AntplusDeviceType::HeartRate),
7699 "bike_speed_cadence" => Some(AntplusDeviceType::BikeSpeedCadence),
7700 "bike_cadence" => Some(AntplusDeviceType::BikeCadence),
7701 "bike_speed" => Some(AntplusDeviceType::BikeSpeed),
7702 "stride_speed_distance" => Some(AntplusDeviceType::StrideSpeedDistance),
7703 _ => None,
7704 }
7705 }
7706}
7707
7708#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7709#[repr(u8)]
7710#[non_exhaustive]
7711pub enum AntNetwork {
7712 Public = 0,
7713 Antplus = 1,
7714 Antfs = 2,
7715 Private = 3,
7716}
7717
7718impl AntNetwork {
7719 pub fn as_str(&self) -> &'static str {
7721 match self {
7722 AntNetwork::Public => "public",
7723 AntNetwork::Antplus => "antplus",
7724 AntNetwork::Antfs => "antfs",
7725 AntNetwork::Private => "private",
7726 }
7727 }
7728
7729 pub fn from_value(value: u8) -> Option<Self> {
7731 match value {
7732 0 => Some(AntNetwork::Public),
7733 1 => Some(AntNetwork::Antplus),
7734 2 => Some(AntNetwork::Antfs),
7735 3 => Some(AntNetwork::Private),
7736 _ => None,
7737 }
7738 }
7739
7740 pub fn from_str(name: &str) -> Option<Self> {
7742 match name {
7743 "public" => Some(AntNetwork::Public),
7744 "antplus" => Some(AntNetwork::Antplus),
7745 "antfs" => Some(AntNetwork::Antfs),
7746 "private" => Some(AntNetwork::Private),
7747 _ => None,
7748 }
7749 }
7750}
7751
7752#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7753#[repr(u32)]
7754#[non_exhaustive]
7755pub enum WorkoutCapabilities {
7756 Interval = 1,
7757 Custom = 2,
7758 FitnessEquipment = 4,
7759 Firstbeat = 8,
7760 NewLeaf = 16,
7761 Tcx = 32,
7762 Speed = 128,
7763 HeartRate = 256,
7764 Distance = 512,
7765 Cadence = 1024,
7766 Power = 2048,
7767 Grade = 4096,
7768 Resistance = 8192,
7769 Protected = 16384,
7770}
7771
7772impl WorkoutCapabilities {
7773 pub fn as_str(&self) -> &'static str {
7775 match self {
7776 WorkoutCapabilities::Interval => "interval",
7777 WorkoutCapabilities::Custom => "custom",
7778 WorkoutCapabilities::FitnessEquipment => "fitness_equipment",
7779 WorkoutCapabilities::Firstbeat => "firstbeat",
7780 WorkoutCapabilities::NewLeaf => "new_leaf",
7781 WorkoutCapabilities::Tcx => "tcx",
7782 WorkoutCapabilities::Speed => "speed",
7783 WorkoutCapabilities::HeartRate => "heart_rate",
7784 WorkoutCapabilities::Distance => "distance",
7785 WorkoutCapabilities::Cadence => "cadence",
7786 WorkoutCapabilities::Power => "power",
7787 WorkoutCapabilities::Grade => "grade",
7788 WorkoutCapabilities::Resistance => "resistance",
7789 WorkoutCapabilities::Protected => "protected",
7790 }
7791 }
7792
7793 pub fn from_value(value: u32) -> Option<Self> {
7795 match value {
7796 1 => Some(WorkoutCapabilities::Interval),
7797 2 => Some(WorkoutCapabilities::Custom),
7798 4 => Some(WorkoutCapabilities::FitnessEquipment),
7799 8 => Some(WorkoutCapabilities::Firstbeat),
7800 16 => Some(WorkoutCapabilities::NewLeaf),
7801 32 => Some(WorkoutCapabilities::Tcx),
7802 128 => Some(WorkoutCapabilities::Speed),
7803 256 => Some(WorkoutCapabilities::HeartRate),
7804 512 => Some(WorkoutCapabilities::Distance),
7805 1024 => Some(WorkoutCapabilities::Cadence),
7806 2048 => Some(WorkoutCapabilities::Power),
7807 4096 => Some(WorkoutCapabilities::Grade),
7808 8192 => Some(WorkoutCapabilities::Resistance),
7809 16384 => Some(WorkoutCapabilities::Protected),
7810 _ => None,
7811 }
7812 }
7813
7814 pub fn from_str(name: &str) -> Option<Self> {
7816 match name {
7817 "interval" => Some(WorkoutCapabilities::Interval),
7818 "custom" => Some(WorkoutCapabilities::Custom),
7819 "fitness_equipment" => Some(WorkoutCapabilities::FitnessEquipment),
7820 "firstbeat" => Some(WorkoutCapabilities::Firstbeat),
7821 "new_leaf" => Some(WorkoutCapabilities::NewLeaf),
7822 "tcx" => Some(WorkoutCapabilities::Tcx),
7823 "speed" => Some(WorkoutCapabilities::Speed),
7824 "heart_rate" => Some(WorkoutCapabilities::HeartRate),
7825 "distance" => Some(WorkoutCapabilities::Distance),
7826 "cadence" => Some(WorkoutCapabilities::Cadence),
7827 "power" => Some(WorkoutCapabilities::Power),
7828 "grade" => Some(WorkoutCapabilities::Grade),
7829 "resistance" => Some(WorkoutCapabilities::Resistance),
7830 "protected" => Some(WorkoutCapabilities::Protected),
7831 _ => None,
7832 }
7833 }
7834}
7835
7836#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7837#[repr(u8)]
7838#[non_exhaustive]
7839pub enum BatteryStatus {
7840 New = 1,
7841 Good = 2,
7842 Ok = 3,
7843 Low = 4,
7844 Critical = 5,
7845 Charging = 6,
7846 Unknown = 7,
7847}
7848
7849impl BatteryStatus {
7850 pub fn as_str(&self) -> &'static str {
7852 match self {
7853 BatteryStatus::New => "new",
7854 BatteryStatus::Good => "good",
7855 BatteryStatus::Ok => "ok",
7856 BatteryStatus::Low => "low",
7857 BatteryStatus::Critical => "critical",
7858 BatteryStatus::Charging => "charging",
7859 BatteryStatus::Unknown => "unknown",
7860 }
7861 }
7862
7863 pub fn from_value(value: u8) -> Option<Self> {
7865 match value {
7866 1 => Some(BatteryStatus::New),
7867 2 => Some(BatteryStatus::Good),
7868 3 => Some(BatteryStatus::Ok),
7869 4 => Some(BatteryStatus::Low),
7870 5 => Some(BatteryStatus::Critical),
7871 6 => Some(BatteryStatus::Charging),
7872 7 => Some(BatteryStatus::Unknown),
7873 _ => None,
7874 }
7875 }
7876
7877 pub fn from_str(name: &str) -> Option<Self> {
7879 match name {
7880 "new" => Some(BatteryStatus::New),
7881 "good" => Some(BatteryStatus::Good),
7882 "ok" => Some(BatteryStatus::Ok),
7883 "low" => Some(BatteryStatus::Low),
7884 "critical" => Some(BatteryStatus::Critical),
7885 "charging" => Some(BatteryStatus::Charging),
7886 "unknown" => Some(BatteryStatus::Unknown),
7887 _ => None,
7888 }
7889 }
7890}
7891
7892#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7893#[repr(u8)]
7894#[non_exhaustive]
7895pub enum HrType {
7896 Normal = 0,
7897 Irregular = 1,
7898}
7899
7900impl HrType {
7901 pub fn as_str(&self) -> &'static str {
7903 match self {
7904 HrType::Normal => "normal",
7905 HrType::Irregular => "irregular",
7906 }
7907 }
7908
7909 pub fn from_value(value: u8) -> Option<Self> {
7911 match value {
7912 0 => Some(HrType::Normal),
7913 1 => Some(HrType::Irregular),
7914 _ => None,
7915 }
7916 }
7917
7918 pub fn from_str(name: &str) -> Option<Self> {
7920 match name {
7921 "normal" => Some(HrType::Normal),
7922 "irregular" => Some(HrType::Irregular),
7923 _ => None,
7924 }
7925 }
7926}
7927
7928#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7929#[repr(u32)]
7930#[non_exhaustive]
7931pub enum CourseCapabilities {
7932 Processed = 1,
7933 Valid = 2,
7934 Time = 4,
7935 Distance = 8,
7936 Position = 16,
7937 HeartRate = 32,
7938 Power = 64,
7939 Cadence = 128,
7940 Training = 256,
7941 Navigation = 512,
7942 Bikeway = 1024,
7943 Aviation = 4096,
7944}
7945
7946impl CourseCapabilities {
7947 pub fn as_str(&self) -> &'static str {
7949 match self {
7950 CourseCapabilities::Processed => "processed",
7951 CourseCapabilities::Valid => "valid",
7952 CourseCapabilities::Time => "time",
7953 CourseCapabilities::Distance => "distance",
7954 CourseCapabilities::Position => "position",
7955 CourseCapabilities::HeartRate => "heart_rate",
7956 CourseCapabilities::Power => "power",
7957 CourseCapabilities::Cadence => "cadence",
7958 CourseCapabilities::Training => "training",
7959 CourseCapabilities::Navigation => "navigation",
7960 CourseCapabilities::Bikeway => "bikeway",
7961 CourseCapabilities::Aviation => "aviation",
7962 }
7963 }
7964
7965 pub fn from_value(value: u32) -> Option<Self> {
7967 match value {
7968 1 => Some(CourseCapabilities::Processed),
7969 2 => Some(CourseCapabilities::Valid),
7970 4 => Some(CourseCapabilities::Time),
7971 8 => Some(CourseCapabilities::Distance),
7972 16 => Some(CourseCapabilities::Position),
7973 32 => Some(CourseCapabilities::HeartRate),
7974 64 => Some(CourseCapabilities::Power),
7975 128 => Some(CourseCapabilities::Cadence),
7976 256 => Some(CourseCapabilities::Training),
7977 512 => Some(CourseCapabilities::Navigation),
7978 1024 => Some(CourseCapabilities::Bikeway),
7979 4096 => Some(CourseCapabilities::Aviation),
7980 _ => None,
7981 }
7982 }
7983
7984 pub fn from_str(name: &str) -> Option<Self> {
7986 match name {
7987 "processed" => Some(CourseCapabilities::Processed),
7988 "valid" => Some(CourseCapabilities::Valid),
7989 "time" => Some(CourseCapabilities::Time),
7990 "distance" => Some(CourseCapabilities::Distance),
7991 "position" => Some(CourseCapabilities::Position),
7992 "heart_rate" => Some(CourseCapabilities::HeartRate),
7993 "power" => Some(CourseCapabilities::Power),
7994 "cadence" => Some(CourseCapabilities::Cadence),
7995 "training" => Some(CourseCapabilities::Training),
7996 "navigation" => Some(CourseCapabilities::Navigation),
7997 "bikeway" => Some(CourseCapabilities::Bikeway),
7998 "aviation" => Some(CourseCapabilities::Aviation),
7999 _ => None,
8000 }
8001 }
8002}
8003
8004#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8005#[repr(u16)]
8006#[non_exhaustive]
8007pub enum Weight {
8008 Calculating = 65534,
8009}
8010
8011impl Weight {
8012 pub fn as_str(&self) -> &'static str {
8014 match self {
8015 Weight::Calculating => "calculating",
8016 }
8017 }
8018
8019 pub fn from_value(value: u16) -> Option<Self> {
8021 match value {
8022 65534 => Some(Weight::Calculating),
8023 _ => None,
8024 }
8025 }
8026
8027 pub fn from_str(name: &str) -> Option<Self> {
8029 match name {
8030 "calculating" => Some(Weight::Calculating),
8031 _ => None,
8032 }
8033 }
8034}
8035
8036#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8037#[repr(u32)]
8038#[non_exhaustive]
8039pub enum WorkoutHr {
8040 BpmOffset = 100,
8041}
8042
8043impl WorkoutHr {
8044 pub fn as_str(&self) -> &'static str {
8046 match self {
8047 WorkoutHr::BpmOffset => "bpm_offset",
8048 }
8049 }
8050
8051 pub fn from_value(value: u32) -> Option<Self> {
8053 match value {
8054 100 => Some(WorkoutHr::BpmOffset),
8055 _ => None,
8056 }
8057 }
8058
8059 pub fn from_str(name: &str) -> Option<Self> {
8061 match name {
8062 "bpm_offset" => Some(WorkoutHr::BpmOffset),
8063 _ => None,
8064 }
8065 }
8066}
8067
8068#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8069#[repr(u32)]
8070#[non_exhaustive]
8071pub enum WorkoutPower {
8072 WattsOffset = 1000,
8073}
8074
8075impl WorkoutPower {
8076 pub fn as_str(&self) -> &'static str {
8078 match self {
8079 WorkoutPower::WattsOffset => "watts_offset",
8080 }
8081 }
8082
8083 pub fn from_value(value: u32) -> Option<Self> {
8085 match value {
8086 1000 => Some(WorkoutPower::WattsOffset),
8087 _ => None,
8088 }
8089 }
8090
8091 pub fn from_str(name: &str) -> Option<Self> {
8093 match name {
8094 "watts_offset" => Some(WorkoutPower::WattsOffset),
8095 _ => None,
8096 }
8097 }
8098}
8099
8100#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8101#[repr(u8)]
8102#[non_exhaustive]
8103pub enum BpStatus {
8104 NoError = 0,
8105 ErrorIncompleteData = 1,
8106 ErrorNoMeasurement = 2,
8107 ErrorDataOutOfRange = 3,
8108 ErrorIrregularHeartRate = 4,
8109}
8110
8111impl BpStatus {
8112 pub fn as_str(&self) -> &'static str {
8114 match self {
8115 BpStatus::NoError => "no_error",
8116 BpStatus::ErrorIncompleteData => "error_incomplete_data",
8117 BpStatus::ErrorNoMeasurement => "error_no_measurement",
8118 BpStatus::ErrorDataOutOfRange => "error_data_out_of_range",
8119 BpStatus::ErrorIrregularHeartRate => "error_irregular_heart_rate",
8120 }
8121 }
8122
8123 pub fn from_value(value: u8) -> Option<Self> {
8125 match value {
8126 0 => Some(BpStatus::NoError),
8127 1 => Some(BpStatus::ErrorIncompleteData),
8128 2 => Some(BpStatus::ErrorNoMeasurement),
8129 3 => Some(BpStatus::ErrorDataOutOfRange),
8130 4 => Some(BpStatus::ErrorIrregularHeartRate),
8131 _ => None,
8132 }
8133 }
8134
8135 pub fn from_str(name: &str) -> Option<Self> {
8137 match name {
8138 "no_error" => Some(BpStatus::NoError),
8139 "error_incomplete_data" => Some(BpStatus::ErrorIncompleteData),
8140 "error_no_measurement" => Some(BpStatus::ErrorNoMeasurement),
8141 "error_data_out_of_range" => Some(BpStatus::ErrorDataOutOfRange),
8142 "error_irregular_heart_rate" => Some(BpStatus::ErrorIrregularHeartRate),
8143 _ => None,
8144 }
8145 }
8146}
8147
8148#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8149#[repr(u16)]
8150#[non_exhaustive]
8151pub enum UserLocalId {
8152 LocalMin = 0,
8153 LocalMax = 15,
8154 StationaryMin = 16,
8155 StationaryMax = 255,
8156 PortableMin = 256,
8157 PortableMax = 65534,
8158}
8159
8160impl UserLocalId {
8161 pub fn as_str(&self) -> &'static str {
8163 match self {
8164 UserLocalId::LocalMin => "local_min",
8165 UserLocalId::LocalMax => "local_max",
8166 UserLocalId::StationaryMin => "stationary_min",
8167 UserLocalId::StationaryMax => "stationary_max",
8168 UserLocalId::PortableMin => "portable_min",
8169 UserLocalId::PortableMax => "portable_max",
8170 }
8171 }
8172
8173 pub fn from_value(value: u16) -> Option<Self> {
8175 match value {
8176 0 => Some(UserLocalId::LocalMin),
8177 15 => Some(UserLocalId::LocalMax),
8178 16 => Some(UserLocalId::StationaryMin),
8179 255 => Some(UserLocalId::StationaryMax),
8180 256 => Some(UserLocalId::PortableMin),
8181 65534 => Some(UserLocalId::PortableMax),
8182 _ => None,
8183 }
8184 }
8185
8186 pub fn from_str(name: &str) -> Option<Self> {
8188 match name {
8189 "local_min" => Some(UserLocalId::LocalMin),
8190 "local_max" => Some(UserLocalId::LocalMax),
8191 "stationary_min" => Some(UserLocalId::StationaryMin),
8192 "stationary_max" => Some(UserLocalId::StationaryMax),
8193 "portable_min" => Some(UserLocalId::PortableMin),
8194 "portable_max" => Some(UserLocalId::PortableMax),
8195 _ => None,
8196 }
8197 }
8198}
8199
8200#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8201#[repr(u8)]
8202#[non_exhaustive]
8203pub enum SwimStroke {
8204 Freestyle = 0,
8205 Backstroke = 1,
8206 Breaststroke = 2,
8207 Butterfly = 3,
8208 Drill = 4,
8209 Mixed = 5,
8210 Im = 6,
8211 ImByRound = 7,
8212 Rimo = 8,
8213}
8214
8215impl SwimStroke {
8216 pub fn as_str(&self) -> &'static str {
8218 match self {
8219 SwimStroke::Freestyle => "freestyle",
8220 SwimStroke::Backstroke => "backstroke",
8221 SwimStroke::Breaststroke => "breaststroke",
8222 SwimStroke::Butterfly => "butterfly",
8223 SwimStroke::Drill => "drill",
8224 SwimStroke::Mixed => "mixed",
8225 SwimStroke::Im => "im",
8226 SwimStroke::ImByRound => "im_by_round",
8227 SwimStroke::Rimo => "rimo",
8228 }
8229 }
8230
8231 pub fn from_value(value: u8) -> Option<Self> {
8233 match value {
8234 0 => Some(SwimStroke::Freestyle),
8235 1 => Some(SwimStroke::Backstroke),
8236 2 => Some(SwimStroke::Breaststroke),
8237 3 => Some(SwimStroke::Butterfly),
8238 4 => Some(SwimStroke::Drill),
8239 5 => Some(SwimStroke::Mixed),
8240 6 => Some(SwimStroke::Im),
8241 7 => Some(SwimStroke::ImByRound),
8242 8 => Some(SwimStroke::Rimo),
8243 _ => None,
8244 }
8245 }
8246
8247 pub fn from_str(name: &str) -> Option<Self> {
8249 match name {
8250 "freestyle" => Some(SwimStroke::Freestyle),
8251 "backstroke" => Some(SwimStroke::Backstroke),
8252 "breaststroke" => Some(SwimStroke::Breaststroke),
8253 "butterfly" => Some(SwimStroke::Butterfly),
8254 "drill" => Some(SwimStroke::Drill),
8255 "mixed" => Some(SwimStroke::Mixed),
8256 "im" => Some(SwimStroke::Im),
8257 "im_by_round" => Some(SwimStroke::ImByRound),
8258 "rimo" => Some(SwimStroke::Rimo),
8259 _ => None,
8260 }
8261 }
8262}
8263
8264#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8265#[repr(u8)]
8266#[non_exhaustive]
8267pub enum ActivityType {
8268 Generic = 0,
8269 Running = 1,
8270 Cycling = 2,
8271 Transition = 3,
8272 FitnessEquipment = 4,
8273 Swimming = 5,
8274 Walking = 6,
8275 Sedentary = 8,
8276 All = 254,
8277}
8278
8279impl ActivityType {
8280 pub fn as_str(&self) -> &'static str {
8282 match self {
8283 ActivityType::Generic => "generic",
8284 ActivityType::Running => "running",
8285 ActivityType::Cycling => "cycling",
8286 ActivityType::Transition => "transition",
8287 ActivityType::FitnessEquipment => "fitness_equipment",
8288 ActivityType::Swimming => "swimming",
8289 ActivityType::Walking => "walking",
8290 ActivityType::Sedentary => "sedentary",
8291 ActivityType::All => "all",
8292 }
8293 }
8294
8295 pub fn from_value(value: u8) -> Option<Self> {
8297 match value {
8298 0 => Some(ActivityType::Generic),
8299 1 => Some(ActivityType::Running),
8300 2 => Some(ActivityType::Cycling),
8301 3 => Some(ActivityType::Transition),
8302 4 => Some(ActivityType::FitnessEquipment),
8303 5 => Some(ActivityType::Swimming),
8304 6 => Some(ActivityType::Walking),
8305 8 => Some(ActivityType::Sedentary),
8306 254 => Some(ActivityType::All),
8307 _ => None,
8308 }
8309 }
8310
8311 pub fn from_str(name: &str) -> Option<Self> {
8313 match name {
8314 "generic" => Some(ActivityType::Generic),
8315 "running" => Some(ActivityType::Running),
8316 "cycling" => Some(ActivityType::Cycling),
8317 "transition" => Some(ActivityType::Transition),
8318 "fitness_equipment" => Some(ActivityType::FitnessEquipment),
8319 "swimming" => Some(ActivityType::Swimming),
8320 "walking" => Some(ActivityType::Walking),
8321 "sedentary" => Some(ActivityType::Sedentary),
8322 "all" => Some(ActivityType::All),
8323 _ => None,
8324 }
8325 }
8326}
8327
8328#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8329#[repr(u8)]
8330#[non_exhaustive]
8331pub enum ActivitySubtype {
8332 Generic = 0,
8333 Treadmill = 1,
8334 Street = 2,
8335 Trail = 3,
8336 Track = 4,
8337 Spin = 5,
8338 IndoorCycling = 6,
8339 Road = 7,
8340 Mountain = 8,
8341 Downhill = 9,
8342 Recumbent = 10,
8343 Cyclocross = 11,
8344 HandCycling = 12,
8345 TrackCycling = 13,
8346 IndoorRowing = 14,
8347 Elliptical = 15,
8348 StairClimbing = 16,
8349 LapSwimming = 17,
8350 OpenWater = 18,
8351 All = 254,
8352}
8353
8354impl ActivitySubtype {
8355 pub fn as_str(&self) -> &'static str {
8357 match self {
8358 ActivitySubtype::Generic => "generic",
8359 ActivitySubtype::Treadmill => "treadmill",
8360 ActivitySubtype::Street => "street",
8361 ActivitySubtype::Trail => "trail",
8362 ActivitySubtype::Track => "track",
8363 ActivitySubtype::Spin => "spin",
8364 ActivitySubtype::IndoorCycling => "indoor_cycling",
8365 ActivitySubtype::Road => "road",
8366 ActivitySubtype::Mountain => "mountain",
8367 ActivitySubtype::Downhill => "downhill",
8368 ActivitySubtype::Recumbent => "recumbent",
8369 ActivitySubtype::Cyclocross => "cyclocross",
8370 ActivitySubtype::HandCycling => "hand_cycling",
8371 ActivitySubtype::TrackCycling => "track_cycling",
8372 ActivitySubtype::IndoorRowing => "indoor_rowing",
8373 ActivitySubtype::Elliptical => "elliptical",
8374 ActivitySubtype::StairClimbing => "stair_climbing",
8375 ActivitySubtype::LapSwimming => "lap_swimming",
8376 ActivitySubtype::OpenWater => "open_water",
8377 ActivitySubtype::All => "all",
8378 }
8379 }
8380
8381 pub fn from_value(value: u8) -> Option<Self> {
8383 match value {
8384 0 => Some(ActivitySubtype::Generic),
8385 1 => Some(ActivitySubtype::Treadmill),
8386 2 => Some(ActivitySubtype::Street),
8387 3 => Some(ActivitySubtype::Trail),
8388 4 => Some(ActivitySubtype::Track),
8389 5 => Some(ActivitySubtype::Spin),
8390 6 => Some(ActivitySubtype::IndoorCycling),
8391 7 => Some(ActivitySubtype::Road),
8392 8 => Some(ActivitySubtype::Mountain),
8393 9 => Some(ActivitySubtype::Downhill),
8394 10 => Some(ActivitySubtype::Recumbent),
8395 11 => Some(ActivitySubtype::Cyclocross),
8396 12 => Some(ActivitySubtype::HandCycling),
8397 13 => Some(ActivitySubtype::TrackCycling),
8398 14 => Some(ActivitySubtype::IndoorRowing),
8399 15 => Some(ActivitySubtype::Elliptical),
8400 16 => Some(ActivitySubtype::StairClimbing),
8401 17 => Some(ActivitySubtype::LapSwimming),
8402 18 => Some(ActivitySubtype::OpenWater),
8403 254 => Some(ActivitySubtype::All),
8404 _ => None,
8405 }
8406 }
8407
8408 pub fn from_str(name: &str) -> Option<Self> {
8410 match name {
8411 "generic" => Some(ActivitySubtype::Generic),
8412 "treadmill" => Some(ActivitySubtype::Treadmill),
8413 "street" => Some(ActivitySubtype::Street),
8414 "trail" => Some(ActivitySubtype::Trail),
8415 "track" => Some(ActivitySubtype::Track),
8416 "spin" => Some(ActivitySubtype::Spin),
8417 "indoor_cycling" => Some(ActivitySubtype::IndoorCycling),
8418 "road" => Some(ActivitySubtype::Road),
8419 "mountain" => Some(ActivitySubtype::Mountain),
8420 "downhill" => Some(ActivitySubtype::Downhill),
8421 "recumbent" => Some(ActivitySubtype::Recumbent),
8422 "cyclocross" => Some(ActivitySubtype::Cyclocross),
8423 "hand_cycling" => Some(ActivitySubtype::HandCycling),
8424 "track_cycling" => Some(ActivitySubtype::TrackCycling),
8425 "indoor_rowing" => Some(ActivitySubtype::IndoorRowing),
8426 "elliptical" => Some(ActivitySubtype::Elliptical),
8427 "stair_climbing" => Some(ActivitySubtype::StairClimbing),
8428 "lap_swimming" => Some(ActivitySubtype::LapSwimming),
8429 "open_water" => Some(ActivitySubtype::OpenWater),
8430 "all" => Some(ActivitySubtype::All),
8431 _ => None,
8432 }
8433 }
8434}
8435
8436#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8437#[repr(u8)]
8438#[non_exhaustive]
8439pub enum ActivityLevel {
8440 Low = 0,
8441 Medium = 1,
8442 High = 2,
8443}
8444
8445impl ActivityLevel {
8446 pub fn as_str(&self) -> &'static str {
8448 match self {
8449 ActivityLevel::Low => "low",
8450 ActivityLevel::Medium => "medium",
8451 ActivityLevel::High => "high",
8452 }
8453 }
8454
8455 pub fn from_value(value: u8) -> Option<Self> {
8457 match value {
8458 0 => Some(ActivityLevel::Low),
8459 1 => Some(ActivityLevel::Medium),
8460 2 => Some(ActivityLevel::High),
8461 _ => None,
8462 }
8463 }
8464
8465 pub fn from_str(name: &str) -> Option<Self> {
8467 match name {
8468 "low" => Some(ActivityLevel::Low),
8469 "medium" => Some(ActivityLevel::Medium),
8470 "high" => Some(ActivityLevel::High),
8471 _ => None,
8472 }
8473 }
8474}
8475
8476#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8477#[repr(u8)]
8478#[non_exhaustive]
8479pub enum Side {
8480 Right = 0,
8481 Left = 1,
8482}
8483
8484impl Side {
8485 pub fn as_str(&self) -> &'static str {
8487 match self {
8488 Side::Right => "right",
8489 Side::Left => "left",
8490 }
8491 }
8492
8493 pub fn from_value(value: u8) -> Option<Self> {
8495 match value {
8496 0 => Some(Side::Right),
8497 1 => Some(Side::Left),
8498 _ => None,
8499 }
8500 }
8501
8502 pub fn from_str(name: &str) -> Option<Self> {
8504 match name {
8505 "right" => Some(Side::Right),
8506 "left" => Some(Side::Left),
8507 _ => None,
8508 }
8509 }
8510}
8511
8512#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8513#[repr(u8)]
8514#[non_exhaustive]
8515pub enum LeftRightBalance {
8516 Mask = 127,
8517 Right = 128,
8518}
8519
8520impl LeftRightBalance {
8521 pub fn as_str(&self) -> &'static str {
8523 match self {
8524 LeftRightBalance::Mask => "mask",
8525 LeftRightBalance::Right => "right",
8526 }
8527 }
8528
8529 pub fn from_value(value: u8) -> Option<Self> {
8531 match value {
8532 127 => Some(LeftRightBalance::Mask),
8533 128 => Some(LeftRightBalance::Right),
8534 _ => None,
8535 }
8536 }
8537
8538 pub fn from_str(name: &str) -> Option<Self> {
8540 match name {
8541 "mask" => Some(LeftRightBalance::Mask),
8542 "right" => Some(LeftRightBalance::Right),
8543 _ => None,
8544 }
8545 }
8546}
8547
8548#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8549#[repr(u16)]
8550#[non_exhaustive]
8551pub enum LeftRightBalance100 {
8552 Mask = 16383,
8553 Right = 32768,
8554}
8555
8556impl LeftRightBalance100 {
8557 pub fn as_str(&self) -> &'static str {
8559 match self {
8560 LeftRightBalance100::Mask => "mask",
8561 LeftRightBalance100::Right => "right",
8562 }
8563 }
8564
8565 pub fn from_value(value: u16) -> Option<Self> {
8567 match value {
8568 16383 => Some(LeftRightBalance100::Mask),
8569 32768 => Some(LeftRightBalance100::Right),
8570 _ => None,
8571 }
8572 }
8573
8574 pub fn from_str(name: &str) -> Option<Self> {
8576 match name {
8577 "mask" => Some(LeftRightBalance100::Mask),
8578 "right" => Some(LeftRightBalance100::Right),
8579 _ => None,
8580 }
8581 }
8582}
8583
8584#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8585#[repr(u8)]
8586#[non_exhaustive]
8587pub enum LengthType {
8588 Idle = 0,
8589 Active = 1,
8590}
8591
8592impl LengthType {
8593 pub fn as_str(&self) -> &'static str {
8595 match self {
8596 LengthType::Idle => "idle",
8597 LengthType::Active => "active",
8598 }
8599 }
8600
8601 pub fn from_value(value: u8) -> Option<Self> {
8603 match value {
8604 0 => Some(LengthType::Idle),
8605 1 => Some(LengthType::Active),
8606 _ => None,
8607 }
8608 }
8609
8610 pub fn from_str(name: &str) -> Option<Self> {
8612 match name {
8613 "idle" => Some(LengthType::Idle),
8614 "active" => Some(LengthType::Active),
8615 _ => None,
8616 }
8617 }
8618}
8619
8620#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8621#[repr(u8)]
8622#[non_exhaustive]
8623pub enum DayOfWeek {
8624 Sunday = 0,
8625 Monday = 1,
8626 Tuesday = 2,
8627 Wednesday = 3,
8628 Thursday = 4,
8629 Friday = 5,
8630 Saturday = 6,
8631}
8632
8633impl DayOfWeek {
8634 pub fn as_str(&self) -> &'static str {
8636 match self {
8637 DayOfWeek::Sunday => "sunday",
8638 DayOfWeek::Monday => "monday",
8639 DayOfWeek::Tuesday => "tuesday",
8640 DayOfWeek::Wednesday => "wednesday",
8641 DayOfWeek::Thursday => "thursday",
8642 DayOfWeek::Friday => "friday",
8643 DayOfWeek::Saturday => "saturday",
8644 }
8645 }
8646
8647 pub fn from_value(value: u8) -> Option<Self> {
8649 match value {
8650 0 => Some(DayOfWeek::Sunday),
8651 1 => Some(DayOfWeek::Monday),
8652 2 => Some(DayOfWeek::Tuesday),
8653 3 => Some(DayOfWeek::Wednesday),
8654 4 => Some(DayOfWeek::Thursday),
8655 5 => Some(DayOfWeek::Friday),
8656 6 => Some(DayOfWeek::Saturday),
8657 _ => None,
8658 }
8659 }
8660
8661 pub fn from_str(name: &str) -> Option<Self> {
8663 match name {
8664 "sunday" => Some(DayOfWeek::Sunday),
8665 "monday" => Some(DayOfWeek::Monday),
8666 "tuesday" => Some(DayOfWeek::Tuesday),
8667 "wednesday" => Some(DayOfWeek::Wednesday),
8668 "thursday" => Some(DayOfWeek::Thursday),
8669 "friday" => Some(DayOfWeek::Friday),
8670 "saturday" => Some(DayOfWeek::Saturday),
8671 _ => None,
8672 }
8673 }
8674}
8675
8676#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8677#[repr(u32)]
8678#[non_exhaustive]
8679pub enum ConnectivityCapabilities {
8680 Bluetooth = 1,
8681 BluetoothLe = 2,
8682 Ant = 4,
8683 ActivityUpload = 8,
8684 CourseDownload = 16,
8685 WorkoutDownload = 32,
8686 LiveTrack = 64,
8687 WeatherConditions = 128,
8688 WeatherAlerts = 256,
8689 GpsEphemerisDownload = 512,
8690 ExplicitArchive = 1024,
8691 SetupIncomplete = 2048,
8692 ContinueSyncAfterSoftwareUpdate = 4096,
8693 ConnectIqAppDownload = 8192,
8694 GolfCourseDownload = 16384,
8695 DeviceInitiatesSync = 32768,
8696 ConnectIqWatchAppDownload = 65536,
8697 ConnectIqWidgetDownload = 131072,
8698 ConnectIqWatchFaceDownload = 262144,
8699 ConnectIqDataFieldDownload = 524288,
8700 ConnectIqAppManagment = 1048576,
8701 SwingSensor = 2097152,
8702 SwingSensorRemote = 4194304,
8703 IncidentDetection = 8388608,
8704 AudioPrompts = 16777216,
8705 WifiVerification = 33554432,
8706 TrueUp = 67108864,
8707 FindMyWatch = 134217728,
8708 RemoteManualSync = 268435456,
8709 LiveTrackAutoStart = 536870912,
8710 LiveTrackMessaging = 1073741824,
8711 InstantInput = 2147483648,
8712}
8713
8714impl ConnectivityCapabilities {
8715 pub fn as_str(&self) -> &'static str {
8717 match self {
8718 ConnectivityCapabilities::Bluetooth => "bluetooth",
8719 ConnectivityCapabilities::BluetoothLe => "bluetooth_le",
8720 ConnectivityCapabilities::Ant => "ant",
8721 ConnectivityCapabilities::ActivityUpload => "activity_upload",
8722 ConnectivityCapabilities::CourseDownload => "course_download",
8723 ConnectivityCapabilities::WorkoutDownload => "workout_download",
8724 ConnectivityCapabilities::LiveTrack => "live_track",
8725 ConnectivityCapabilities::WeatherConditions => "weather_conditions",
8726 ConnectivityCapabilities::WeatherAlerts => "weather_alerts",
8727 ConnectivityCapabilities::GpsEphemerisDownload => "gps_ephemeris_download",
8728 ConnectivityCapabilities::ExplicitArchive => "explicit_archive",
8729 ConnectivityCapabilities::SetupIncomplete => "setup_incomplete",
8730 ConnectivityCapabilities::ContinueSyncAfterSoftwareUpdate => {
8731 "continue_sync_after_software_update"
8732 }
8733 ConnectivityCapabilities::ConnectIqAppDownload => "connect_iq_app_download",
8734 ConnectivityCapabilities::GolfCourseDownload => "golf_course_download",
8735 ConnectivityCapabilities::DeviceInitiatesSync => "device_initiates_sync",
8736 ConnectivityCapabilities::ConnectIqWatchAppDownload => "connect_iq_watch_app_download",
8737 ConnectivityCapabilities::ConnectIqWidgetDownload => "connect_iq_widget_download",
8738 ConnectivityCapabilities::ConnectIqWatchFaceDownload => {
8739 "connect_iq_watch_face_download"
8740 }
8741 ConnectivityCapabilities::ConnectIqDataFieldDownload => {
8742 "connect_iq_data_field_download"
8743 }
8744 ConnectivityCapabilities::ConnectIqAppManagment => "connect_iq_app_managment",
8745 ConnectivityCapabilities::SwingSensor => "swing_sensor",
8746 ConnectivityCapabilities::SwingSensorRemote => "swing_sensor_remote",
8747 ConnectivityCapabilities::IncidentDetection => "incident_detection",
8748 ConnectivityCapabilities::AudioPrompts => "audio_prompts",
8749 ConnectivityCapabilities::WifiVerification => "wifi_verification",
8750 ConnectivityCapabilities::TrueUp => "true_up",
8751 ConnectivityCapabilities::FindMyWatch => "find_my_watch",
8752 ConnectivityCapabilities::RemoteManualSync => "remote_manual_sync",
8753 ConnectivityCapabilities::LiveTrackAutoStart => "live_track_auto_start",
8754 ConnectivityCapabilities::LiveTrackMessaging => "live_track_messaging",
8755 ConnectivityCapabilities::InstantInput => "instant_input",
8756 }
8757 }
8758
8759 pub fn from_value(value: u32) -> Option<Self> {
8761 match value {
8762 1 => Some(ConnectivityCapabilities::Bluetooth),
8763 2 => Some(ConnectivityCapabilities::BluetoothLe),
8764 4 => Some(ConnectivityCapabilities::Ant),
8765 8 => Some(ConnectivityCapabilities::ActivityUpload),
8766 16 => Some(ConnectivityCapabilities::CourseDownload),
8767 32 => Some(ConnectivityCapabilities::WorkoutDownload),
8768 64 => Some(ConnectivityCapabilities::LiveTrack),
8769 128 => Some(ConnectivityCapabilities::WeatherConditions),
8770 256 => Some(ConnectivityCapabilities::WeatherAlerts),
8771 512 => Some(ConnectivityCapabilities::GpsEphemerisDownload),
8772 1024 => Some(ConnectivityCapabilities::ExplicitArchive),
8773 2048 => Some(ConnectivityCapabilities::SetupIncomplete),
8774 4096 => Some(ConnectivityCapabilities::ContinueSyncAfterSoftwareUpdate),
8775 8192 => Some(ConnectivityCapabilities::ConnectIqAppDownload),
8776 16384 => Some(ConnectivityCapabilities::GolfCourseDownload),
8777 32768 => Some(ConnectivityCapabilities::DeviceInitiatesSync),
8778 65536 => Some(ConnectivityCapabilities::ConnectIqWatchAppDownload),
8779 131072 => Some(ConnectivityCapabilities::ConnectIqWidgetDownload),
8780 262144 => Some(ConnectivityCapabilities::ConnectIqWatchFaceDownload),
8781 524288 => Some(ConnectivityCapabilities::ConnectIqDataFieldDownload),
8782 1048576 => Some(ConnectivityCapabilities::ConnectIqAppManagment),
8783 2097152 => Some(ConnectivityCapabilities::SwingSensor),
8784 4194304 => Some(ConnectivityCapabilities::SwingSensorRemote),
8785 8388608 => Some(ConnectivityCapabilities::IncidentDetection),
8786 16777216 => Some(ConnectivityCapabilities::AudioPrompts),
8787 33554432 => Some(ConnectivityCapabilities::WifiVerification),
8788 67108864 => Some(ConnectivityCapabilities::TrueUp),
8789 134217728 => Some(ConnectivityCapabilities::FindMyWatch),
8790 268435456 => Some(ConnectivityCapabilities::RemoteManualSync),
8791 536870912 => Some(ConnectivityCapabilities::LiveTrackAutoStart),
8792 1073741824 => Some(ConnectivityCapabilities::LiveTrackMessaging),
8793 2147483648 => Some(ConnectivityCapabilities::InstantInput),
8794 _ => None,
8795 }
8796 }
8797
8798 pub fn from_str(name: &str) -> Option<Self> {
8800 match name {
8801 "bluetooth" => Some(ConnectivityCapabilities::Bluetooth),
8802 "bluetooth_le" => Some(ConnectivityCapabilities::BluetoothLe),
8803 "ant" => Some(ConnectivityCapabilities::Ant),
8804 "activity_upload" => Some(ConnectivityCapabilities::ActivityUpload),
8805 "course_download" => Some(ConnectivityCapabilities::CourseDownload),
8806 "workout_download" => Some(ConnectivityCapabilities::WorkoutDownload),
8807 "live_track" => Some(ConnectivityCapabilities::LiveTrack),
8808 "weather_conditions" => Some(ConnectivityCapabilities::WeatherConditions),
8809 "weather_alerts" => Some(ConnectivityCapabilities::WeatherAlerts),
8810 "gps_ephemeris_download" => Some(ConnectivityCapabilities::GpsEphemerisDownload),
8811 "explicit_archive" => Some(ConnectivityCapabilities::ExplicitArchive),
8812 "setup_incomplete" => Some(ConnectivityCapabilities::SetupIncomplete),
8813 "continue_sync_after_software_update" => {
8814 Some(ConnectivityCapabilities::ContinueSyncAfterSoftwareUpdate)
8815 }
8816 "connect_iq_app_download" => Some(ConnectivityCapabilities::ConnectIqAppDownload),
8817 "golf_course_download" => Some(ConnectivityCapabilities::GolfCourseDownload),
8818 "device_initiates_sync" => Some(ConnectivityCapabilities::DeviceInitiatesSync),
8819 "connect_iq_watch_app_download" => {
8820 Some(ConnectivityCapabilities::ConnectIqWatchAppDownload)
8821 }
8822 "connect_iq_widget_download" => Some(ConnectivityCapabilities::ConnectIqWidgetDownload),
8823 "connect_iq_watch_face_download" => {
8824 Some(ConnectivityCapabilities::ConnectIqWatchFaceDownload)
8825 }
8826 "connect_iq_data_field_download" => {
8827 Some(ConnectivityCapabilities::ConnectIqDataFieldDownload)
8828 }
8829 "connect_iq_app_managment" => Some(ConnectivityCapabilities::ConnectIqAppManagment),
8830 "swing_sensor" => Some(ConnectivityCapabilities::SwingSensor),
8831 "swing_sensor_remote" => Some(ConnectivityCapabilities::SwingSensorRemote),
8832 "incident_detection" => Some(ConnectivityCapabilities::IncidentDetection),
8833 "audio_prompts" => Some(ConnectivityCapabilities::AudioPrompts),
8834 "wifi_verification" => Some(ConnectivityCapabilities::WifiVerification),
8835 "true_up" => Some(ConnectivityCapabilities::TrueUp),
8836 "find_my_watch" => Some(ConnectivityCapabilities::FindMyWatch),
8837 "remote_manual_sync" => Some(ConnectivityCapabilities::RemoteManualSync),
8838 "live_track_auto_start" => Some(ConnectivityCapabilities::LiveTrackAutoStart),
8839 "live_track_messaging" => Some(ConnectivityCapabilities::LiveTrackMessaging),
8840 "instant_input" => Some(ConnectivityCapabilities::InstantInput),
8841 _ => None,
8842 }
8843 }
8844}
8845
8846#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8847#[repr(u8)]
8848#[non_exhaustive]
8849pub enum WeatherReport {
8850 Current = 0,
8851 Forecast = 1,
8852 DailyForecast = 2,
8853}
8854
8855impl WeatherReport {
8856 pub fn as_str(&self) -> &'static str {
8858 match self {
8859 WeatherReport::Current => "current",
8860 WeatherReport::Forecast => "hourly_forecast",
8861 WeatherReport::DailyForecast => "daily_forecast",
8862 }
8863 }
8864
8865 pub fn from_value(value: u8) -> Option<Self> {
8867 match value {
8868 0 => Some(WeatherReport::Current),
8869 1 => Some(WeatherReport::Forecast),
8870 2 => Some(WeatherReport::DailyForecast),
8871 _ => None,
8872 }
8873 }
8874
8875 pub fn from_str(name: &str) -> Option<Self> {
8877 match name {
8878 "current" => Some(WeatherReport::Current),
8879 "hourly_forecast" => Some(WeatherReport::Forecast),
8880 "daily_forecast" => Some(WeatherReport::DailyForecast),
8881 _ => None,
8882 }
8883 }
8884}
8885
8886#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8887#[repr(u8)]
8888#[non_exhaustive]
8889pub enum WeatherStatus {
8890 Clear = 0,
8891 PartlyCloudy = 1,
8892 MostlyCloudy = 2,
8893 Rain = 3,
8894 Snow = 4,
8895 Windy = 5,
8896 Thunderstorms = 6,
8897 WintryMix = 7,
8898 Fog = 8,
8899 Hazy = 11,
8900 Hail = 12,
8901 ScatteredShowers = 13,
8902 ScatteredThunderstorms = 14,
8903 UnknownPrecipitation = 15,
8904 LightRain = 16,
8905 HeavyRain = 17,
8906 LightSnow = 18,
8907 HeavySnow = 19,
8908 LightRainSnow = 20,
8909 HeavyRainSnow = 21,
8910 Cloudy = 22,
8911}
8912
8913impl WeatherStatus {
8914 pub fn as_str(&self) -> &'static str {
8916 match self {
8917 WeatherStatus::Clear => "clear",
8918 WeatherStatus::PartlyCloudy => "partly_cloudy",
8919 WeatherStatus::MostlyCloudy => "mostly_cloudy",
8920 WeatherStatus::Rain => "rain",
8921 WeatherStatus::Snow => "snow",
8922 WeatherStatus::Windy => "windy",
8923 WeatherStatus::Thunderstorms => "thunderstorms",
8924 WeatherStatus::WintryMix => "wintry_mix",
8925 WeatherStatus::Fog => "fog",
8926 WeatherStatus::Hazy => "hazy",
8927 WeatherStatus::Hail => "hail",
8928 WeatherStatus::ScatteredShowers => "scattered_showers",
8929 WeatherStatus::ScatteredThunderstorms => "scattered_thunderstorms",
8930 WeatherStatus::UnknownPrecipitation => "unknown_precipitation",
8931 WeatherStatus::LightRain => "light_rain",
8932 WeatherStatus::HeavyRain => "heavy_rain",
8933 WeatherStatus::LightSnow => "light_snow",
8934 WeatherStatus::HeavySnow => "heavy_snow",
8935 WeatherStatus::LightRainSnow => "light_rain_snow",
8936 WeatherStatus::HeavyRainSnow => "heavy_rain_snow",
8937 WeatherStatus::Cloudy => "cloudy",
8938 }
8939 }
8940
8941 pub fn from_value(value: u8) -> Option<Self> {
8943 match value {
8944 0 => Some(WeatherStatus::Clear),
8945 1 => Some(WeatherStatus::PartlyCloudy),
8946 2 => Some(WeatherStatus::MostlyCloudy),
8947 3 => Some(WeatherStatus::Rain),
8948 4 => Some(WeatherStatus::Snow),
8949 5 => Some(WeatherStatus::Windy),
8950 6 => Some(WeatherStatus::Thunderstorms),
8951 7 => Some(WeatherStatus::WintryMix),
8952 8 => Some(WeatherStatus::Fog),
8953 11 => Some(WeatherStatus::Hazy),
8954 12 => Some(WeatherStatus::Hail),
8955 13 => Some(WeatherStatus::ScatteredShowers),
8956 14 => Some(WeatherStatus::ScatteredThunderstorms),
8957 15 => Some(WeatherStatus::UnknownPrecipitation),
8958 16 => Some(WeatherStatus::LightRain),
8959 17 => Some(WeatherStatus::HeavyRain),
8960 18 => Some(WeatherStatus::LightSnow),
8961 19 => Some(WeatherStatus::HeavySnow),
8962 20 => Some(WeatherStatus::LightRainSnow),
8963 21 => Some(WeatherStatus::HeavyRainSnow),
8964 22 => Some(WeatherStatus::Cloudy),
8965 _ => None,
8966 }
8967 }
8968
8969 pub fn from_str(name: &str) -> Option<Self> {
8971 match name {
8972 "clear" => Some(WeatherStatus::Clear),
8973 "partly_cloudy" => Some(WeatherStatus::PartlyCloudy),
8974 "mostly_cloudy" => Some(WeatherStatus::MostlyCloudy),
8975 "rain" => Some(WeatherStatus::Rain),
8976 "snow" => Some(WeatherStatus::Snow),
8977 "windy" => Some(WeatherStatus::Windy),
8978 "thunderstorms" => Some(WeatherStatus::Thunderstorms),
8979 "wintry_mix" => Some(WeatherStatus::WintryMix),
8980 "fog" => Some(WeatherStatus::Fog),
8981 "hazy" => Some(WeatherStatus::Hazy),
8982 "hail" => Some(WeatherStatus::Hail),
8983 "scattered_showers" => Some(WeatherStatus::ScatteredShowers),
8984 "scattered_thunderstorms" => Some(WeatherStatus::ScatteredThunderstorms),
8985 "unknown_precipitation" => Some(WeatherStatus::UnknownPrecipitation),
8986 "light_rain" => Some(WeatherStatus::LightRain),
8987 "heavy_rain" => Some(WeatherStatus::HeavyRain),
8988 "light_snow" => Some(WeatherStatus::LightSnow),
8989 "heavy_snow" => Some(WeatherStatus::HeavySnow),
8990 "light_rain_snow" => Some(WeatherStatus::LightRainSnow),
8991 "heavy_rain_snow" => Some(WeatherStatus::HeavyRainSnow),
8992 "cloudy" => Some(WeatherStatus::Cloudy),
8993 _ => None,
8994 }
8995 }
8996}
8997
8998#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8999#[repr(u8)]
9000#[non_exhaustive]
9001pub enum WeatherSeverity {
9002 Unknown = 0,
9003 Warning = 1,
9004 Watch = 2,
9005 Advisory = 3,
9006 Statement = 4,
9007}
9008
9009impl WeatherSeverity {
9010 pub fn as_str(&self) -> &'static str {
9012 match self {
9013 WeatherSeverity::Unknown => "unknown",
9014 WeatherSeverity::Warning => "warning",
9015 WeatherSeverity::Watch => "watch",
9016 WeatherSeverity::Advisory => "advisory",
9017 WeatherSeverity::Statement => "statement",
9018 }
9019 }
9020
9021 pub fn from_value(value: u8) -> Option<Self> {
9023 match value {
9024 0 => Some(WeatherSeverity::Unknown),
9025 1 => Some(WeatherSeverity::Warning),
9026 2 => Some(WeatherSeverity::Watch),
9027 3 => Some(WeatherSeverity::Advisory),
9028 4 => Some(WeatherSeverity::Statement),
9029 _ => None,
9030 }
9031 }
9032
9033 pub fn from_str(name: &str) -> Option<Self> {
9035 match name {
9036 "unknown" => Some(WeatherSeverity::Unknown),
9037 "warning" => Some(WeatherSeverity::Warning),
9038 "watch" => Some(WeatherSeverity::Watch),
9039 "advisory" => Some(WeatherSeverity::Advisory),
9040 "statement" => Some(WeatherSeverity::Statement),
9041 _ => None,
9042 }
9043 }
9044}
9045
9046#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9047#[repr(u8)]
9048#[non_exhaustive]
9049pub enum WeatherSevereType {
9050 Unspecified = 0,
9051 Tornado = 1,
9052 Tsunami = 2,
9053 Hurricane = 3,
9054 ExtremeWind = 4,
9055 Typhoon = 5,
9056 InlandHurricane = 6,
9057 HurricaneForceWind = 7,
9058 Waterspout = 8,
9059 SevereThunderstorm = 9,
9060 WreckhouseWinds = 10,
9061 LesSuetesWind = 11,
9062 Avalanche = 12,
9063 FlashFlood = 13,
9064 TropicalStorm = 14,
9065 InlandTropicalStorm = 15,
9066 Blizzard = 16,
9067 IceStorm = 17,
9068 FreezingRain = 18,
9069 DebrisFlow = 19,
9070 FlashFreeze = 20,
9071 DustStorm = 21,
9072 HighWind = 22,
9073 WinterStorm = 23,
9074 HeavyFreezingSpray = 24,
9075 ExtremeCold = 25,
9076 WindChill = 26,
9077 ColdWave = 27,
9078 HeavySnowAlert = 28,
9079 LakeEffectBlowingSnow = 29,
9080 SnowSquall = 30,
9081 LakeEffectSnow = 31,
9082 WinterWeather = 32,
9083 Sleet = 33,
9084 Snowfall = 34,
9085 SnowAndBlowingSnow = 35,
9086 BlowingSnow = 36,
9087 SnowAlert = 37,
9088 ArcticOutflow = 38,
9089 FreezingDrizzle = 39,
9090 Storm = 40,
9091 StormSurge = 41,
9092 Rainfall = 42,
9093 ArealFlood = 43,
9094 CoastalFlood = 44,
9095 LakeshoreFlood = 45,
9096 ExcessiveHeat = 46,
9097 Heat = 47,
9098 Weather = 48,
9099 HighHeatAndHumidity = 49,
9100 HumidexAndHealth = 50,
9101 Humidex = 51,
9102 Gale = 52,
9103 FreezingSpray = 53,
9104 SpecialMarine = 54,
9105 Squall = 55,
9106 StrongWind = 56,
9107 LakeWind = 57,
9108 MarineWeather = 58,
9109 Wind = 59,
9110 SmallCraftHazardousSeas = 60,
9111 HazardousSeas = 61,
9112 SmallCraft = 62,
9113 SmallCraftWinds = 63,
9114 SmallCraftRoughBar = 64,
9115 HighWaterLevel = 65,
9116 Ashfall = 66,
9117 FreezingFog = 67,
9118 DenseFog = 68,
9119 DenseSmoke = 69,
9120 BlowingDust = 70,
9121 HardFreeze = 71,
9122 Freeze = 72,
9123 Frost = 73,
9124 FireWeather = 74,
9125 Flood = 75,
9126 RipTide = 76,
9127 HighSurf = 77,
9128 Smog = 78,
9129 AirQuality = 79,
9130 BriskWind = 80,
9131 AirStagnation = 81,
9132 LowWater = 82,
9133 Hydrological = 83,
9134 SpecialWeather = 84,
9135}
9136
9137impl WeatherSevereType {
9138 pub fn as_str(&self) -> &'static str {
9140 match self {
9141 WeatherSevereType::Unspecified => "unspecified",
9142 WeatherSevereType::Tornado => "tornado",
9143 WeatherSevereType::Tsunami => "tsunami",
9144 WeatherSevereType::Hurricane => "hurricane",
9145 WeatherSevereType::ExtremeWind => "extreme_wind",
9146 WeatherSevereType::Typhoon => "typhoon",
9147 WeatherSevereType::InlandHurricane => "inland_hurricane",
9148 WeatherSevereType::HurricaneForceWind => "hurricane_force_wind",
9149 WeatherSevereType::Waterspout => "waterspout",
9150 WeatherSevereType::SevereThunderstorm => "severe_thunderstorm",
9151 WeatherSevereType::WreckhouseWinds => "wreckhouse_winds",
9152 WeatherSevereType::LesSuetesWind => "les_suetes_wind",
9153 WeatherSevereType::Avalanche => "avalanche",
9154 WeatherSevereType::FlashFlood => "flash_flood",
9155 WeatherSevereType::TropicalStorm => "tropical_storm",
9156 WeatherSevereType::InlandTropicalStorm => "inland_tropical_storm",
9157 WeatherSevereType::Blizzard => "blizzard",
9158 WeatherSevereType::IceStorm => "ice_storm",
9159 WeatherSevereType::FreezingRain => "freezing_rain",
9160 WeatherSevereType::DebrisFlow => "debris_flow",
9161 WeatherSevereType::FlashFreeze => "flash_freeze",
9162 WeatherSevereType::DustStorm => "dust_storm",
9163 WeatherSevereType::HighWind => "high_wind",
9164 WeatherSevereType::WinterStorm => "winter_storm",
9165 WeatherSevereType::HeavyFreezingSpray => "heavy_freezing_spray",
9166 WeatherSevereType::ExtremeCold => "extreme_cold",
9167 WeatherSevereType::WindChill => "wind_chill",
9168 WeatherSevereType::ColdWave => "cold_wave",
9169 WeatherSevereType::HeavySnowAlert => "heavy_snow_alert",
9170 WeatherSevereType::LakeEffectBlowingSnow => "lake_effect_blowing_snow",
9171 WeatherSevereType::SnowSquall => "snow_squall",
9172 WeatherSevereType::LakeEffectSnow => "lake_effect_snow",
9173 WeatherSevereType::WinterWeather => "winter_weather",
9174 WeatherSevereType::Sleet => "sleet",
9175 WeatherSevereType::Snowfall => "snowfall",
9176 WeatherSevereType::SnowAndBlowingSnow => "snow_and_blowing_snow",
9177 WeatherSevereType::BlowingSnow => "blowing_snow",
9178 WeatherSevereType::SnowAlert => "snow_alert",
9179 WeatherSevereType::ArcticOutflow => "arctic_outflow",
9180 WeatherSevereType::FreezingDrizzle => "freezing_drizzle",
9181 WeatherSevereType::Storm => "storm",
9182 WeatherSevereType::StormSurge => "storm_surge",
9183 WeatherSevereType::Rainfall => "rainfall",
9184 WeatherSevereType::ArealFlood => "areal_flood",
9185 WeatherSevereType::CoastalFlood => "coastal_flood",
9186 WeatherSevereType::LakeshoreFlood => "lakeshore_flood",
9187 WeatherSevereType::ExcessiveHeat => "excessive_heat",
9188 WeatherSevereType::Heat => "heat",
9189 WeatherSevereType::Weather => "weather",
9190 WeatherSevereType::HighHeatAndHumidity => "high_heat_and_humidity",
9191 WeatherSevereType::HumidexAndHealth => "humidex_and_health",
9192 WeatherSevereType::Humidex => "humidex",
9193 WeatherSevereType::Gale => "gale",
9194 WeatherSevereType::FreezingSpray => "freezing_spray",
9195 WeatherSevereType::SpecialMarine => "special_marine",
9196 WeatherSevereType::Squall => "squall",
9197 WeatherSevereType::StrongWind => "strong_wind",
9198 WeatherSevereType::LakeWind => "lake_wind",
9199 WeatherSevereType::MarineWeather => "marine_weather",
9200 WeatherSevereType::Wind => "wind",
9201 WeatherSevereType::SmallCraftHazardousSeas => "small_craft_hazardous_seas",
9202 WeatherSevereType::HazardousSeas => "hazardous_seas",
9203 WeatherSevereType::SmallCraft => "small_craft",
9204 WeatherSevereType::SmallCraftWinds => "small_craft_winds",
9205 WeatherSevereType::SmallCraftRoughBar => "small_craft_rough_bar",
9206 WeatherSevereType::HighWaterLevel => "high_water_level",
9207 WeatherSevereType::Ashfall => "ashfall",
9208 WeatherSevereType::FreezingFog => "freezing_fog",
9209 WeatherSevereType::DenseFog => "dense_fog",
9210 WeatherSevereType::DenseSmoke => "dense_smoke",
9211 WeatherSevereType::BlowingDust => "blowing_dust",
9212 WeatherSevereType::HardFreeze => "hard_freeze",
9213 WeatherSevereType::Freeze => "freeze",
9214 WeatherSevereType::Frost => "frost",
9215 WeatherSevereType::FireWeather => "fire_weather",
9216 WeatherSevereType::Flood => "flood",
9217 WeatherSevereType::RipTide => "rip_tide",
9218 WeatherSevereType::HighSurf => "high_surf",
9219 WeatherSevereType::Smog => "smog",
9220 WeatherSevereType::AirQuality => "air_quality",
9221 WeatherSevereType::BriskWind => "brisk_wind",
9222 WeatherSevereType::AirStagnation => "air_stagnation",
9223 WeatherSevereType::LowWater => "low_water",
9224 WeatherSevereType::Hydrological => "hydrological",
9225 WeatherSevereType::SpecialWeather => "special_weather",
9226 }
9227 }
9228
9229 pub fn from_value(value: u8) -> Option<Self> {
9231 match value {
9232 0 => Some(WeatherSevereType::Unspecified),
9233 1 => Some(WeatherSevereType::Tornado),
9234 2 => Some(WeatherSevereType::Tsunami),
9235 3 => Some(WeatherSevereType::Hurricane),
9236 4 => Some(WeatherSevereType::ExtremeWind),
9237 5 => Some(WeatherSevereType::Typhoon),
9238 6 => Some(WeatherSevereType::InlandHurricane),
9239 7 => Some(WeatherSevereType::HurricaneForceWind),
9240 8 => Some(WeatherSevereType::Waterspout),
9241 9 => Some(WeatherSevereType::SevereThunderstorm),
9242 10 => Some(WeatherSevereType::WreckhouseWinds),
9243 11 => Some(WeatherSevereType::LesSuetesWind),
9244 12 => Some(WeatherSevereType::Avalanche),
9245 13 => Some(WeatherSevereType::FlashFlood),
9246 14 => Some(WeatherSevereType::TropicalStorm),
9247 15 => Some(WeatherSevereType::InlandTropicalStorm),
9248 16 => Some(WeatherSevereType::Blizzard),
9249 17 => Some(WeatherSevereType::IceStorm),
9250 18 => Some(WeatherSevereType::FreezingRain),
9251 19 => Some(WeatherSevereType::DebrisFlow),
9252 20 => Some(WeatherSevereType::FlashFreeze),
9253 21 => Some(WeatherSevereType::DustStorm),
9254 22 => Some(WeatherSevereType::HighWind),
9255 23 => Some(WeatherSevereType::WinterStorm),
9256 24 => Some(WeatherSevereType::HeavyFreezingSpray),
9257 25 => Some(WeatherSevereType::ExtremeCold),
9258 26 => Some(WeatherSevereType::WindChill),
9259 27 => Some(WeatherSevereType::ColdWave),
9260 28 => Some(WeatherSevereType::HeavySnowAlert),
9261 29 => Some(WeatherSevereType::LakeEffectBlowingSnow),
9262 30 => Some(WeatherSevereType::SnowSquall),
9263 31 => Some(WeatherSevereType::LakeEffectSnow),
9264 32 => Some(WeatherSevereType::WinterWeather),
9265 33 => Some(WeatherSevereType::Sleet),
9266 34 => Some(WeatherSevereType::Snowfall),
9267 35 => Some(WeatherSevereType::SnowAndBlowingSnow),
9268 36 => Some(WeatherSevereType::BlowingSnow),
9269 37 => Some(WeatherSevereType::SnowAlert),
9270 38 => Some(WeatherSevereType::ArcticOutflow),
9271 39 => Some(WeatherSevereType::FreezingDrizzle),
9272 40 => Some(WeatherSevereType::Storm),
9273 41 => Some(WeatherSevereType::StormSurge),
9274 42 => Some(WeatherSevereType::Rainfall),
9275 43 => Some(WeatherSevereType::ArealFlood),
9276 44 => Some(WeatherSevereType::CoastalFlood),
9277 45 => Some(WeatherSevereType::LakeshoreFlood),
9278 46 => Some(WeatherSevereType::ExcessiveHeat),
9279 47 => Some(WeatherSevereType::Heat),
9280 48 => Some(WeatherSevereType::Weather),
9281 49 => Some(WeatherSevereType::HighHeatAndHumidity),
9282 50 => Some(WeatherSevereType::HumidexAndHealth),
9283 51 => Some(WeatherSevereType::Humidex),
9284 52 => Some(WeatherSevereType::Gale),
9285 53 => Some(WeatherSevereType::FreezingSpray),
9286 54 => Some(WeatherSevereType::SpecialMarine),
9287 55 => Some(WeatherSevereType::Squall),
9288 56 => Some(WeatherSevereType::StrongWind),
9289 57 => Some(WeatherSevereType::LakeWind),
9290 58 => Some(WeatherSevereType::MarineWeather),
9291 59 => Some(WeatherSevereType::Wind),
9292 60 => Some(WeatherSevereType::SmallCraftHazardousSeas),
9293 61 => Some(WeatherSevereType::HazardousSeas),
9294 62 => Some(WeatherSevereType::SmallCraft),
9295 63 => Some(WeatherSevereType::SmallCraftWinds),
9296 64 => Some(WeatherSevereType::SmallCraftRoughBar),
9297 65 => Some(WeatherSevereType::HighWaterLevel),
9298 66 => Some(WeatherSevereType::Ashfall),
9299 67 => Some(WeatherSevereType::FreezingFog),
9300 68 => Some(WeatherSevereType::DenseFog),
9301 69 => Some(WeatherSevereType::DenseSmoke),
9302 70 => Some(WeatherSevereType::BlowingDust),
9303 71 => Some(WeatherSevereType::HardFreeze),
9304 72 => Some(WeatherSevereType::Freeze),
9305 73 => Some(WeatherSevereType::Frost),
9306 74 => Some(WeatherSevereType::FireWeather),
9307 75 => Some(WeatherSevereType::Flood),
9308 76 => Some(WeatherSevereType::RipTide),
9309 77 => Some(WeatherSevereType::HighSurf),
9310 78 => Some(WeatherSevereType::Smog),
9311 79 => Some(WeatherSevereType::AirQuality),
9312 80 => Some(WeatherSevereType::BriskWind),
9313 81 => Some(WeatherSevereType::AirStagnation),
9314 82 => Some(WeatherSevereType::LowWater),
9315 83 => Some(WeatherSevereType::Hydrological),
9316 84 => Some(WeatherSevereType::SpecialWeather),
9317 _ => None,
9318 }
9319 }
9320
9321 pub fn from_str(name: &str) -> Option<Self> {
9323 match name {
9324 "unspecified" => Some(WeatherSevereType::Unspecified),
9325 "tornado" => Some(WeatherSevereType::Tornado),
9326 "tsunami" => Some(WeatherSevereType::Tsunami),
9327 "hurricane" => Some(WeatherSevereType::Hurricane),
9328 "extreme_wind" => Some(WeatherSevereType::ExtremeWind),
9329 "typhoon" => Some(WeatherSevereType::Typhoon),
9330 "inland_hurricane" => Some(WeatherSevereType::InlandHurricane),
9331 "hurricane_force_wind" => Some(WeatherSevereType::HurricaneForceWind),
9332 "waterspout" => Some(WeatherSevereType::Waterspout),
9333 "severe_thunderstorm" => Some(WeatherSevereType::SevereThunderstorm),
9334 "wreckhouse_winds" => Some(WeatherSevereType::WreckhouseWinds),
9335 "les_suetes_wind" => Some(WeatherSevereType::LesSuetesWind),
9336 "avalanche" => Some(WeatherSevereType::Avalanche),
9337 "flash_flood" => Some(WeatherSevereType::FlashFlood),
9338 "tropical_storm" => Some(WeatherSevereType::TropicalStorm),
9339 "inland_tropical_storm" => Some(WeatherSevereType::InlandTropicalStorm),
9340 "blizzard" => Some(WeatherSevereType::Blizzard),
9341 "ice_storm" => Some(WeatherSevereType::IceStorm),
9342 "freezing_rain" => Some(WeatherSevereType::FreezingRain),
9343 "debris_flow" => Some(WeatherSevereType::DebrisFlow),
9344 "flash_freeze" => Some(WeatherSevereType::FlashFreeze),
9345 "dust_storm" => Some(WeatherSevereType::DustStorm),
9346 "high_wind" => Some(WeatherSevereType::HighWind),
9347 "winter_storm" => Some(WeatherSevereType::WinterStorm),
9348 "heavy_freezing_spray" => Some(WeatherSevereType::HeavyFreezingSpray),
9349 "extreme_cold" => Some(WeatherSevereType::ExtremeCold),
9350 "wind_chill" => Some(WeatherSevereType::WindChill),
9351 "cold_wave" => Some(WeatherSevereType::ColdWave),
9352 "heavy_snow_alert" => Some(WeatherSevereType::HeavySnowAlert),
9353 "lake_effect_blowing_snow" => Some(WeatherSevereType::LakeEffectBlowingSnow),
9354 "snow_squall" => Some(WeatherSevereType::SnowSquall),
9355 "lake_effect_snow" => Some(WeatherSevereType::LakeEffectSnow),
9356 "winter_weather" => Some(WeatherSevereType::WinterWeather),
9357 "sleet" => Some(WeatherSevereType::Sleet),
9358 "snowfall" => Some(WeatherSevereType::Snowfall),
9359 "snow_and_blowing_snow" => Some(WeatherSevereType::SnowAndBlowingSnow),
9360 "blowing_snow" => Some(WeatherSevereType::BlowingSnow),
9361 "snow_alert" => Some(WeatherSevereType::SnowAlert),
9362 "arctic_outflow" => Some(WeatherSevereType::ArcticOutflow),
9363 "freezing_drizzle" => Some(WeatherSevereType::FreezingDrizzle),
9364 "storm" => Some(WeatherSevereType::Storm),
9365 "storm_surge" => Some(WeatherSevereType::StormSurge),
9366 "rainfall" => Some(WeatherSevereType::Rainfall),
9367 "areal_flood" => Some(WeatherSevereType::ArealFlood),
9368 "coastal_flood" => Some(WeatherSevereType::CoastalFlood),
9369 "lakeshore_flood" => Some(WeatherSevereType::LakeshoreFlood),
9370 "excessive_heat" => Some(WeatherSevereType::ExcessiveHeat),
9371 "heat" => Some(WeatherSevereType::Heat),
9372 "weather" => Some(WeatherSevereType::Weather),
9373 "high_heat_and_humidity" => Some(WeatherSevereType::HighHeatAndHumidity),
9374 "humidex_and_health" => Some(WeatherSevereType::HumidexAndHealth),
9375 "humidex" => Some(WeatherSevereType::Humidex),
9376 "gale" => Some(WeatherSevereType::Gale),
9377 "freezing_spray" => Some(WeatherSevereType::FreezingSpray),
9378 "special_marine" => Some(WeatherSevereType::SpecialMarine),
9379 "squall" => Some(WeatherSevereType::Squall),
9380 "strong_wind" => Some(WeatherSevereType::StrongWind),
9381 "lake_wind" => Some(WeatherSevereType::LakeWind),
9382 "marine_weather" => Some(WeatherSevereType::MarineWeather),
9383 "wind" => Some(WeatherSevereType::Wind),
9384 "small_craft_hazardous_seas" => Some(WeatherSevereType::SmallCraftHazardousSeas),
9385 "hazardous_seas" => Some(WeatherSevereType::HazardousSeas),
9386 "small_craft" => Some(WeatherSevereType::SmallCraft),
9387 "small_craft_winds" => Some(WeatherSevereType::SmallCraftWinds),
9388 "small_craft_rough_bar" => Some(WeatherSevereType::SmallCraftRoughBar),
9389 "high_water_level" => Some(WeatherSevereType::HighWaterLevel),
9390 "ashfall" => Some(WeatherSevereType::Ashfall),
9391 "freezing_fog" => Some(WeatherSevereType::FreezingFog),
9392 "dense_fog" => Some(WeatherSevereType::DenseFog),
9393 "dense_smoke" => Some(WeatherSevereType::DenseSmoke),
9394 "blowing_dust" => Some(WeatherSevereType::BlowingDust),
9395 "hard_freeze" => Some(WeatherSevereType::HardFreeze),
9396 "freeze" => Some(WeatherSevereType::Freeze),
9397 "frost" => Some(WeatherSevereType::Frost),
9398 "fire_weather" => Some(WeatherSevereType::FireWeather),
9399 "flood" => Some(WeatherSevereType::Flood),
9400 "rip_tide" => Some(WeatherSevereType::RipTide),
9401 "high_surf" => Some(WeatherSevereType::HighSurf),
9402 "smog" => Some(WeatherSevereType::Smog),
9403 "air_quality" => Some(WeatherSevereType::AirQuality),
9404 "brisk_wind" => Some(WeatherSevereType::BriskWind),
9405 "air_stagnation" => Some(WeatherSevereType::AirStagnation),
9406 "low_water" => Some(WeatherSevereType::LowWater),
9407 "hydrological" => Some(WeatherSevereType::Hydrological),
9408 "special_weather" => Some(WeatherSevereType::SpecialWeather),
9409 _ => None,
9410 }
9411 }
9412}
9413
9414#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9415#[repr(u8)]
9416#[non_exhaustive]
9417pub enum StrokeType {
9418 NoEvent = 0,
9419 Other = 1,
9420 Serve = 2,
9421 Forehand = 3,
9422 Backhand = 4,
9423 Smash = 5,
9424}
9425
9426impl StrokeType {
9427 pub fn as_str(&self) -> &'static str {
9429 match self {
9430 StrokeType::NoEvent => "no_event",
9431 StrokeType::Other => "other",
9432 StrokeType::Serve => "serve",
9433 StrokeType::Forehand => "forehand",
9434 StrokeType::Backhand => "backhand",
9435 StrokeType::Smash => "smash",
9436 }
9437 }
9438
9439 pub fn from_value(value: u8) -> Option<Self> {
9441 match value {
9442 0 => Some(StrokeType::NoEvent),
9443 1 => Some(StrokeType::Other),
9444 2 => Some(StrokeType::Serve),
9445 3 => Some(StrokeType::Forehand),
9446 4 => Some(StrokeType::Backhand),
9447 5 => Some(StrokeType::Smash),
9448 _ => None,
9449 }
9450 }
9451
9452 pub fn from_str(name: &str) -> Option<Self> {
9454 match name {
9455 "no_event" => Some(StrokeType::NoEvent),
9456 "other" => Some(StrokeType::Other),
9457 "serve" => Some(StrokeType::Serve),
9458 "forehand" => Some(StrokeType::Forehand),
9459 "backhand" => Some(StrokeType::Backhand),
9460 "smash" => Some(StrokeType::Smash),
9461 _ => None,
9462 }
9463 }
9464}
9465
9466#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9467#[repr(u8)]
9468#[non_exhaustive]
9469pub enum BodyLocation {
9470 LeftLeg = 0,
9471 LeftCalf = 1,
9472 LeftShin = 2,
9473 LeftHamstring = 3,
9474 LeftQuad = 4,
9475 LeftGlute = 5,
9476 RightLeg = 6,
9477 RightCalf = 7,
9478 RightShin = 8,
9479 RightHamstring = 9,
9480 RightQuad = 10,
9481 RightGlute = 11,
9482 TorsoBack = 12,
9483 LeftLowerBack = 13,
9484 LeftUpperBack = 14,
9485 RightLowerBack = 15,
9486 RightUpperBack = 16,
9487 TorsoFront = 17,
9488 LeftAbdomen = 18,
9489 LeftChest = 19,
9490 RightAbdomen = 20,
9491 RightChest = 21,
9492 LeftArm = 22,
9493 LeftShoulder = 23,
9494 LeftBicep = 24,
9495 LeftTricep = 25,
9496 LeftBrachioradialis = 26,
9497 LeftForearmExtensors = 27,
9498 RightArm = 28,
9499 RightShoulder = 29,
9500 RightBicep = 30,
9501 RightTricep = 31,
9502 RightBrachioradialis = 32,
9503 RightForearmExtensors = 33,
9504 Neck = 34,
9505 Throat = 35,
9506 WaistMidBack = 36,
9507 WaistFront = 37,
9508 WaistLeft = 38,
9509 WaistRight = 39,
9510}
9511
9512impl BodyLocation {
9513 pub fn as_str(&self) -> &'static str {
9515 match self {
9516 BodyLocation::LeftLeg => "left_leg",
9517 BodyLocation::LeftCalf => "left_calf",
9518 BodyLocation::LeftShin => "left_shin",
9519 BodyLocation::LeftHamstring => "left_hamstring",
9520 BodyLocation::LeftQuad => "left_quad",
9521 BodyLocation::LeftGlute => "left_glute",
9522 BodyLocation::RightLeg => "right_leg",
9523 BodyLocation::RightCalf => "right_calf",
9524 BodyLocation::RightShin => "right_shin",
9525 BodyLocation::RightHamstring => "right_hamstring",
9526 BodyLocation::RightQuad => "right_quad",
9527 BodyLocation::RightGlute => "right_glute",
9528 BodyLocation::TorsoBack => "torso_back",
9529 BodyLocation::LeftLowerBack => "left_lower_back",
9530 BodyLocation::LeftUpperBack => "left_upper_back",
9531 BodyLocation::RightLowerBack => "right_lower_back",
9532 BodyLocation::RightUpperBack => "right_upper_back",
9533 BodyLocation::TorsoFront => "torso_front",
9534 BodyLocation::LeftAbdomen => "left_abdomen",
9535 BodyLocation::LeftChest => "left_chest",
9536 BodyLocation::RightAbdomen => "right_abdomen",
9537 BodyLocation::RightChest => "right_chest",
9538 BodyLocation::LeftArm => "left_arm",
9539 BodyLocation::LeftShoulder => "left_shoulder",
9540 BodyLocation::LeftBicep => "left_bicep",
9541 BodyLocation::LeftTricep => "left_tricep",
9542 BodyLocation::LeftBrachioradialis => "left_brachioradialis",
9543 BodyLocation::LeftForearmExtensors => "left_forearm_extensors",
9544 BodyLocation::RightArm => "right_arm",
9545 BodyLocation::RightShoulder => "right_shoulder",
9546 BodyLocation::RightBicep => "right_bicep",
9547 BodyLocation::RightTricep => "right_tricep",
9548 BodyLocation::RightBrachioradialis => "right_brachioradialis",
9549 BodyLocation::RightForearmExtensors => "right_forearm_extensors",
9550 BodyLocation::Neck => "neck",
9551 BodyLocation::Throat => "throat",
9552 BodyLocation::WaistMidBack => "waist_mid_back",
9553 BodyLocation::WaistFront => "waist_front",
9554 BodyLocation::WaistLeft => "waist_left",
9555 BodyLocation::WaistRight => "waist_right",
9556 }
9557 }
9558
9559 pub fn from_value(value: u8) -> Option<Self> {
9561 match value {
9562 0 => Some(BodyLocation::LeftLeg),
9563 1 => Some(BodyLocation::LeftCalf),
9564 2 => Some(BodyLocation::LeftShin),
9565 3 => Some(BodyLocation::LeftHamstring),
9566 4 => Some(BodyLocation::LeftQuad),
9567 5 => Some(BodyLocation::LeftGlute),
9568 6 => Some(BodyLocation::RightLeg),
9569 7 => Some(BodyLocation::RightCalf),
9570 8 => Some(BodyLocation::RightShin),
9571 9 => Some(BodyLocation::RightHamstring),
9572 10 => Some(BodyLocation::RightQuad),
9573 11 => Some(BodyLocation::RightGlute),
9574 12 => Some(BodyLocation::TorsoBack),
9575 13 => Some(BodyLocation::LeftLowerBack),
9576 14 => Some(BodyLocation::LeftUpperBack),
9577 15 => Some(BodyLocation::RightLowerBack),
9578 16 => Some(BodyLocation::RightUpperBack),
9579 17 => Some(BodyLocation::TorsoFront),
9580 18 => Some(BodyLocation::LeftAbdomen),
9581 19 => Some(BodyLocation::LeftChest),
9582 20 => Some(BodyLocation::RightAbdomen),
9583 21 => Some(BodyLocation::RightChest),
9584 22 => Some(BodyLocation::LeftArm),
9585 23 => Some(BodyLocation::LeftShoulder),
9586 24 => Some(BodyLocation::LeftBicep),
9587 25 => Some(BodyLocation::LeftTricep),
9588 26 => Some(BodyLocation::LeftBrachioradialis),
9589 27 => Some(BodyLocation::LeftForearmExtensors),
9590 28 => Some(BodyLocation::RightArm),
9591 29 => Some(BodyLocation::RightShoulder),
9592 30 => Some(BodyLocation::RightBicep),
9593 31 => Some(BodyLocation::RightTricep),
9594 32 => Some(BodyLocation::RightBrachioradialis),
9595 33 => Some(BodyLocation::RightForearmExtensors),
9596 34 => Some(BodyLocation::Neck),
9597 35 => Some(BodyLocation::Throat),
9598 36 => Some(BodyLocation::WaistMidBack),
9599 37 => Some(BodyLocation::WaistFront),
9600 38 => Some(BodyLocation::WaistLeft),
9601 39 => Some(BodyLocation::WaistRight),
9602 _ => None,
9603 }
9604 }
9605
9606 pub fn from_str(name: &str) -> Option<Self> {
9608 match name {
9609 "left_leg" => Some(BodyLocation::LeftLeg),
9610 "left_calf" => Some(BodyLocation::LeftCalf),
9611 "left_shin" => Some(BodyLocation::LeftShin),
9612 "left_hamstring" => Some(BodyLocation::LeftHamstring),
9613 "left_quad" => Some(BodyLocation::LeftQuad),
9614 "left_glute" => Some(BodyLocation::LeftGlute),
9615 "right_leg" => Some(BodyLocation::RightLeg),
9616 "right_calf" => Some(BodyLocation::RightCalf),
9617 "right_shin" => Some(BodyLocation::RightShin),
9618 "right_hamstring" => Some(BodyLocation::RightHamstring),
9619 "right_quad" => Some(BodyLocation::RightQuad),
9620 "right_glute" => Some(BodyLocation::RightGlute),
9621 "torso_back" => Some(BodyLocation::TorsoBack),
9622 "left_lower_back" => Some(BodyLocation::LeftLowerBack),
9623 "left_upper_back" => Some(BodyLocation::LeftUpperBack),
9624 "right_lower_back" => Some(BodyLocation::RightLowerBack),
9625 "right_upper_back" => Some(BodyLocation::RightUpperBack),
9626 "torso_front" => Some(BodyLocation::TorsoFront),
9627 "left_abdomen" => Some(BodyLocation::LeftAbdomen),
9628 "left_chest" => Some(BodyLocation::LeftChest),
9629 "right_abdomen" => Some(BodyLocation::RightAbdomen),
9630 "right_chest" => Some(BodyLocation::RightChest),
9631 "left_arm" => Some(BodyLocation::LeftArm),
9632 "left_shoulder" => Some(BodyLocation::LeftShoulder),
9633 "left_bicep" => Some(BodyLocation::LeftBicep),
9634 "left_tricep" => Some(BodyLocation::LeftTricep),
9635 "left_brachioradialis" => Some(BodyLocation::LeftBrachioradialis),
9636 "left_forearm_extensors" => Some(BodyLocation::LeftForearmExtensors),
9637 "right_arm" => Some(BodyLocation::RightArm),
9638 "right_shoulder" => Some(BodyLocation::RightShoulder),
9639 "right_bicep" => Some(BodyLocation::RightBicep),
9640 "right_tricep" => Some(BodyLocation::RightTricep),
9641 "right_brachioradialis" => Some(BodyLocation::RightBrachioradialis),
9642 "right_forearm_extensors" => Some(BodyLocation::RightForearmExtensors),
9643 "neck" => Some(BodyLocation::Neck),
9644 "throat" => Some(BodyLocation::Throat),
9645 "waist_mid_back" => Some(BodyLocation::WaistMidBack),
9646 "waist_front" => Some(BodyLocation::WaistFront),
9647 "waist_left" => Some(BodyLocation::WaistLeft),
9648 "waist_right" => Some(BodyLocation::WaistRight),
9649 _ => None,
9650 }
9651 }
9652}
9653
9654#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9655#[repr(u8)]
9656#[non_exhaustive]
9657pub enum SegmentLapStatus {
9658 End = 0,
9659 Fail = 1,
9660}
9661
9662impl SegmentLapStatus {
9663 pub fn as_str(&self) -> &'static str {
9665 match self {
9666 SegmentLapStatus::End => "end",
9667 SegmentLapStatus::Fail => "fail",
9668 }
9669 }
9670
9671 pub fn from_value(value: u8) -> Option<Self> {
9673 match value {
9674 0 => Some(SegmentLapStatus::End),
9675 1 => Some(SegmentLapStatus::Fail),
9676 _ => None,
9677 }
9678 }
9679
9680 pub fn from_str(name: &str) -> Option<Self> {
9682 match name {
9683 "end" => Some(SegmentLapStatus::End),
9684 "fail" => Some(SegmentLapStatus::Fail),
9685 _ => None,
9686 }
9687 }
9688}
9689
9690#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9691#[repr(u8)]
9692#[non_exhaustive]
9693pub enum SegmentLeaderboardType {
9694 Overall = 0,
9695 PersonalBest = 1,
9696 Connections = 2,
9697 Group = 3,
9698 Challenger = 4,
9699 Kom = 5,
9700 Qom = 6,
9701 Pr = 7,
9702 Goal = 8,
9703 Carrot = 9,
9704 ClubLeader = 10,
9705 Rival = 11,
9706 Last = 12,
9707 RecentBest = 13,
9708 CourseRecord = 14,
9709}
9710
9711impl SegmentLeaderboardType {
9712 pub fn as_str(&self) -> &'static str {
9714 match self {
9715 SegmentLeaderboardType::Overall => "overall",
9716 SegmentLeaderboardType::PersonalBest => "personal_best",
9717 SegmentLeaderboardType::Connections => "connections",
9718 SegmentLeaderboardType::Group => "group",
9719 SegmentLeaderboardType::Challenger => "challenger",
9720 SegmentLeaderboardType::Kom => "kom",
9721 SegmentLeaderboardType::Qom => "qom",
9722 SegmentLeaderboardType::Pr => "pr",
9723 SegmentLeaderboardType::Goal => "goal",
9724 SegmentLeaderboardType::Carrot => "carrot",
9725 SegmentLeaderboardType::ClubLeader => "club_leader",
9726 SegmentLeaderboardType::Rival => "rival",
9727 SegmentLeaderboardType::Last => "last",
9728 SegmentLeaderboardType::RecentBest => "recent_best",
9729 SegmentLeaderboardType::CourseRecord => "course_record",
9730 }
9731 }
9732
9733 pub fn from_value(value: u8) -> Option<Self> {
9735 match value {
9736 0 => Some(SegmentLeaderboardType::Overall),
9737 1 => Some(SegmentLeaderboardType::PersonalBest),
9738 2 => Some(SegmentLeaderboardType::Connections),
9739 3 => Some(SegmentLeaderboardType::Group),
9740 4 => Some(SegmentLeaderboardType::Challenger),
9741 5 => Some(SegmentLeaderboardType::Kom),
9742 6 => Some(SegmentLeaderboardType::Qom),
9743 7 => Some(SegmentLeaderboardType::Pr),
9744 8 => Some(SegmentLeaderboardType::Goal),
9745 9 => Some(SegmentLeaderboardType::Carrot),
9746 10 => Some(SegmentLeaderboardType::ClubLeader),
9747 11 => Some(SegmentLeaderboardType::Rival),
9748 12 => Some(SegmentLeaderboardType::Last),
9749 13 => Some(SegmentLeaderboardType::RecentBest),
9750 14 => Some(SegmentLeaderboardType::CourseRecord),
9751 _ => None,
9752 }
9753 }
9754
9755 pub fn from_str(name: &str) -> Option<Self> {
9757 match name {
9758 "overall" => Some(SegmentLeaderboardType::Overall),
9759 "personal_best" => Some(SegmentLeaderboardType::PersonalBest),
9760 "connections" => Some(SegmentLeaderboardType::Connections),
9761 "group" => Some(SegmentLeaderboardType::Group),
9762 "challenger" => Some(SegmentLeaderboardType::Challenger),
9763 "kom" => Some(SegmentLeaderboardType::Kom),
9764 "qom" => Some(SegmentLeaderboardType::Qom),
9765 "pr" => Some(SegmentLeaderboardType::Pr),
9766 "goal" => Some(SegmentLeaderboardType::Goal),
9767 "carrot" => Some(SegmentLeaderboardType::Carrot),
9768 "club_leader" => Some(SegmentLeaderboardType::ClubLeader),
9769 "rival" => Some(SegmentLeaderboardType::Rival),
9770 "last" => Some(SegmentLeaderboardType::Last),
9771 "recent_best" => Some(SegmentLeaderboardType::RecentBest),
9772 "course_record" => Some(SegmentLeaderboardType::CourseRecord),
9773 _ => None,
9774 }
9775 }
9776}
9777
9778#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9779#[repr(u8)]
9780#[non_exhaustive]
9781pub enum SegmentDeleteStatus {
9782 DoNotDelete = 0,
9783 DeleteOne = 1,
9784 DeleteAll = 2,
9785}
9786
9787impl SegmentDeleteStatus {
9788 pub fn as_str(&self) -> &'static str {
9790 match self {
9791 SegmentDeleteStatus::DoNotDelete => "do_not_delete",
9792 SegmentDeleteStatus::DeleteOne => "delete_one",
9793 SegmentDeleteStatus::DeleteAll => "delete_all",
9794 }
9795 }
9796
9797 pub fn from_value(value: u8) -> Option<Self> {
9799 match value {
9800 0 => Some(SegmentDeleteStatus::DoNotDelete),
9801 1 => Some(SegmentDeleteStatus::DeleteOne),
9802 2 => Some(SegmentDeleteStatus::DeleteAll),
9803 _ => None,
9804 }
9805 }
9806
9807 pub fn from_str(name: &str) -> Option<Self> {
9809 match name {
9810 "do_not_delete" => Some(SegmentDeleteStatus::DoNotDelete),
9811 "delete_one" => Some(SegmentDeleteStatus::DeleteOne),
9812 "delete_all" => Some(SegmentDeleteStatus::DeleteAll),
9813 _ => None,
9814 }
9815 }
9816}
9817
9818#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9819#[repr(u8)]
9820#[non_exhaustive]
9821pub enum SegmentSelectionType {
9822 Starred = 0,
9823 Suggested = 1,
9824}
9825
9826impl SegmentSelectionType {
9827 pub fn as_str(&self) -> &'static str {
9829 match self {
9830 SegmentSelectionType::Starred => "starred",
9831 SegmentSelectionType::Suggested => "suggested",
9832 }
9833 }
9834
9835 pub fn from_value(value: u8) -> Option<Self> {
9837 match value {
9838 0 => Some(SegmentSelectionType::Starred),
9839 1 => Some(SegmentSelectionType::Suggested),
9840 _ => None,
9841 }
9842 }
9843
9844 pub fn from_str(name: &str) -> Option<Self> {
9846 match name {
9847 "starred" => Some(SegmentSelectionType::Starred),
9848 "suggested" => Some(SegmentSelectionType::Suggested),
9849 _ => None,
9850 }
9851 }
9852}
9853
9854#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9855#[repr(u8)]
9856#[non_exhaustive]
9857pub enum SourceType {
9858 Ant = 0,
9859 Antplus = 1,
9860 Bluetooth = 2,
9861 BluetoothLowEnergy = 3,
9862 Wifi = 4,
9863 Local = 5,
9864}
9865
9866impl SourceType {
9867 pub fn as_str(&self) -> &'static str {
9869 match self {
9870 SourceType::Ant => "ant",
9871 SourceType::Antplus => "antplus",
9872 SourceType::Bluetooth => "bluetooth",
9873 SourceType::BluetoothLowEnergy => "bluetooth_low_energy",
9874 SourceType::Wifi => "wifi",
9875 SourceType::Local => "local",
9876 }
9877 }
9878
9879 pub fn from_value(value: u8) -> Option<Self> {
9881 match value {
9882 0 => Some(SourceType::Ant),
9883 1 => Some(SourceType::Antplus),
9884 2 => Some(SourceType::Bluetooth),
9885 3 => Some(SourceType::BluetoothLowEnergy),
9886 4 => Some(SourceType::Wifi),
9887 5 => Some(SourceType::Local),
9888 _ => None,
9889 }
9890 }
9891
9892 pub fn from_str(name: &str) -> Option<Self> {
9894 match name {
9895 "ant" => Some(SourceType::Ant),
9896 "antplus" => Some(SourceType::Antplus),
9897 "bluetooth" => Some(SourceType::Bluetooth),
9898 "bluetooth_low_energy" => Some(SourceType::BluetoothLowEnergy),
9899 "wifi" => Some(SourceType::Wifi),
9900 "local" => Some(SourceType::Local),
9901 _ => None,
9902 }
9903 }
9904}
9905
9906#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9907#[repr(u8)]
9908#[non_exhaustive]
9909pub enum LocalDeviceType {
9910 Gps = 0,
9911 Glonass = 1,
9912 GpsGlonass = 2,
9913 Accelerometer = 3,
9914 Barometer = 4,
9915 Temperature = 5,
9916 Whr = 10,
9917 SensorHub = 12,
9918}
9919
9920impl LocalDeviceType {
9921 pub fn as_str(&self) -> &'static str {
9923 match self {
9924 LocalDeviceType::Gps => "gps",
9925 LocalDeviceType::Glonass => "glonass",
9926 LocalDeviceType::GpsGlonass => "gps_glonass",
9927 LocalDeviceType::Accelerometer => "accelerometer",
9928 LocalDeviceType::Barometer => "barometer",
9929 LocalDeviceType::Temperature => "temperature",
9930 LocalDeviceType::Whr => "whr",
9931 LocalDeviceType::SensorHub => "sensor_hub",
9932 }
9933 }
9934
9935 pub fn from_value(value: u8) -> Option<Self> {
9937 match value {
9938 0 => Some(LocalDeviceType::Gps),
9939 1 => Some(LocalDeviceType::Glonass),
9940 2 => Some(LocalDeviceType::GpsGlonass),
9941 3 => Some(LocalDeviceType::Accelerometer),
9942 4 => Some(LocalDeviceType::Barometer),
9943 5 => Some(LocalDeviceType::Temperature),
9944 10 => Some(LocalDeviceType::Whr),
9945 12 => Some(LocalDeviceType::SensorHub),
9946 _ => None,
9947 }
9948 }
9949
9950 pub fn from_str(name: &str) -> Option<Self> {
9952 match name {
9953 "gps" => Some(LocalDeviceType::Gps),
9954 "glonass" => Some(LocalDeviceType::Glonass),
9955 "gps_glonass" => Some(LocalDeviceType::GpsGlonass),
9956 "accelerometer" => Some(LocalDeviceType::Accelerometer),
9957 "barometer" => Some(LocalDeviceType::Barometer),
9958 "temperature" => Some(LocalDeviceType::Temperature),
9959 "whr" => Some(LocalDeviceType::Whr),
9960 "sensor_hub" => Some(LocalDeviceType::SensorHub),
9961 _ => None,
9962 }
9963 }
9964}
9965
9966#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
9967#[repr(u8)]
9968#[non_exhaustive]
9969pub enum BleDeviceType {
9970 ConnectedGps = 0,
9971 HeartRate = 1,
9972 BikePower = 2,
9973 BikeSpeedCadence = 3,
9974 BikeSpeed = 4,
9975 BikeCadence = 5,
9976 Footpod = 6,
9977 BikeTrainer = 7,
9978}
9979
9980impl BleDeviceType {
9981 pub fn as_str(&self) -> &'static str {
9983 match self {
9984 BleDeviceType::ConnectedGps => "connected_gps",
9985 BleDeviceType::HeartRate => "heart_rate",
9986 BleDeviceType::BikePower => "bike_power",
9987 BleDeviceType::BikeSpeedCadence => "bike_speed_cadence",
9988 BleDeviceType::BikeSpeed => "bike_speed",
9989 BleDeviceType::BikeCadence => "bike_cadence",
9990 BleDeviceType::Footpod => "footpod",
9991 BleDeviceType::BikeTrainer => "bike_trainer",
9992 }
9993 }
9994
9995 pub fn from_value(value: u8) -> Option<Self> {
9997 match value {
9998 0 => Some(BleDeviceType::ConnectedGps),
9999 1 => Some(BleDeviceType::HeartRate),
10000 2 => Some(BleDeviceType::BikePower),
10001 3 => Some(BleDeviceType::BikeSpeedCadence),
10002 4 => Some(BleDeviceType::BikeSpeed),
10003 5 => Some(BleDeviceType::BikeCadence),
10004 6 => Some(BleDeviceType::Footpod),
10005 7 => Some(BleDeviceType::BikeTrainer),
10006 _ => None,
10007 }
10008 }
10009
10010 pub fn from_str(name: &str) -> Option<Self> {
10012 match name {
10013 "connected_gps" => Some(BleDeviceType::ConnectedGps),
10014 "heart_rate" => Some(BleDeviceType::HeartRate),
10015 "bike_power" => Some(BleDeviceType::BikePower),
10016 "bike_speed_cadence" => Some(BleDeviceType::BikeSpeedCadence),
10017 "bike_speed" => Some(BleDeviceType::BikeSpeed),
10018 "bike_cadence" => Some(BleDeviceType::BikeCadence),
10019 "footpod" => Some(BleDeviceType::Footpod),
10020 "bike_trainer" => Some(BleDeviceType::BikeTrainer),
10021 _ => None,
10022 }
10023 }
10024}
10025
10026#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10027#[repr(u32)]
10028#[non_exhaustive]
10029pub enum AntChannelId {
10030 AntExtendedDeviceNumberUpperNibble = 4026531840,
10031 AntTransmissionTypeLowerNibble = 251658240,
10032 AntDeviceType = 16711680,
10033 AntDeviceNumber = 65535,
10034}
10035
10036impl AntChannelId {
10037 pub fn as_str(&self) -> &'static str {
10039 match self {
10040 AntChannelId::AntExtendedDeviceNumberUpperNibble => {
10041 "ant_extended_device_number_upper_nibble"
10042 }
10043 AntChannelId::AntTransmissionTypeLowerNibble => "ant_transmission_type_lower_nibble",
10044 AntChannelId::AntDeviceType => "ant_device_type",
10045 AntChannelId::AntDeviceNumber => "ant_device_number",
10046 }
10047 }
10048
10049 pub fn from_value(value: u32) -> Option<Self> {
10051 match value {
10052 4026531840 => Some(AntChannelId::AntExtendedDeviceNumberUpperNibble),
10053 251658240 => Some(AntChannelId::AntTransmissionTypeLowerNibble),
10054 16711680 => Some(AntChannelId::AntDeviceType),
10055 65535 => Some(AntChannelId::AntDeviceNumber),
10056 _ => None,
10057 }
10058 }
10059
10060 pub fn from_str(name: &str) -> Option<Self> {
10062 match name {
10063 "ant_extended_device_number_upper_nibble" => {
10064 Some(AntChannelId::AntExtendedDeviceNumberUpperNibble)
10065 }
10066 "ant_transmission_type_lower_nibble" => {
10067 Some(AntChannelId::AntTransmissionTypeLowerNibble)
10068 }
10069 "ant_device_type" => Some(AntChannelId::AntDeviceType),
10070 "ant_device_number" => Some(AntChannelId::AntDeviceNumber),
10071 _ => None,
10072 }
10073 }
10074}
10075
10076#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10077#[repr(u8)]
10078#[non_exhaustive]
10079pub enum DisplayOrientation {
10080 Auto = 0,
10081 Portrait = 1,
10082 Landscape = 2,
10083 PortraitFlipped = 3,
10084 LandscapeFlipped = 4,
10085}
10086
10087impl DisplayOrientation {
10088 pub fn as_str(&self) -> &'static str {
10090 match self {
10091 DisplayOrientation::Auto => "auto",
10092 DisplayOrientation::Portrait => "portrait",
10093 DisplayOrientation::Landscape => "landscape",
10094 DisplayOrientation::PortraitFlipped => "portrait_flipped",
10095 DisplayOrientation::LandscapeFlipped => "landscape_flipped",
10096 }
10097 }
10098
10099 pub fn from_value(value: u8) -> Option<Self> {
10101 match value {
10102 0 => Some(DisplayOrientation::Auto),
10103 1 => Some(DisplayOrientation::Portrait),
10104 2 => Some(DisplayOrientation::Landscape),
10105 3 => Some(DisplayOrientation::PortraitFlipped),
10106 4 => Some(DisplayOrientation::LandscapeFlipped),
10107 _ => None,
10108 }
10109 }
10110
10111 pub fn from_str(name: &str) -> Option<Self> {
10113 match name {
10114 "auto" => Some(DisplayOrientation::Auto),
10115 "portrait" => Some(DisplayOrientation::Portrait),
10116 "landscape" => Some(DisplayOrientation::Landscape),
10117 "portrait_flipped" => Some(DisplayOrientation::PortraitFlipped),
10118 "landscape_flipped" => Some(DisplayOrientation::LandscapeFlipped),
10119 _ => None,
10120 }
10121 }
10122}
10123
10124#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10125#[repr(u8)]
10126#[non_exhaustive]
10127pub enum WorkoutEquipment {
10128 None = 0,
10129 SwimFins = 1,
10130 SwimKickboard = 2,
10131 SwimPaddles = 3,
10132 SwimPullBuoy = 4,
10133 SwimSnorkel = 5,
10134}
10135
10136impl WorkoutEquipment {
10137 pub fn as_str(&self) -> &'static str {
10139 match self {
10140 WorkoutEquipment::None => "none",
10141 WorkoutEquipment::SwimFins => "swim_fins",
10142 WorkoutEquipment::SwimKickboard => "swim_kickboard",
10143 WorkoutEquipment::SwimPaddles => "swim_paddles",
10144 WorkoutEquipment::SwimPullBuoy => "swim_pull_buoy",
10145 WorkoutEquipment::SwimSnorkel => "swim_snorkel",
10146 }
10147 }
10148
10149 pub fn from_value(value: u8) -> Option<Self> {
10151 match value {
10152 0 => Some(WorkoutEquipment::None),
10153 1 => Some(WorkoutEquipment::SwimFins),
10154 2 => Some(WorkoutEquipment::SwimKickboard),
10155 3 => Some(WorkoutEquipment::SwimPaddles),
10156 4 => Some(WorkoutEquipment::SwimPullBuoy),
10157 5 => Some(WorkoutEquipment::SwimSnorkel),
10158 _ => None,
10159 }
10160 }
10161
10162 pub fn from_str(name: &str) -> Option<Self> {
10164 match name {
10165 "none" => Some(WorkoutEquipment::None),
10166 "swim_fins" => Some(WorkoutEquipment::SwimFins),
10167 "swim_kickboard" => Some(WorkoutEquipment::SwimKickboard),
10168 "swim_paddles" => Some(WorkoutEquipment::SwimPaddles),
10169 "swim_pull_buoy" => Some(WorkoutEquipment::SwimPullBuoy),
10170 "swim_snorkel" => Some(WorkoutEquipment::SwimSnorkel),
10171 _ => None,
10172 }
10173 }
10174}
10175
10176#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10177#[repr(u8)]
10178#[non_exhaustive]
10179pub enum WatchfaceMode {
10180 Digital = 0,
10181 Analog = 1,
10182 ConnectIq = 2,
10183 Disabled = 3,
10184}
10185
10186impl WatchfaceMode {
10187 pub fn as_str(&self) -> &'static str {
10189 match self {
10190 WatchfaceMode::Digital => "digital",
10191 WatchfaceMode::Analog => "analog",
10192 WatchfaceMode::ConnectIq => "connect_iq",
10193 WatchfaceMode::Disabled => "disabled",
10194 }
10195 }
10196
10197 pub fn from_value(value: u8) -> Option<Self> {
10199 match value {
10200 0 => Some(WatchfaceMode::Digital),
10201 1 => Some(WatchfaceMode::Analog),
10202 2 => Some(WatchfaceMode::ConnectIq),
10203 3 => Some(WatchfaceMode::Disabled),
10204 _ => None,
10205 }
10206 }
10207
10208 pub fn from_str(name: &str) -> Option<Self> {
10210 match name {
10211 "digital" => Some(WatchfaceMode::Digital),
10212 "analog" => Some(WatchfaceMode::Analog),
10213 "connect_iq" => Some(WatchfaceMode::ConnectIq),
10214 "disabled" => Some(WatchfaceMode::Disabled),
10215 _ => None,
10216 }
10217 }
10218}
10219
10220#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10221#[repr(u8)]
10222#[non_exhaustive]
10223pub enum DigitalWatchfaceLayout {
10224 Traditional = 0,
10225 Modern = 1,
10226 Bold = 2,
10227}
10228
10229impl DigitalWatchfaceLayout {
10230 pub fn as_str(&self) -> &'static str {
10232 match self {
10233 DigitalWatchfaceLayout::Traditional => "traditional",
10234 DigitalWatchfaceLayout::Modern => "modern",
10235 DigitalWatchfaceLayout::Bold => "bold",
10236 }
10237 }
10238
10239 pub fn from_value(value: u8) -> Option<Self> {
10241 match value {
10242 0 => Some(DigitalWatchfaceLayout::Traditional),
10243 1 => Some(DigitalWatchfaceLayout::Modern),
10244 2 => Some(DigitalWatchfaceLayout::Bold),
10245 _ => None,
10246 }
10247 }
10248
10249 pub fn from_str(name: &str) -> Option<Self> {
10251 match name {
10252 "traditional" => Some(DigitalWatchfaceLayout::Traditional),
10253 "modern" => Some(DigitalWatchfaceLayout::Modern),
10254 "bold" => Some(DigitalWatchfaceLayout::Bold),
10255 _ => None,
10256 }
10257 }
10258}
10259
10260#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10261#[repr(u8)]
10262#[non_exhaustive]
10263pub enum AnalogWatchfaceLayout {
10264 Minimal = 0,
10265 Traditional = 1,
10266 Modern = 2,
10267}
10268
10269impl AnalogWatchfaceLayout {
10270 pub fn as_str(&self) -> &'static str {
10272 match self {
10273 AnalogWatchfaceLayout::Minimal => "minimal",
10274 AnalogWatchfaceLayout::Traditional => "traditional",
10275 AnalogWatchfaceLayout::Modern => "modern",
10276 }
10277 }
10278
10279 pub fn from_value(value: u8) -> Option<Self> {
10281 match value {
10282 0 => Some(AnalogWatchfaceLayout::Minimal),
10283 1 => Some(AnalogWatchfaceLayout::Traditional),
10284 2 => Some(AnalogWatchfaceLayout::Modern),
10285 _ => None,
10286 }
10287 }
10288
10289 pub fn from_str(name: &str) -> Option<Self> {
10291 match name {
10292 "minimal" => Some(AnalogWatchfaceLayout::Minimal),
10293 "traditional" => Some(AnalogWatchfaceLayout::Traditional),
10294 "modern" => Some(AnalogWatchfaceLayout::Modern),
10295 _ => None,
10296 }
10297 }
10298}
10299
10300#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10301#[repr(u8)]
10302#[non_exhaustive]
10303pub enum RiderPositionType {
10304 Seated = 0,
10305 Standing = 1,
10306 TransitionToSeated = 2,
10307 TransitionToStanding = 3,
10308}
10309
10310impl RiderPositionType {
10311 pub fn as_str(&self) -> &'static str {
10313 match self {
10314 RiderPositionType::Seated => "seated",
10315 RiderPositionType::Standing => "standing",
10316 RiderPositionType::TransitionToSeated => "transition_to_seated",
10317 RiderPositionType::TransitionToStanding => "transition_to_standing",
10318 }
10319 }
10320
10321 pub fn from_value(value: u8) -> Option<Self> {
10323 match value {
10324 0 => Some(RiderPositionType::Seated),
10325 1 => Some(RiderPositionType::Standing),
10326 2 => Some(RiderPositionType::TransitionToSeated),
10327 3 => Some(RiderPositionType::TransitionToStanding),
10328 _ => None,
10329 }
10330 }
10331
10332 pub fn from_str(name: &str) -> Option<Self> {
10334 match name {
10335 "seated" => Some(RiderPositionType::Seated),
10336 "standing" => Some(RiderPositionType::Standing),
10337 "transition_to_seated" => Some(RiderPositionType::TransitionToSeated),
10338 "transition_to_standing" => Some(RiderPositionType::TransitionToStanding),
10339 _ => None,
10340 }
10341 }
10342}
10343
10344#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10345#[repr(u8)]
10346#[non_exhaustive]
10347pub enum PowerPhaseType {
10348 PowerPhaseStartAngle = 0,
10349 PowerPhaseEndAngle = 1,
10350 PowerPhaseArcLength = 2,
10351 PowerPhaseCenter = 3,
10352}
10353
10354impl PowerPhaseType {
10355 pub fn as_str(&self) -> &'static str {
10357 match self {
10358 PowerPhaseType::PowerPhaseStartAngle => "power_phase_start_angle",
10359 PowerPhaseType::PowerPhaseEndAngle => "power_phase_end_angle",
10360 PowerPhaseType::PowerPhaseArcLength => "power_phase_arc_length",
10361 PowerPhaseType::PowerPhaseCenter => "power_phase_center",
10362 }
10363 }
10364
10365 pub fn from_value(value: u8) -> Option<Self> {
10367 match value {
10368 0 => Some(PowerPhaseType::PowerPhaseStartAngle),
10369 1 => Some(PowerPhaseType::PowerPhaseEndAngle),
10370 2 => Some(PowerPhaseType::PowerPhaseArcLength),
10371 3 => Some(PowerPhaseType::PowerPhaseCenter),
10372 _ => None,
10373 }
10374 }
10375
10376 pub fn from_str(name: &str) -> Option<Self> {
10378 match name {
10379 "power_phase_start_angle" => Some(PowerPhaseType::PowerPhaseStartAngle),
10380 "power_phase_end_angle" => Some(PowerPhaseType::PowerPhaseEndAngle),
10381 "power_phase_arc_length" => Some(PowerPhaseType::PowerPhaseArcLength),
10382 "power_phase_center" => Some(PowerPhaseType::PowerPhaseCenter),
10383 _ => None,
10384 }
10385 }
10386}
10387
10388#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10389#[repr(u8)]
10390#[non_exhaustive]
10391pub enum CameraEventType {
10392 VideoStart = 0,
10393 VideoSplit = 1,
10394 VideoEnd = 2,
10395 PhotoTaken = 3,
10396 VideoSecondStreamStart = 4,
10397 VideoSecondStreamSplit = 5,
10398 VideoSecondStreamEnd = 6,
10399 VideoSplitStart = 7,
10400 VideoSecondStreamSplitStart = 8,
10401 VideoPause = 11,
10402 VideoSecondStreamPause = 12,
10403 VideoResume = 13,
10404 VideoSecondStreamResume = 14,
10405}
10406
10407impl CameraEventType {
10408 pub fn as_str(&self) -> &'static str {
10410 match self {
10411 CameraEventType::VideoStart => "video_start",
10412 CameraEventType::VideoSplit => "video_split",
10413 CameraEventType::VideoEnd => "video_end",
10414 CameraEventType::PhotoTaken => "photo_taken",
10415 CameraEventType::VideoSecondStreamStart => "video_second_stream_start",
10416 CameraEventType::VideoSecondStreamSplit => "video_second_stream_split",
10417 CameraEventType::VideoSecondStreamEnd => "video_second_stream_end",
10418 CameraEventType::VideoSplitStart => "video_split_start",
10419 CameraEventType::VideoSecondStreamSplitStart => "video_second_stream_split_start",
10420 CameraEventType::VideoPause => "video_pause",
10421 CameraEventType::VideoSecondStreamPause => "video_second_stream_pause",
10422 CameraEventType::VideoResume => "video_resume",
10423 CameraEventType::VideoSecondStreamResume => "video_second_stream_resume",
10424 }
10425 }
10426
10427 pub fn from_value(value: u8) -> Option<Self> {
10429 match value {
10430 0 => Some(CameraEventType::VideoStart),
10431 1 => Some(CameraEventType::VideoSplit),
10432 2 => Some(CameraEventType::VideoEnd),
10433 3 => Some(CameraEventType::PhotoTaken),
10434 4 => Some(CameraEventType::VideoSecondStreamStart),
10435 5 => Some(CameraEventType::VideoSecondStreamSplit),
10436 6 => Some(CameraEventType::VideoSecondStreamEnd),
10437 7 => Some(CameraEventType::VideoSplitStart),
10438 8 => Some(CameraEventType::VideoSecondStreamSplitStart),
10439 11 => Some(CameraEventType::VideoPause),
10440 12 => Some(CameraEventType::VideoSecondStreamPause),
10441 13 => Some(CameraEventType::VideoResume),
10442 14 => Some(CameraEventType::VideoSecondStreamResume),
10443 _ => None,
10444 }
10445 }
10446
10447 pub fn from_str(name: &str) -> Option<Self> {
10449 match name {
10450 "video_start" => Some(CameraEventType::VideoStart),
10451 "video_split" => Some(CameraEventType::VideoSplit),
10452 "video_end" => Some(CameraEventType::VideoEnd),
10453 "photo_taken" => Some(CameraEventType::PhotoTaken),
10454 "video_second_stream_start" => Some(CameraEventType::VideoSecondStreamStart),
10455 "video_second_stream_split" => Some(CameraEventType::VideoSecondStreamSplit),
10456 "video_second_stream_end" => Some(CameraEventType::VideoSecondStreamEnd),
10457 "video_split_start" => Some(CameraEventType::VideoSplitStart),
10458 "video_second_stream_split_start" => Some(CameraEventType::VideoSecondStreamSplitStart),
10459 "video_pause" => Some(CameraEventType::VideoPause),
10460 "video_second_stream_pause" => Some(CameraEventType::VideoSecondStreamPause),
10461 "video_resume" => Some(CameraEventType::VideoResume),
10462 "video_second_stream_resume" => Some(CameraEventType::VideoSecondStreamResume),
10463 _ => None,
10464 }
10465 }
10466}
10467
10468#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10469#[repr(u8)]
10470#[non_exhaustive]
10471pub enum SensorType {
10472 Accelerometer = 0,
10473 Gyroscope = 1,
10474 Compass = 2,
10475 Barometer = 3,
10476}
10477
10478impl SensorType {
10479 pub fn as_str(&self) -> &'static str {
10481 match self {
10482 SensorType::Accelerometer => "accelerometer",
10483 SensorType::Gyroscope => "gyroscope",
10484 SensorType::Compass => "compass",
10485 SensorType::Barometer => "barometer",
10486 }
10487 }
10488
10489 pub fn from_value(value: u8) -> Option<Self> {
10491 match value {
10492 0 => Some(SensorType::Accelerometer),
10493 1 => Some(SensorType::Gyroscope),
10494 2 => Some(SensorType::Compass),
10495 3 => Some(SensorType::Barometer),
10496 _ => None,
10497 }
10498 }
10499
10500 pub fn from_str(name: &str) -> Option<Self> {
10502 match name {
10503 "accelerometer" => Some(SensorType::Accelerometer),
10504 "gyroscope" => Some(SensorType::Gyroscope),
10505 "compass" => Some(SensorType::Compass),
10506 "barometer" => Some(SensorType::Barometer),
10507 _ => None,
10508 }
10509 }
10510}
10511
10512#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10513#[repr(u8)]
10514#[non_exhaustive]
10515pub enum BikeLightNetworkConfigType {
10516 Auto = 0,
10517 Individual = 4,
10518 HighVisibility = 5,
10519 Trail = 6,
10520}
10521
10522impl BikeLightNetworkConfigType {
10523 pub fn as_str(&self) -> &'static str {
10525 match self {
10526 BikeLightNetworkConfigType::Auto => "auto",
10527 BikeLightNetworkConfigType::Individual => "individual",
10528 BikeLightNetworkConfigType::HighVisibility => "high_visibility",
10529 BikeLightNetworkConfigType::Trail => "trail",
10530 }
10531 }
10532
10533 pub fn from_value(value: u8) -> Option<Self> {
10535 match value {
10536 0 => Some(BikeLightNetworkConfigType::Auto),
10537 4 => Some(BikeLightNetworkConfigType::Individual),
10538 5 => Some(BikeLightNetworkConfigType::HighVisibility),
10539 6 => Some(BikeLightNetworkConfigType::Trail),
10540 _ => None,
10541 }
10542 }
10543
10544 pub fn from_str(name: &str) -> Option<Self> {
10546 match name {
10547 "auto" => Some(BikeLightNetworkConfigType::Auto),
10548 "individual" => Some(BikeLightNetworkConfigType::Individual),
10549 "high_visibility" => Some(BikeLightNetworkConfigType::HighVisibility),
10550 "trail" => Some(BikeLightNetworkConfigType::Trail),
10551 _ => None,
10552 }
10553 }
10554}
10555
10556#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10557#[repr(u16)]
10558#[non_exhaustive]
10559pub enum CommTimeoutType {
10560 WildcardPairingTimeout = 0,
10561 PairingTimeout = 1,
10562 ConnectionLost = 2,
10563 ConnectionTimeout = 3,
10564}
10565
10566impl CommTimeoutType {
10567 pub fn as_str(&self) -> &'static str {
10569 match self {
10570 CommTimeoutType::WildcardPairingTimeout => "wildcard_pairing_timeout",
10571 CommTimeoutType::PairingTimeout => "pairing_timeout",
10572 CommTimeoutType::ConnectionLost => "connection_lost",
10573 CommTimeoutType::ConnectionTimeout => "connection_timeout",
10574 }
10575 }
10576
10577 pub fn from_value(value: u16) -> Option<Self> {
10579 match value {
10580 0 => Some(CommTimeoutType::WildcardPairingTimeout),
10581 1 => Some(CommTimeoutType::PairingTimeout),
10582 2 => Some(CommTimeoutType::ConnectionLost),
10583 3 => Some(CommTimeoutType::ConnectionTimeout),
10584 _ => None,
10585 }
10586 }
10587
10588 pub fn from_str(name: &str) -> Option<Self> {
10590 match name {
10591 "wildcard_pairing_timeout" => Some(CommTimeoutType::WildcardPairingTimeout),
10592 "pairing_timeout" => Some(CommTimeoutType::PairingTimeout),
10593 "connection_lost" => Some(CommTimeoutType::ConnectionLost),
10594 "connection_timeout" => Some(CommTimeoutType::ConnectionTimeout),
10595 _ => None,
10596 }
10597 }
10598}
10599
10600#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10601#[repr(u8)]
10602#[non_exhaustive]
10603pub enum CameraOrientationType {
10604 CameraOrientation0 = 0,
10605 CameraOrientation90 = 1,
10606 CameraOrientation180 = 2,
10607 CameraOrientation270 = 3,
10608}
10609
10610impl CameraOrientationType {
10611 pub fn as_str(&self) -> &'static str {
10613 match self {
10614 CameraOrientationType::CameraOrientation0 => "camera_orientation_0",
10615 CameraOrientationType::CameraOrientation90 => "camera_orientation_90",
10616 CameraOrientationType::CameraOrientation180 => "camera_orientation_180",
10617 CameraOrientationType::CameraOrientation270 => "camera_orientation_270",
10618 }
10619 }
10620
10621 pub fn from_value(value: u8) -> Option<Self> {
10623 match value {
10624 0 => Some(CameraOrientationType::CameraOrientation0),
10625 1 => Some(CameraOrientationType::CameraOrientation90),
10626 2 => Some(CameraOrientationType::CameraOrientation180),
10627 3 => Some(CameraOrientationType::CameraOrientation270),
10628 _ => None,
10629 }
10630 }
10631
10632 pub fn from_str(name: &str) -> Option<Self> {
10634 match name {
10635 "camera_orientation_0" => Some(CameraOrientationType::CameraOrientation0),
10636 "camera_orientation_90" => Some(CameraOrientationType::CameraOrientation90),
10637 "camera_orientation_180" => Some(CameraOrientationType::CameraOrientation180),
10638 "camera_orientation_270" => Some(CameraOrientationType::CameraOrientation270),
10639 _ => None,
10640 }
10641 }
10642}
10643
10644#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10645#[repr(u8)]
10646#[non_exhaustive]
10647pub enum AttitudeStage {
10648 Failed = 0,
10649 Aligning = 1,
10650 Degraded = 2,
10651 Valid = 3,
10652}
10653
10654impl AttitudeStage {
10655 pub fn as_str(&self) -> &'static str {
10657 match self {
10658 AttitudeStage::Failed => "failed",
10659 AttitudeStage::Aligning => "aligning",
10660 AttitudeStage::Degraded => "degraded",
10661 AttitudeStage::Valid => "valid",
10662 }
10663 }
10664
10665 pub fn from_value(value: u8) -> Option<Self> {
10667 match value {
10668 0 => Some(AttitudeStage::Failed),
10669 1 => Some(AttitudeStage::Aligning),
10670 2 => Some(AttitudeStage::Degraded),
10671 3 => Some(AttitudeStage::Valid),
10672 _ => None,
10673 }
10674 }
10675
10676 pub fn from_str(name: &str) -> Option<Self> {
10678 match name {
10679 "failed" => Some(AttitudeStage::Failed),
10680 "aligning" => Some(AttitudeStage::Aligning),
10681 "degraded" => Some(AttitudeStage::Degraded),
10682 "valid" => Some(AttitudeStage::Valid),
10683 _ => None,
10684 }
10685 }
10686}
10687
10688#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10689#[repr(u16)]
10690#[non_exhaustive]
10691pub enum AttitudeValidity {
10692 TrackAngleHeadingValid = 1,
10693 PitchValid = 2,
10694 RollValid = 4,
10695 LateralBodyAccelValid = 8,
10696 NormalBodyAccelValid = 16,
10697 TurnRateValid = 32,
10698 HwFail = 64,
10699 MagInvalid = 128,
10700 NoGps = 256,
10701 GpsInvalid = 512,
10702 SolutionCoasting = 1024,
10703 TrueTrackAngle = 2048,
10704 MagneticHeading = 4096,
10705}
10706
10707impl AttitudeValidity {
10708 pub fn as_str(&self) -> &'static str {
10710 match self {
10711 AttitudeValidity::TrackAngleHeadingValid => "track_angle_heading_valid",
10712 AttitudeValidity::PitchValid => "pitch_valid",
10713 AttitudeValidity::RollValid => "roll_valid",
10714 AttitudeValidity::LateralBodyAccelValid => "lateral_body_accel_valid",
10715 AttitudeValidity::NormalBodyAccelValid => "normal_body_accel_valid",
10716 AttitudeValidity::TurnRateValid => "turn_rate_valid",
10717 AttitudeValidity::HwFail => "hw_fail",
10718 AttitudeValidity::MagInvalid => "mag_invalid",
10719 AttitudeValidity::NoGps => "no_gps",
10720 AttitudeValidity::GpsInvalid => "gps_invalid",
10721 AttitudeValidity::SolutionCoasting => "solution_coasting",
10722 AttitudeValidity::TrueTrackAngle => "true_track_angle",
10723 AttitudeValidity::MagneticHeading => "magnetic_heading",
10724 }
10725 }
10726
10727 pub fn from_value(value: u16) -> Option<Self> {
10729 match value {
10730 1 => Some(AttitudeValidity::TrackAngleHeadingValid),
10731 2 => Some(AttitudeValidity::PitchValid),
10732 4 => Some(AttitudeValidity::RollValid),
10733 8 => Some(AttitudeValidity::LateralBodyAccelValid),
10734 16 => Some(AttitudeValidity::NormalBodyAccelValid),
10735 32 => Some(AttitudeValidity::TurnRateValid),
10736 64 => Some(AttitudeValidity::HwFail),
10737 128 => Some(AttitudeValidity::MagInvalid),
10738 256 => Some(AttitudeValidity::NoGps),
10739 512 => Some(AttitudeValidity::GpsInvalid),
10740 1024 => Some(AttitudeValidity::SolutionCoasting),
10741 2048 => Some(AttitudeValidity::TrueTrackAngle),
10742 4096 => Some(AttitudeValidity::MagneticHeading),
10743 _ => None,
10744 }
10745 }
10746
10747 pub fn from_str(name: &str) -> Option<Self> {
10749 match name {
10750 "track_angle_heading_valid" => Some(AttitudeValidity::TrackAngleHeadingValid),
10751 "pitch_valid" => Some(AttitudeValidity::PitchValid),
10752 "roll_valid" => Some(AttitudeValidity::RollValid),
10753 "lateral_body_accel_valid" => Some(AttitudeValidity::LateralBodyAccelValid),
10754 "normal_body_accel_valid" => Some(AttitudeValidity::NormalBodyAccelValid),
10755 "turn_rate_valid" => Some(AttitudeValidity::TurnRateValid),
10756 "hw_fail" => Some(AttitudeValidity::HwFail),
10757 "mag_invalid" => Some(AttitudeValidity::MagInvalid),
10758 "no_gps" => Some(AttitudeValidity::NoGps),
10759 "gps_invalid" => Some(AttitudeValidity::GpsInvalid),
10760 "solution_coasting" => Some(AttitudeValidity::SolutionCoasting),
10761 "true_track_angle" => Some(AttitudeValidity::TrueTrackAngle),
10762 "magnetic_heading" => Some(AttitudeValidity::MagneticHeading),
10763 _ => None,
10764 }
10765 }
10766}
10767
10768#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10769#[repr(u8)]
10770#[non_exhaustive]
10771pub enum AutoSyncFrequency {
10772 Never = 0,
10773 Occasionally = 1,
10774 Frequent = 2,
10775 OnceADay = 3,
10776 Remote = 4,
10777}
10778
10779impl AutoSyncFrequency {
10780 pub fn as_str(&self) -> &'static str {
10782 match self {
10783 AutoSyncFrequency::Never => "never",
10784 AutoSyncFrequency::Occasionally => "occasionally",
10785 AutoSyncFrequency::Frequent => "frequent",
10786 AutoSyncFrequency::OnceADay => "once_a_day",
10787 AutoSyncFrequency::Remote => "remote",
10788 }
10789 }
10790
10791 pub fn from_value(value: u8) -> Option<Self> {
10793 match value {
10794 0 => Some(AutoSyncFrequency::Never),
10795 1 => Some(AutoSyncFrequency::Occasionally),
10796 2 => Some(AutoSyncFrequency::Frequent),
10797 3 => Some(AutoSyncFrequency::OnceADay),
10798 4 => Some(AutoSyncFrequency::Remote),
10799 _ => None,
10800 }
10801 }
10802
10803 pub fn from_str(name: &str) -> Option<Self> {
10805 match name {
10806 "never" => Some(AutoSyncFrequency::Never),
10807 "occasionally" => Some(AutoSyncFrequency::Occasionally),
10808 "frequent" => Some(AutoSyncFrequency::Frequent),
10809 "once_a_day" => Some(AutoSyncFrequency::OnceADay),
10810 "remote" => Some(AutoSyncFrequency::Remote),
10811 _ => None,
10812 }
10813 }
10814}
10815
10816#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10817#[repr(u8)]
10818#[non_exhaustive]
10819pub enum ExdLayout {
10820 FullScreen = 0,
10821 HalfVertical = 1,
10822 HalfHorizontal = 2,
10823 HalfVerticalRightSplit = 3,
10824 HalfHorizontalBottomSplit = 4,
10825 FullQuarterSplit = 5,
10826 HalfVerticalLeftSplit = 6,
10827 HalfHorizontalTopSplit = 7,
10828 Dynamic = 8,
10829}
10830
10831impl ExdLayout {
10832 pub fn as_str(&self) -> &'static str {
10834 match self {
10835 ExdLayout::FullScreen => "full_screen",
10836 ExdLayout::HalfVertical => "half_vertical",
10837 ExdLayout::HalfHorizontal => "half_horizontal",
10838 ExdLayout::HalfVerticalRightSplit => "half_vertical_right_split",
10839 ExdLayout::HalfHorizontalBottomSplit => "half_horizontal_bottom_split",
10840 ExdLayout::FullQuarterSplit => "full_quarter_split",
10841 ExdLayout::HalfVerticalLeftSplit => "half_vertical_left_split",
10842 ExdLayout::HalfHorizontalTopSplit => "half_horizontal_top_split",
10843 ExdLayout::Dynamic => "dynamic",
10844 }
10845 }
10846
10847 pub fn from_value(value: u8) -> Option<Self> {
10849 match value {
10850 0 => Some(ExdLayout::FullScreen),
10851 1 => Some(ExdLayout::HalfVertical),
10852 2 => Some(ExdLayout::HalfHorizontal),
10853 3 => Some(ExdLayout::HalfVerticalRightSplit),
10854 4 => Some(ExdLayout::HalfHorizontalBottomSplit),
10855 5 => Some(ExdLayout::FullQuarterSplit),
10856 6 => Some(ExdLayout::HalfVerticalLeftSplit),
10857 7 => Some(ExdLayout::HalfHorizontalTopSplit),
10858 8 => Some(ExdLayout::Dynamic),
10859 _ => None,
10860 }
10861 }
10862
10863 pub fn from_str(name: &str) -> Option<Self> {
10865 match name {
10866 "full_screen" => Some(ExdLayout::FullScreen),
10867 "half_vertical" => Some(ExdLayout::HalfVertical),
10868 "half_horizontal" => Some(ExdLayout::HalfHorizontal),
10869 "half_vertical_right_split" => Some(ExdLayout::HalfVerticalRightSplit),
10870 "half_horizontal_bottom_split" => Some(ExdLayout::HalfHorizontalBottomSplit),
10871 "full_quarter_split" => Some(ExdLayout::FullQuarterSplit),
10872 "half_vertical_left_split" => Some(ExdLayout::HalfVerticalLeftSplit),
10873 "half_horizontal_top_split" => Some(ExdLayout::HalfHorizontalTopSplit),
10874 "dynamic" => Some(ExdLayout::Dynamic),
10875 _ => None,
10876 }
10877 }
10878}
10879
10880#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10881#[repr(u8)]
10882#[non_exhaustive]
10883pub enum ExdDisplayType {
10884 Numerical = 0,
10885 Simple = 1,
10886 Graph = 2,
10887 Bar = 3,
10888 CircleGraph = 4,
10889 VirtualPartner = 5,
10890 Balance = 6,
10891 StringList = 7,
10892 String = 8,
10893 SimpleDynamicIcon = 9,
10894 Gauge = 10,
10895}
10896
10897impl ExdDisplayType {
10898 pub fn as_str(&self) -> &'static str {
10900 match self {
10901 ExdDisplayType::Numerical => "numerical",
10902 ExdDisplayType::Simple => "simple",
10903 ExdDisplayType::Graph => "graph",
10904 ExdDisplayType::Bar => "bar",
10905 ExdDisplayType::CircleGraph => "circle_graph",
10906 ExdDisplayType::VirtualPartner => "virtual_partner",
10907 ExdDisplayType::Balance => "balance",
10908 ExdDisplayType::StringList => "string_list",
10909 ExdDisplayType::String => "string",
10910 ExdDisplayType::SimpleDynamicIcon => "simple_dynamic_icon",
10911 ExdDisplayType::Gauge => "gauge",
10912 }
10913 }
10914
10915 pub fn from_value(value: u8) -> Option<Self> {
10917 match value {
10918 0 => Some(ExdDisplayType::Numerical),
10919 1 => Some(ExdDisplayType::Simple),
10920 2 => Some(ExdDisplayType::Graph),
10921 3 => Some(ExdDisplayType::Bar),
10922 4 => Some(ExdDisplayType::CircleGraph),
10923 5 => Some(ExdDisplayType::VirtualPartner),
10924 6 => Some(ExdDisplayType::Balance),
10925 7 => Some(ExdDisplayType::StringList),
10926 8 => Some(ExdDisplayType::String),
10927 9 => Some(ExdDisplayType::SimpleDynamicIcon),
10928 10 => Some(ExdDisplayType::Gauge),
10929 _ => None,
10930 }
10931 }
10932
10933 pub fn from_str(name: &str) -> Option<Self> {
10935 match name {
10936 "numerical" => Some(ExdDisplayType::Numerical),
10937 "simple" => Some(ExdDisplayType::Simple),
10938 "graph" => Some(ExdDisplayType::Graph),
10939 "bar" => Some(ExdDisplayType::Bar),
10940 "circle_graph" => Some(ExdDisplayType::CircleGraph),
10941 "virtual_partner" => Some(ExdDisplayType::VirtualPartner),
10942 "balance" => Some(ExdDisplayType::Balance),
10943 "string_list" => Some(ExdDisplayType::StringList),
10944 "string" => Some(ExdDisplayType::String),
10945 "simple_dynamic_icon" => Some(ExdDisplayType::SimpleDynamicIcon),
10946 "gauge" => Some(ExdDisplayType::Gauge),
10947 _ => None,
10948 }
10949 }
10950}
10951
10952#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10953#[repr(u8)]
10954#[non_exhaustive]
10955pub enum ExdDataUnits {
10956 NoUnits = 0,
10957 Laps = 1,
10958 MilesPerHour = 2,
10959 KilometersPerHour = 3,
10960 FeetPerHour = 4,
10961 MetersPerHour = 5,
10962 DegreesCelsius = 6,
10963 DegreesFarenheit = 7,
10964 Zone = 8,
10965 Gear = 9,
10966 Rpm = 10,
10967 Bpm = 11,
10968 Degrees = 12,
10969 Millimeters = 13,
10970 Meters = 14,
10971 Kilometers = 15,
10972 Feet = 16,
10973 Yards = 17,
10974 Kilofeet = 18,
10975 Miles = 19,
10976 Time = 20,
10977 EnumTurnType = 21,
10978 Percent = 22,
10979 Watts = 23,
10980 WattsPerKilogram = 24,
10981 EnumBatteryStatus = 25,
10982 EnumBikeLightBeamAngleMode = 26,
10983 EnumBikeLightBatteryStatus = 27,
10984 EnumBikeLightNetworkConfigType = 28,
10985 Lights = 29,
10986 Seconds = 30,
10987 Minutes = 31,
10988 Hours = 32,
10989 Calories = 33,
10990 Kilojoules = 34,
10991 Milliseconds = 35,
10992 SecondPerMile = 36,
10993 SecondPerKilometer = 37,
10994 Centimeter = 38,
10995 EnumCoursePoint = 39,
10996 Bradians = 40,
10997 EnumSport = 41,
10998 InchesHg = 42,
10999 MmHg = 43,
11000 Mbars = 44,
11001 HectoPascals = 45,
11002 FeetPerMin = 46,
11003 MetersPerMin = 47,
11004 MetersPerSec = 48,
11005 EightCardinal = 49,
11006}
11007
11008impl ExdDataUnits {
11009 pub fn as_str(&self) -> &'static str {
11011 match self {
11012 ExdDataUnits::NoUnits => "no_units",
11013 ExdDataUnits::Laps => "laps",
11014 ExdDataUnits::MilesPerHour => "miles_per_hour",
11015 ExdDataUnits::KilometersPerHour => "kilometers_per_hour",
11016 ExdDataUnits::FeetPerHour => "feet_per_hour",
11017 ExdDataUnits::MetersPerHour => "meters_per_hour",
11018 ExdDataUnits::DegreesCelsius => "degrees_celsius",
11019 ExdDataUnits::DegreesFarenheit => "degrees_farenheit",
11020 ExdDataUnits::Zone => "zone",
11021 ExdDataUnits::Gear => "gear",
11022 ExdDataUnits::Rpm => "rpm",
11023 ExdDataUnits::Bpm => "bpm",
11024 ExdDataUnits::Degrees => "degrees",
11025 ExdDataUnits::Millimeters => "millimeters",
11026 ExdDataUnits::Meters => "meters",
11027 ExdDataUnits::Kilometers => "kilometers",
11028 ExdDataUnits::Feet => "feet",
11029 ExdDataUnits::Yards => "yards",
11030 ExdDataUnits::Kilofeet => "kilofeet",
11031 ExdDataUnits::Miles => "miles",
11032 ExdDataUnits::Time => "time",
11033 ExdDataUnits::EnumTurnType => "enum_turn_type",
11034 ExdDataUnits::Percent => "percent",
11035 ExdDataUnits::Watts => "watts",
11036 ExdDataUnits::WattsPerKilogram => "watts_per_kilogram",
11037 ExdDataUnits::EnumBatteryStatus => "enum_battery_status",
11038 ExdDataUnits::EnumBikeLightBeamAngleMode => "enum_bike_light_beam_angle_mode",
11039 ExdDataUnits::EnumBikeLightBatteryStatus => "enum_bike_light_battery_status",
11040 ExdDataUnits::EnumBikeLightNetworkConfigType => "enum_bike_light_network_config_type",
11041 ExdDataUnits::Lights => "lights",
11042 ExdDataUnits::Seconds => "seconds",
11043 ExdDataUnits::Minutes => "minutes",
11044 ExdDataUnits::Hours => "hours",
11045 ExdDataUnits::Calories => "calories",
11046 ExdDataUnits::Kilojoules => "kilojoules",
11047 ExdDataUnits::Milliseconds => "milliseconds",
11048 ExdDataUnits::SecondPerMile => "second_per_mile",
11049 ExdDataUnits::SecondPerKilometer => "second_per_kilometer",
11050 ExdDataUnits::Centimeter => "centimeter",
11051 ExdDataUnits::EnumCoursePoint => "enum_course_point",
11052 ExdDataUnits::Bradians => "bradians",
11053 ExdDataUnits::EnumSport => "enum_sport",
11054 ExdDataUnits::InchesHg => "inches_hg",
11055 ExdDataUnits::MmHg => "mm_hg",
11056 ExdDataUnits::Mbars => "mbars",
11057 ExdDataUnits::HectoPascals => "hecto_pascals",
11058 ExdDataUnits::FeetPerMin => "feet_per_min",
11059 ExdDataUnits::MetersPerMin => "meters_per_min",
11060 ExdDataUnits::MetersPerSec => "meters_per_sec",
11061 ExdDataUnits::EightCardinal => "eight_cardinal",
11062 }
11063 }
11064
11065 pub fn from_value(value: u8) -> Option<Self> {
11067 match value {
11068 0 => Some(ExdDataUnits::NoUnits),
11069 1 => Some(ExdDataUnits::Laps),
11070 2 => Some(ExdDataUnits::MilesPerHour),
11071 3 => Some(ExdDataUnits::KilometersPerHour),
11072 4 => Some(ExdDataUnits::FeetPerHour),
11073 5 => Some(ExdDataUnits::MetersPerHour),
11074 6 => Some(ExdDataUnits::DegreesCelsius),
11075 7 => Some(ExdDataUnits::DegreesFarenheit),
11076 8 => Some(ExdDataUnits::Zone),
11077 9 => Some(ExdDataUnits::Gear),
11078 10 => Some(ExdDataUnits::Rpm),
11079 11 => Some(ExdDataUnits::Bpm),
11080 12 => Some(ExdDataUnits::Degrees),
11081 13 => Some(ExdDataUnits::Millimeters),
11082 14 => Some(ExdDataUnits::Meters),
11083 15 => Some(ExdDataUnits::Kilometers),
11084 16 => Some(ExdDataUnits::Feet),
11085 17 => Some(ExdDataUnits::Yards),
11086 18 => Some(ExdDataUnits::Kilofeet),
11087 19 => Some(ExdDataUnits::Miles),
11088 20 => Some(ExdDataUnits::Time),
11089 21 => Some(ExdDataUnits::EnumTurnType),
11090 22 => Some(ExdDataUnits::Percent),
11091 23 => Some(ExdDataUnits::Watts),
11092 24 => Some(ExdDataUnits::WattsPerKilogram),
11093 25 => Some(ExdDataUnits::EnumBatteryStatus),
11094 26 => Some(ExdDataUnits::EnumBikeLightBeamAngleMode),
11095 27 => Some(ExdDataUnits::EnumBikeLightBatteryStatus),
11096 28 => Some(ExdDataUnits::EnumBikeLightNetworkConfigType),
11097 29 => Some(ExdDataUnits::Lights),
11098 30 => Some(ExdDataUnits::Seconds),
11099 31 => Some(ExdDataUnits::Minutes),
11100 32 => Some(ExdDataUnits::Hours),
11101 33 => Some(ExdDataUnits::Calories),
11102 34 => Some(ExdDataUnits::Kilojoules),
11103 35 => Some(ExdDataUnits::Milliseconds),
11104 36 => Some(ExdDataUnits::SecondPerMile),
11105 37 => Some(ExdDataUnits::SecondPerKilometer),
11106 38 => Some(ExdDataUnits::Centimeter),
11107 39 => Some(ExdDataUnits::EnumCoursePoint),
11108 40 => Some(ExdDataUnits::Bradians),
11109 41 => Some(ExdDataUnits::EnumSport),
11110 42 => Some(ExdDataUnits::InchesHg),
11111 43 => Some(ExdDataUnits::MmHg),
11112 44 => Some(ExdDataUnits::Mbars),
11113 45 => Some(ExdDataUnits::HectoPascals),
11114 46 => Some(ExdDataUnits::FeetPerMin),
11115 47 => Some(ExdDataUnits::MetersPerMin),
11116 48 => Some(ExdDataUnits::MetersPerSec),
11117 49 => Some(ExdDataUnits::EightCardinal),
11118 _ => None,
11119 }
11120 }
11121
11122 pub fn from_str(name: &str) -> Option<Self> {
11124 match name {
11125 "no_units" => Some(ExdDataUnits::NoUnits),
11126 "laps" => Some(ExdDataUnits::Laps),
11127 "miles_per_hour" => Some(ExdDataUnits::MilesPerHour),
11128 "kilometers_per_hour" => Some(ExdDataUnits::KilometersPerHour),
11129 "feet_per_hour" => Some(ExdDataUnits::FeetPerHour),
11130 "meters_per_hour" => Some(ExdDataUnits::MetersPerHour),
11131 "degrees_celsius" => Some(ExdDataUnits::DegreesCelsius),
11132 "degrees_farenheit" => Some(ExdDataUnits::DegreesFarenheit),
11133 "zone" => Some(ExdDataUnits::Zone),
11134 "gear" => Some(ExdDataUnits::Gear),
11135 "rpm" => Some(ExdDataUnits::Rpm),
11136 "bpm" => Some(ExdDataUnits::Bpm),
11137 "degrees" => Some(ExdDataUnits::Degrees),
11138 "millimeters" => Some(ExdDataUnits::Millimeters),
11139 "meters" => Some(ExdDataUnits::Meters),
11140 "kilometers" => Some(ExdDataUnits::Kilometers),
11141 "feet" => Some(ExdDataUnits::Feet),
11142 "yards" => Some(ExdDataUnits::Yards),
11143 "kilofeet" => Some(ExdDataUnits::Kilofeet),
11144 "miles" => Some(ExdDataUnits::Miles),
11145 "time" => Some(ExdDataUnits::Time),
11146 "enum_turn_type" => Some(ExdDataUnits::EnumTurnType),
11147 "percent" => Some(ExdDataUnits::Percent),
11148 "watts" => Some(ExdDataUnits::Watts),
11149 "watts_per_kilogram" => Some(ExdDataUnits::WattsPerKilogram),
11150 "enum_battery_status" => Some(ExdDataUnits::EnumBatteryStatus),
11151 "enum_bike_light_beam_angle_mode" => Some(ExdDataUnits::EnumBikeLightBeamAngleMode),
11152 "enum_bike_light_battery_status" => Some(ExdDataUnits::EnumBikeLightBatteryStatus),
11153 "enum_bike_light_network_config_type" => {
11154 Some(ExdDataUnits::EnumBikeLightNetworkConfigType)
11155 }
11156 "lights" => Some(ExdDataUnits::Lights),
11157 "seconds" => Some(ExdDataUnits::Seconds),
11158 "minutes" => Some(ExdDataUnits::Minutes),
11159 "hours" => Some(ExdDataUnits::Hours),
11160 "calories" => Some(ExdDataUnits::Calories),
11161 "kilojoules" => Some(ExdDataUnits::Kilojoules),
11162 "milliseconds" => Some(ExdDataUnits::Milliseconds),
11163 "second_per_mile" => Some(ExdDataUnits::SecondPerMile),
11164 "second_per_kilometer" => Some(ExdDataUnits::SecondPerKilometer),
11165 "centimeter" => Some(ExdDataUnits::Centimeter),
11166 "enum_course_point" => Some(ExdDataUnits::EnumCoursePoint),
11167 "bradians" => Some(ExdDataUnits::Bradians),
11168 "enum_sport" => Some(ExdDataUnits::EnumSport),
11169 "inches_hg" => Some(ExdDataUnits::InchesHg),
11170 "mm_hg" => Some(ExdDataUnits::MmHg),
11171 "mbars" => Some(ExdDataUnits::Mbars),
11172 "hecto_pascals" => Some(ExdDataUnits::HectoPascals),
11173 "feet_per_min" => Some(ExdDataUnits::FeetPerMin),
11174 "meters_per_min" => Some(ExdDataUnits::MetersPerMin),
11175 "meters_per_sec" => Some(ExdDataUnits::MetersPerSec),
11176 "eight_cardinal" => Some(ExdDataUnits::EightCardinal),
11177 _ => None,
11178 }
11179 }
11180}
11181
11182#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11183#[repr(u8)]
11184#[non_exhaustive]
11185pub enum ExdQualifiers {
11186 NoQualifier = 0,
11187 Instantaneous = 1,
11188 Average = 2,
11189 Lap = 3,
11190 Maximum = 4,
11191 MaximumAverage = 5,
11192 MaximumLap = 6,
11193 LastLap = 7,
11194 AverageLap = 8,
11195 ToDestination = 9,
11196 ToGo = 10,
11197 ToNext = 11,
11198 NextCoursePoint = 12,
11199 Total = 13,
11200 ThreeSecondAverage = 14,
11201 TenSecondAverage = 15,
11202 ThirtySecondAverage = 16,
11203 PercentMaximum = 17,
11204 PercentMaximumAverage = 18,
11205 LapPercentMaximum = 19,
11206 Elapsed = 20,
11207 Sunrise = 21,
11208 Sunset = 22,
11209 ComparedToVirtualPartner = 23,
11210 Maximum24h = 24,
11211 Minimum24h = 25,
11212 Minimum = 26,
11213 First = 27,
11214 Second = 28,
11215 Third = 29,
11216 Shifter = 30,
11217 LastSport = 31,
11218 Moving = 32,
11219 Stopped = 33,
11220 EstimatedTotal = 34,
11221 Zone9 = 242,
11222 Zone8 = 243,
11223 Zone7 = 244,
11224 Zone6 = 245,
11225 Zone5 = 246,
11226 Zone4 = 247,
11227 Zone3 = 248,
11228 Zone2 = 249,
11229 Zone1 = 250,
11230}
11231
11232impl ExdQualifiers {
11233 pub fn as_str(&self) -> &'static str {
11235 match self {
11236 ExdQualifiers::NoQualifier => "no_qualifier",
11237 ExdQualifiers::Instantaneous => "instantaneous",
11238 ExdQualifiers::Average => "average",
11239 ExdQualifiers::Lap => "lap",
11240 ExdQualifiers::Maximum => "maximum",
11241 ExdQualifiers::MaximumAverage => "maximum_average",
11242 ExdQualifiers::MaximumLap => "maximum_lap",
11243 ExdQualifiers::LastLap => "last_lap",
11244 ExdQualifiers::AverageLap => "average_lap",
11245 ExdQualifiers::ToDestination => "to_destination",
11246 ExdQualifiers::ToGo => "to_go",
11247 ExdQualifiers::ToNext => "to_next",
11248 ExdQualifiers::NextCoursePoint => "next_course_point",
11249 ExdQualifiers::Total => "total",
11250 ExdQualifiers::ThreeSecondAverage => "three_second_average",
11251 ExdQualifiers::TenSecondAverage => "ten_second_average",
11252 ExdQualifiers::ThirtySecondAverage => "thirty_second_average",
11253 ExdQualifiers::PercentMaximum => "percent_maximum",
11254 ExdQualifiers::PercentMaximumAverage => "percent_maximum_average",
11255 ExdQualifiers::LapPercentMaximum => "lap_percent_maximum",
11256 ExdQualifiers::Elapsed => "elapsed",
11257 ExdQualifiers::Sunrise => "sunrise",
11258 ExdQualifiers::Sunset => "sunset",
11259 ExdQualifiers::ComparedToVirtualPartner => "compared_to_virtual_partner",
11260 ExdQualifiers::Maximum24h => "maximum_24h",
11261 ExdQualifiers::Minimum24h => "minimum_24h",
11262 ExdQualifiers::Minimum => "minimum",
11263 ExdQualifiers::First => "first",
11264 ExdQualifiers::Second => "second",
11265 ExdQualifiers::Third => "third",
11266 ExdQualifiers::Shifter => "shifter",
11267 ExdQualifiers::LastSport => "last_sport",
11268 ExdQualifiers::Moving => "moving",
11269 ExdQualifiers::Stopped => "stopped",
11270 ExdQualifiers::EstimatedTotal => "estimated_total",
11271 ExdQualifiers::Zone9 => "zone_9",
11272 ExdQualifiers::Zone8 => "zone_8",
11273 ExdQualifiers::Zone7 => "zone_7",
11274 ExdQualifiers::Zone6 => "zone_6",
11275 ExdQualifiers::Zone5 => "zone_5",
11276 ExdQualifiers::Zone4 => "zone_4",
11277 ExdQualifiers::Zone3 => "zone_3",
11278 ExdQualifiers::Zone2 => "zone_2",
11279 ExdQualifiers::Zone1 => "zone_1",
11280 }
11281 }
11282
11283 pub fn from_value(value: u8) -> Option<Self> {
11285 match value {
11286 0 => Some(ExdQualifiers::NoQualifier),
11287 1 => Some(ExdQualifiers::Instantaneous),
11288 2 => Some(ExdQualifiers::Average),
11289 3 => Some(ExdQualifiers::Lap),
11290 4 => Some(ExdQualifiers::Maximum),
11291 5 => Some(ExdQualifiers::MaximumAverage),
11292 6 => Some(ExdQualifiers::MaximumLap),
11293 7 => Some(ExdQualifiers::LastLap),
11294 8 => Some(ExdQualifiers::AverageLap),
11295 9 => Some(ExdQualifiers::ToDestination),
11296 10 => Some(ExdQualifiers::ToGo),
11297 11 => Some(ExdQualifiers::ToNext),
11298 12 => Some(ExdQualifiers::NextCoursePoint),
11299 13 => Some(ExdQualifiers::Total),
11300 14 => Some(ExdQualifiers::ThreeSecondAverage),
11301 15 => Some(ExdQualifiers::TenSecondAverage),
11302 16 => Some(ExdQualifiers::ThirtySecondAverage),
11303 17 => Some(ExdQualifiers::PercentMaximum),
11304 18 => Some(ExdQualifiers::PercentMaximumAverage),
11305 19 => Some(ExdQualifiers::LapPercentMaximum),
11306 20 => Some(ExdQualifiers::Elapsed),
11307 21 => Some(ExdQualifiers::Sunrise),
11308 22 => Some(ExdQualifiers::Sunset),
11309 23 => Some(ExdQualifiers::ComparedToVirtualPartner),
11310 24 => Some(ExdQualifiers::Maximum24h),
11311 25 => Some(ExdQualifiers::Minimum24h),
11312 26 => Some(ExdQualifiers::Minimum),
11313 27 => Some(ExdQualifiers::First),
11314 28 => Some(ExdQualifiers::Second),
11315 29 => Some(ExdQualifiers::Third),
11316 30 => Some(ExdQualifiers::Shifter),
11317 31 => Some(ExdQualifiers::LastSport),
11318 32 => Some(ExdQualifiers::Moving),
11319 33 => Some(ExdQualifiers::Stopped),
11320 34 => Some(ExdQualifiers::EstimatedTotal),
11321 242 => Some(ExdQualifiers::Zone9),
11322 243 => Some(ExdQualifiers::Zone8),
11323 244 => Some(ExdQualifiers::Zone7),
11324 245 => Some(ExdQualifiers::Zone6),
11325 246 => Some(ExdQualifiers::Zone5),
11326 247 => Some(ExdQualifiers::Zone4),
11327 248 => Some(ExdQualifiers::Zone3),
11328 249 => Some(ExdQualifiers::Zone2),
11329 250 => Some(ExdQualifiers::Zone1),
11330 _ => None,
11331 }
11332 }
11333
11334 pub fn from_str(name: &str) -> Option<Self> {
11336 match name {
11337 "no_qualifier" => Some(ExdQualifiers::NoQualifier),
11338 "instantaneous" => Some(ExdQualifiers::Instantaneous),
11339 "average" => Some(ExdQualifiers::Average),
11340 "lap" => Some(ExdQualifiers::Lap),
11341 "maximum" => Some(ExdQualifiers::Maximum),
11342 "maximum_average" => Some(ExdQualifiers::MaximumAverage),
11343 "maximum_lap" => Some(ExdQualifiers::MaximumLap),
11344 "last_lap" => Some(ExdQualifiers::LastLap),
11345 "average_lap" => Some(ExdQualifiers::AverageLap),
11346 "to_destination" => Some(ExdQualifiers::ToDestination),
11347 "to_go" => Some(ExdQualifiers::ToGo),
11348 "to_next" => Some(ExdQualifiers::ToNext),
11349 "next_course_point" => Some(ExdQualifiers::NextCoursePoint),
11350 "total" => Some(ExdQualifiers::Total),
11351 "three_second_average" => Some(ExdQualifiers::ThreeSecondAverage),
11352 "ten_second_average" => Some(ExdQualifiers::TenSecondAverage),
11353 "thirty_second_average" => Some(ExdQualifiers::ThirtySecondAverage),
11354 "percent_maximum" => Some(ExdQualifiers::PercentMaximum),
11355 "percent_maximum_average" => Some(ExdQualifiers::PercentMaximumAverage),
11356 "lap_percent_maximum" => Some(ExdQualifiers::LapPercentMaximum),
11357 "elapsed" => Some(ExdQualifiers::Elapsed),
11358 "sunrise" => Some(ExdQualifiers::Sunrise),
11359 "sunset" => Some(ExdQualifiers::Sunset),
11360 "compared_to_virtual_partner" => Some(ExdQualifiers::ComparedToVirtualPartner),
11361 "maximum_24h" => Some(ExdQualifiers::Maximum24h),
11362 "minimum_24h" => Some(ExdQualifiers::Minimum24h),
11363 "minimum" => Some(ExdQualifiers::Minimum),
11364 "first" => Some(ExdQualifiers::First),
11365 "second" => Some(ExdQualifiers::Second),
11366 "third" => Some(ExdQualifiers::Third),
11367 "shifter" => Some(ExdQualifiers::Shifter),
11368 "last_sport" => Some(ExdQualifiers::LastSport),
11369 "moving" => Some(ExdQualifiers::Moving),
11370 "stopped" => Some(ExdQualifiers::Stopped),
11371 "estimated_total" => Some(ExdQualifiers::EstimatedTotal),
11372 "zone_9" => Some(ExdQualifiers::Zone9),
11373 "zone_8" => Some(ExdQualifiers::Zone8),
11374 "zone_7" => Some(ExdQualifiers::Zone7),
11375 "zone_6" => Some(ExdQualifiers::Zone6),
11376 "zone_5" => Some(ExdQualifiers::Zone5),
11377 "zone_4" => Some(ExdQualifiers::Zone4),
11378 "zone_3" => Some(ExdQualifiers::Zone3),
11379 "zone_2" => Some(ExdQualifiers::Zone2),
11380 "zone_1" => Some(ExdQualifiers::Zone1),
11381 _ => None,
11382 }
11383 }
11384}
11385
11386#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11387#[repr(u8)]
11388#[non_exhaustive]
11389pub enum ExdDescriptors {
11390 BikeLightBatteryStatus = 0,
11391 BeamAngleStatus = 1,
11392 BateryLevel = 2,
11393 LightNetworkMode = 3,
11394 NumberLightsConnected = 4,
11395 Cadence = 5,
11396 Distance = 6,
11397 EstimatedTimeOfArrival = 7,
11398 Heading = 8,
11399 Time = 9,
11400 BatteryLevel = 10,
11401 TrainerResistance = 11,
11402 TrainerTargetPower = 12,
11403 TimeSeated = 13,
11404 TimeStanding = 14,
11405 Elevation = 15,
11406 Grade = 16,
11407 Ascent = 17,
11408 Descent = 18,
11409 VerticalSpeed = 19,
11410 Di2BatteryLevel = 20,
11411 FrontGear = 21,
11412 RearGear = 22,
11413 GearRatio = 23,
11414 HeartRate = 24,
11415 HeartRateZone = 25,
11416 TimeInHeartRateZone = 26,
11417 HeartRateReserve = 27,
11418 Calories = 28,
11419 GpsAccuracy = 29,
11420 GpsSignalStrength = 30,
11421 Temperature = 31,
11422 TimeOfDay = 32,
11423 Balance = 33,
11424 PedalSmoothness = 34,
11425 Power = 35,
11426 FunctionalThresholdPower = 36,
11427 IntensityFactor = 37,
11428 Work = 38,
11429 PowerRatio = 39,
11430 NormalizedPower = 40,
11431 TrainingStressScore = 41,
11432 TimeOnZone = 42,
11433 Speed = 43,
11434 Laps = 44,
11435 Reps = 45,
11436 WorkoutStep = 46,
11437 CourseDistance = 47,
11438 NavigationDistance = 48,
11439 CourseEstimatedTimeOfArrival = 49,
11440 NavigationEstimatedTimeOfArrival = 50,
11441 CourseTime = 51,
11442 NavigationTime = 52,
11443 CourseHeading = 53,
11444 NavigationHeading = 54,
11445 PowerZone = 55,
11446 TorqueEffectiveness = 56,
11447 TimerTime = 57,
11448 PowerWeightRatio = 58,
11449 LeftPlatformCenterOffset = 59,
11450 RightPlatformCenterOffset = 60,
11451 LeftPowerPhaseStartAngle = 61,
11452 RightPowerPhaseStartAngle = 62,
11453 LeftPowerPhaseFinishAngle = 63,
11454 RightPowerPhaseFinishAngle = 64,
11455 Gears = 65,
11456 Pace = 66,
11457 TrainingEffect = 67,
11458 VerticalOscillation = 68,
11459 VerticalRatio = 69,
11460 GroundContactTime = 70,
11461 LeftGroundContactTimeBalance = 71,
11462 RightGroundContactTimeBalance = 72,
11463 StrideLength = 73,
11464 RunningCadence = 74,
11465 PerformanceCondition = 75,
11466 CourseType = 76,
11467 TimeInPowerZone = 77,
11468 NavigationTurn = 78,
11469 CourseLocation = 79,
11470 NavigationLocation = 80,
11471 Compass = 81,
11472 GearCombo = 82,
11473 MuscleOxygen = 83,
11474 Icon = 84,
11475 CompassHeading = 85,
11476 GpsHeading = 86,
11477 GpsElevation = 87,
11478 AnaerobicTrainingEffect = 88,
11479 Course = 89,
11480 OffCourse = 90,
11481 GlideRatio = 91,
11482 VerticalDistance = 92,
11483 Vmg = 93,
11484 AmbientPressure = 94,
11485 Pressure = 95,
11486 Vam = 96,
11487}
11488
11489impl ExdDescriptors {
11490 pub fn as_str(&self) -> &'static str {
11492 match self {
11493 ExdDescriptors::BikeLightBatteryStatus => "bike_light_battery_status",
11494 ExdDescriptors::BeamAngleStatus => "beam_angle_status",
11495 ExdDescriptors::BateryLevel => "batery_level",
11496 ExdDescriptors::LightNetworkMode => "light_network_mode",
11497 ExdDescriptors::NumberLightsConnected => "number_lights_connected",
11498 ExdDescriptors::Cadence => "cadence",
11499 ExdDescriptors::Distance => "distance",
11500 ExdDescriptors::EstimatedTimeOfArrival => "estimated_time_of_arrival",
11501 ExdDescriptors::Heading => "heading",
11502 ExdDescriptors::Time => "time",
11503 ExdDescriptors::BatteryLevel => "battery_level",
11504 ExdDescriptors::TrainerResistance => "trainer_resistance",
11505 ExdDescriptors::TrainerTargetPower => "trainer_target_power",
11506 ExdDescriptors::TimeSeated => "time_seated",
11507 ExdDescriptors::TimeStanding => "time_standing",
11508 ExdDescriptors::Elevation => "elevation",
11509 ExdDescriptors::Grade => "grade",
11510 ExdDescriptors::Ascent => "ascent",
11511 ExdDescriptors::Descent => "descent",
11512 ExdDescriptors::VerticalSpeed => "vertical_speed",
11513 ExdDescriptors::Di2BatteryLevel => "di2_battery_level",
11514 ExdDescriptors::FrontGear => "front_gear",
11515 ExdDescriptors::RearGear => "rear_gear",
11516 ExdDescriptors::GearRatio => "gear_ratio",
11517 ExdDescriptors::HeartRate => "heart_rate",
11518 ExdDescriptors::HeartRateZone => "heart_rate_zone",
11519 ExdDescriptors::TimeInHeartRateZone => "time_in_heart_rate_zone",
11520 ExdDescriptors::HeartRateReserve => "heart_rate_reserve",
11521 ExdDescriptors::Calories => "calories",
11522 ExdDescriptors::GpsAccuracy => "gps_accuracy",
11523 ExdDescriptors::GpsSignalStrength => "gps_signal_strength",
11524 ExdDescriptors::Temperature => "temperature",
11525 ExdDescriptors::TimeOfDay => "time_of_day",
11526 ExdDescriptors::Balance => "balance",
11527 ExdDescriptors::PedalSmoothness => "pedal_smoothness",
11528 ExdDescriptors::Power => "power",
11529 ExdDescriptors::FunctionalThresholdPower => "functional_threshold_power",
11530 ExdDescriptors::IntensityFactor => "intensity_factor",
11531 ExdDescriptors::Work => "work",
11532 ExdDescriptors::PowerRatio => "power_ratio",
11533 ExdDescriptors::NormalizedPower => "normalized_power",
11534 ExdDescriptors::TrainingStressScore => "training_stress_Score",
11535 ExdDescriptors::TimeOnZone => "time_on_zone",
11536 ExdDescriptors::Speed => "speed",
11537 ExdDescriptors::Laps => "laps",
11538 ExdDescriptors::Reps => "reps",
11539 ExdDescriptors::WorkoutStep => "workout_step",
11540 ExdDescriptors::CourseDistance => "course_distance",
11541 ExdDescriptors::NavigationDistance => "navigation_distance",
11542 ExdDescriptors::CourseEstimatedTimeOfArrival => "course_estimated_time_of_arrival",
11543 ExdDescriptors::NavigationEstimatedTimeOfArrival => {
11544 "navigation_estimated_time_of_arrival"
11545 }
11546 ExdDescriptors::CourseTime => "course_time",
11547 ExdDescriptors::NavigationTime => "navigation_time",
11548 ExdDescriptors::CourseHeading => "course_heading",
11549 ExdDescriptors::NavigationHeading => "navigation_heading",
11550 ExdDescriptors::PowerZone => "power_zone",
11551 ExdDescriptors::TorqueEffectiveness => "torque_effectiveness",
11552 ExdDescriptors::TimerTime => "timer_time",
11553 ExdDescriptors::PowerWeightRatio => "power_weight_ratio",
11554 ExdDescriptors::LeftPlatformCenterOffset => "left_platform_center_offset",
11555 ExdDescriptors::RightPlatformCenterOffset => "right_platform_center_offset",
11556 ExdDescriptors::LeftPowerPhaseStartAngle => "left_power_phase_start_angle",
11557 ExdDescriptors::RightPowerPhaseStartAngle => "right_power_phase_start_angle",
11558 ExdDescriptors::LeftPowerPhaseFinishAngle => "left_power_phase_finish_angle",
11559 ExdDescriptors::RightPowerPhaseFinishAngle => "right_power_phase_finish_angle",
11560 ExdDescriptors::Gears => "gears",
11561 ExdDescriptors::Pace => "pace",
11562 ExdDescriptors::TrainingEffect => "training_effect",
11563 ExdDescriptors::VerticalOscillation => "vertical_oscillation",
11564 ExdDescriptors::VerticalRatio => "vertical_ratio",
11565 ExdDescriptors::GroundContactTime => "ground_contact_time",
11566 ExdDescriptors::LeftGroundContactTimeBalance => "left_ground_contact_time_balance",
11567 ExdDescriptors::RightGroundContactTimeBalance => "right_ground_contact_time_balance",
11568 ExdDescriptors::StrideLength => "stride_length",
11569 ExdDescriptors::RunningCadence => "running_cadence",
11570 ExdDescriptors::PerformanceCondition => "performance_condition",
11571 ExdDescriptors::CourseType => "course_type",
11572 ExdDescriptors::TimeInPowerZone => "time_in_power_zone",
11573 ExdDescriptors::NavigationTurn => "navigation_turn",
11574 ExdDescriptors::CourseLocation => "course_location",
11575 ExdDescriptors::NavigationLocation => "navigation_location",
11576 ExdDescriptors::Compass => "compass",
11577 ExdDescriptors::GearCombo => "gear_combo",
11578 ExdDescriptors::MuscleOxygen => "muscle_oxygen",
11579 ExdDescriptors::Icon => "icon",
11580 ExdDescriptors::CompassHeading => "compass_heading",
11581 ExdDescriptors::GpsHeading => "gps_heading",
11582 ExdDescriptors::GpsElevation => "gps_elevation",
11583 ExdDescriptors::AnaerobicTrainingEffect => "anaerobic_training_effect",
11584 ExdDescriptors::Course => "course",
11585 ExdDescriptors::OffCourse => "off_course",
11586 ExdDescriptors::GlideRatio => "glide_ratio",
11587 ExdDescriptors::VerticalDistance => "vertical_distance",
11588 ExdDescriptors::Vmg => "vmg",
11589 ExdDescriptors::AmbientPressure => "ambient_pressure",
11590 ExdDescriptors::Pressure => "pressure",
11591 ExdDescriptors::Vam => "vam",
11592 }
11593 }
11594
11595 pub fn from_value(value: u8) -> Option<Self> {
11597 match value {
11598 0 => Some(ExdDescriptors::BikeLightBatteryStatus),
11599 1 => Some(ExdDescriptors::BeamAngleStatus),
11600 2 => Some(ExdDescriptors::BateryLevel),
11601 3 => Some(ExdDescriptors::LightNetworkMode),
11602 4 => Some(ExdDescriptors::NumberLightsConnected),
11603 5 => Some(ExdDescriptors::Cadence),
11604 6 => Some(ExdDescriptors::Distance),
11605 7 => Some(ExdDescriptors::EstimatedTimeOfArrival),
11606 8 => Some(ExdDescriptors::Heading),
11607 9 => Some(ExdDescriptors::Time),
11608 10 => Some(ExdDescriptors::BatteryLevel),
11609 11 => Some(ExdDescriptors::TrainerResistance),
11610 12 => Some(ExdDescriptors::TrainerTargetPower),
11611 13 => Some(ExdDescriptors::TimeSeated),
11612 14 => Some(ExdDescriptors::TimeStanding),
11613 15 => Some(ExdDescriptors::Elevation),
11614 16 => Some(ExdDescriptors::Grade),
11615 17 => Some(ExdDescriptors::Ascent),
11616 18 => Some(ExdDescriptors::Descent),
11617 19 => Some(ExdDescriptors::VerticalSpeed),
11618 20 => Some(ExdDescriptors::Di2BatteryLevel),
11619 21 => Some(ExdDescriptors::FrontGear),
11620 22 => Some(ExdDescriptors::RearGear),
11621 23 => Some(ExdDescriptors::GearRatio),
11622 24 => Some(ExdDescriptors::HeartRate),
11623 25 => Some(ExdDescriptors::HeartRateZone),
11624 26 => Some(ExdDescriptors::TimeInHeartRateZone),
11625 27 => Some(ExdDescriptors::HeartRateReserve),
11626 28 => Some(ExdDescriptors::Calories),
11627 29 => Some(ExdDescriptors::GpsAccuracy),
11628 30 => Some(ExdDescriptors::GpsSignalStrength),
11629 31 => Some(ExdDescriptors::Temperature),
11630 32 => Some(ExdDescriptors::TimeOfDay),
11631 33 => Some(ExdDescriptors::Balance),
11632 34 => Some(ExdDescriptors::PedalSmoothness),
11633 35 => Some(ExdDescriptors::Power),
11634 36 => Some(ExdDescriptors::FunctionalThresholdPower),
11635 37 => Some(ExdDescriptors::IntensityFactor),
11636 38 => Some(ExdDescriptors::Work),
11637 39 => Some(ExdDescriptors::PowerRatio),
11638 40 => Some(ExdDescriptors::NormalizedPower),
11639 41 => Some(ExdDescriptors::TrainingStressScore),
11640 42 => Some(ExdDescriptors::TimeOnZone),
11641 43 => Some(ExdDescriptors::Speed),
11642 44 => Some(ExdDescriptors::Laps),
11643 45 => Some(ExdDescriptors::Reps),
11644 46 => Some(ExdDescriptors::WorkoutStep),
11645 47 => Some(ExdDescriptors::CourseDistance),
11646 48 => Some(ExdDescriptors::NavigationDistance),
11647 49 => Some(ExdDescriptors::CourseEstimatedTimeOfArrival),
11648 50 => Some(ExdDescriptors::NavigationEstimatedTimeOfArrival),
11649 51 => Some(ExdDescriptors::CourseTime),
11650 52 => Some(ExdDescriptors::NavigationTime),
11651 53 => Some(ExdDescriptors::CourseHeading),
11652 54 => Some(ExdDescriptors::NavigationHeading),
11653 55 => Some(ExdDescriptors::PowerZone),
11654 56 => Some(ExdDescriptors::TorqueEffectiveness),
11655 57 => Some(ExdDescriptors::TimerTime),
11656 58 => Some(ExdDescriptors::PowerWeightRatio),
11657 59 => Some(ExdDescriptors::LeftPlatformCenterOffset),
11658 60 => Some(ExdDescriptors::RightPlatformCenterOffset),
11659 61 => Some(ExdDescriptors::LeftPowerPhaseStartAngle),
11660 62 => Some(ExdDescriptors::RightPowerPhaseStartAngle),
11661 63 => Some(ExdDescriptors::LeftPowerPhaseFinishAngle),
11662 64 => Some(ExdDescriptors::RightPowerPhaseFinishAngle),
11663 65 => Some(ExdDescriptors::Gears),
11664 66 => Some(ExdDescriptors::Pace),
11665 67 => Some(ExdDescriptors::TrainingEffect),
11666 68 => Some(ExdDescriptors::VerticalOscillation),
11667 69 => Some(ExdDescriptors::VerticalRatio),
11668 70 => Some(ExdDescriptors::GroundContactTime),
11669 71 => Some(ExdDescriptors::LeftGroundContactTimeBalance),
11670 72 => Some(ExdDescriptors::RightGroundContactTimeBalance),
11671 73 => Some(ExdDescriptors::StrideLength),
11672 74 => Some(ExdDescriptors::RunningCadence),
11673 75 => Some(ExdDescriptors::PerformanceCondition),
11674 76 => Some(ExdDescriptors::CourseType),
11675 77 => Some(ExdDescriptors::TimeInPowerZone),
11676 78 => Some(ExdDescriptors::NavigationTurn),
11677 79 => Some(ExdDescriptors::CourseLocation),
11678 80 => Some(ExdDescriptors::NavigationLocation),
11679 81 => Some(ExdDescriptors::Compass),
11680 82 => Some(ExdDescriptors::GearCombo),
11681 83 => Some(ExdDescriptors::MuscleOxygen),
11682 84 => Some(ExdDescriptors::Icon),
11683 85 => Some(ExdDescriptors::CompassHeading),
11684 86 => Some(ExdDescriptors::GpsHeading),
11685 87 => Some(ExdDescriptors::GpsElevation),
11686 88 => Some(ExdDescriptors::AnaerobicTrainingEffect),
11687 89 => Some(ExdDescriptors::Course),
11688 90 => Some(ExdDescriptors::OffCourse),
11689 91 => Some(ExdDescriptors::GlideRatio),
11690 92 => Some(ExdDescriptors::VerticalDistance),
11691 93 => Some(ExdDescriptors::Vmg),
11692 94 => Some(ExdDescriptors::AmbientPressure),
11693 95 => Some(ExdDescriptors::Pressure),
11694 96 => Some(ExdDescriptors::Vam),
11695 _ => None,
11696 }
11697 }
11698
11699 pub fn from_str(name: &str) -> Option<Self> {
11701 match name {
11702 "bike_light_battery_status" => Some(ExdDescriptors::BikeLightBatteryStatus),
11703 "beam_angle_status" => Some(ExdDescriptors::BeamAngleStatus),
11704 "batery_level" => Some(ExdDescriptors::BateryLevel),
11705 "light_network_mode" => Some(ExdDescriptors::LightNetworkMode),
11706 "number_lights_connected" => Some(ExdDescriptors::NumberLightsConnected),
11707 "cadence" => Some(ExdDescriptors::Cadence),
11708 "distance" => Some(ExdDescriptors::Distance),
11709 "estimated_time_of_arrival" => Some(ExdDescriptors::EstimatedTimeOfArrival),
11710 "heading" => Some(ExdDescriptors::Heading),
11711 "time" => Some(ExdDescriptors::Time),
11712 "battery_level" => Some(ExdDescriptors::BatteryLevel),
11713 "trainer_resistance" => Some(ExdDescriptors::TrainerResistance),
11714 "trainer_target_power" => Some(ExdDescriptors::TrainerTargetPower),
11715 "time_seated" => Some(ExdDescriptors::TimeSeated),
11716 "time_standing" => Some(ExdDescriptors::TimeStanding),
11717 "elevation" => Some(ExdDescriptors::Elevation),
11718 "grade" => Some(ExdDescriptors::Grade),
11719 "ascent" => Some(ExdDescriptors::Ascent),
11720 "descent" => Some(ExdDescriptors::Descent),
11721 "vertical_speed" => Some(ExdDescriptors::VerticalSpeed),
11722 "di2_battery_level" => Some(ExdDescriptors::Di2BatteryLevel),
11723 "front_gear" => Some(ExdDescriptors::FrontGear),
11724 "rear_gear" => Some(ExdDescriptors::RearGear),
11725 "gear_ratio" => Some(ExdDescriptors::GearRatio),
11726 "heart_rate" => Some(ExdDescriptors::HeartRate),
11727 "heart_rate_zone" => Some(ExdDescriptors::HeartRateZone),
11728 "time_in_heart_rate_zone" => Some(ExdDescriptors::TimeInHeartRateZone),
11729 "heart_rate_reserve" => Some(ExdDescriptors::HeartRateReserve),
11730 "calories" => Some(ExdDescriptors::Calories),
11731 "gps_accuracy" => Some(ExdDescriptors::GpsAccuracy),
11732 "gps_signal_strength" => Some(ExdDescriptors::GpsSignalStrength),
11733 "temperature" => Some(ExdDescriptors::Temperature),
11734 "time_of_day" => Some(ExdDescriptors::TimeOfDay),
11735 "balance" => Some(ExdDescriptors::Balance),
11736 "pedal_smoothness" => Some(ExdDescriptors::PedalSmoothness),
11737 "power" => Some(ExdDescriptors::Power),
11738 "functional_threshold_power" => Some(ExdDescriptors::FunctionalThresholdPower),
11739 "intensity_factor" => Some(ExdDescriptors::IntensityFactor),
11740 "work" => Some(ExdDescriptors::Work),
11741 "power_ratio" => Some(ExdDescriptors::PowerRatio),
11742 "normalized_power" => Some(ExdDescriptors::NormalizedPower),
11743 "training_stress_Score" => Some(ExdDescriptors::TrainingStressScore),
11744 "time_on_zone" => Some(ExdDescriptors::TimeOnZone),
11745 "speed" => Some(ExdDescriptors::Speed),
11746 "laps" => Some(ExdDescriptors::Laps),
11747 "reps" => Some(ExdDescriptors::Reps),
11748 "workout_step" => Some(ExdDescriptors::WorkoutStep),
11749 "course_distance" => Some(ExdDescriptors::CourseDistance),
11750 "navigation_distance" => Some(ExdDescriptors::NavigationDistance),
11751 "course_estimated_time_of_arrival" => {
11752 Some(ExdDescriptors::CourseEstimatedTimeOfArrival)
11753 }
11754 "navigation_estimated_time_of_arrival" => {
11755 Some(ExdDescriptors::NavigationEstimatedTimeOfArrival)
11756 }
11757 "course_time" => Some(ExdDescriptors::CourseTime),
11758 "navigation_time" => Some(ExdDescriptors::NavigationTime),
11759 "course_heading" => Some(ExdDescriptors::CourseHeading),
11760 "navigation_heading" => Some(ExdDescriptors::NavigationHeading),
11761 "power_zone" => Some(ExdDescriptors::PowerZone),
11762 "torque_effectiveness" => Some(ExdDescriptors::TorqueEffectiveness),
11763 "timer_time" => Some(ExdDescriptors::TimerTime),
11764 "power_weight_ratio" => Some(ExdDescriptors::PowerWeightRatio),
11765 "left_platform_center_offset" => Some(ExdDescriptors::LeftPlatformCenterOffset),
11766 "right_platform_center_offset" => Some(ExdDescriptors::RightPlatformCenterOffset),
11767 "left_power_phase_start_angle" => Some(ExdDescriptors::LeftPowerPhaseStartAngle),
11768 "right_power_phase_start_angle" => Some(ExdDescriptors::RightPowerPhaseStartAngle),
11769 "left_power_phase_finish_angle" => Some(ExdDescriptors::LeftPowerPhaseFinishAngle),
11770 "right_power_phase_finish_angle" => Some(ExdDescriptors::RightPowerPhaseFinishAngle),
11771 "gears" => Some(ExdDescriptors::Gears),
11772 "pace" => Some(ExdDescriptors::Pace),
11773 "training_effect" => Some(ExdDescriptors::TrainingEffect),
11774 "vertical_oscillation" => Some(ExdDescriptors::VerticalOscillation),
11775 "vertical_ratio" => Some(ExdDescriptors::VerticalRatio),
11776 "ground_contact_time" => Some(ExdDescriptors::GroundContactTime),
11777 "left_ground_contact_time_balance" => {
11778 Some(ExdDescriptors::LeftGroundContactTimeBalance)
11779 }
11780 "right_ground_contact_time_balance" => {
11781 Some(ExdDescriptors::RightGroundContactTimeBalance)
11782 }
11783 "stride_length" => Some(ExdDescriptors::StrideLength),
11784 "running_cadence" => Some(ExdDescriptors::RunningCadence),
11785 "performance_condition" => Some(ExdDescriptors::PerformanceCondition),
11786 "course_type" => Some(ExdDescriptors::CourseType),
11787 "time_in_power_zone" => Some(ExdDescriptors::TimeInPowerZone),
11788 "navigation_turn" => Some(ExdDescriptors::NavigationTurn),
11789 "course_location" => Some(ExdDescriptors::CourseLocation),
11790 "navigation_location" => Some(ExdDescriptors::NavigationLocation),
11791 "compass" => Some(ExdDescriptors::Compass),
11792 "gear_combo" => Some(ExdDescriptors::GearCombo),
11793 "muscle_oxygen" => Some(ExdDescriptors::MuscleOxygen),
11794 "icon" => Some(ExdDescriptors::Icon),
11795 "compass_heading" => Some(ExdDescriptors::CompassHeading),
11796 "gps_heading" => Some(ExdDescriptors::GpsHeading),
11797 "gps_elevation" => Some(ExdDescriptors::GpsElevation),
11798 "anaerobic_training_effect" => Some(ExdDescriptors::AnaerobicTrainingEffect),
11799 "course" => Some(ExdDescriptors::Course),
11800 "off_course" => Some(ExdDescriptors::OffCourse),
11801 "glide_ratio" => Some(ExdDescriptors::GlideRatio),
11802 "vertical_distance" => Some(ExdDescriptors::VerticalDistance),
11803 "vmg" => Some(ExdDescriptors::Vmg),
11804 "ambient_pressure" => Some(ExdDescriptors::AmbientPressure),
11805 "pressure" => Some(ExdDescriptors::Pressure),
11806 "vam" => Some(ExdDescriptors::Vam),
11807 _ => None,
11808 }
11809 }
11810}
11811
11812#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11813#[repr(u32)]
11814#[non_exhaustive]
11815pub enum AutoActivityDetect {
11816 None = 0,
11817 Running = 1,
11818 Cycling = 2,
11819 Swimming = 4,
11820 Walking = 8,
11821 Elliptical = 32,
11822 Sedentary = 1024,
11823}
11824
11825impl AutoActivityDetect {
11826 pub fn as_str(&self) -> &'static str {
11828 match self {
11829 AutoActivityDetect::None => "none",
11830 AutoActivityDetect::Running => "running",
11831 AutoActivityDetect::Cycling => "cycling",
11832 AutoActivityDetect::Swimming => "swimming",
11833 AutoActivityDetect::Walking => "walking",
11834 AutoActivityDetect::Elliptical => "elliptical",
11835 AutoActivityDetect::Sedentary => "sedentary",
11836 }
11837 }
11838
11839 pub fn from_value(value: u32) -> Option<Self> {
11841 match value {
11842 0 => Some(AutoActivityDetect::None),
11843 1 => Some(AutoActivityDetect::Running),
11844 2 => Some(AutoActivityDetect::Cycling),
11845 4 => Some(AutoActivityDetect::Swimming),
11846 8 => Some(AutoActivityDetect::Walking),
11847 32 => Some(AutoActivityDetect::Elliptical),
11848 1024 => Some(AutoActivityDetect::Sedentary),
11849 _ => None,
11850 }
11851 }
11852
11853 pub fn from_str(name: &str) -> Option<Self> {
11855 match name {
11856 "none" => Some(AutoActivityDetect::None),
11857 "running" => Some(AutoActivityDetect::Running),
11858 "cycling" => Some(AutoActivityDetect::Cycling),
11859 "swimming" => Some(AutoActivityDetect::Swimming),
11860 "walking" => Some(AutoActivityDetect::Walking),
11861 "elliptical" => Some(AutoActivityDetect::Elliptical),
11862 "sedentary" => Some(AutoActivityDetect::Sedentary),
11863 _ => None,
11864 }
11865 }
11866}
11867
11868#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11869#[repr(u32)]
11870#[non_exhaustive]
11871pub enum SupportedExdScreenLayouts {
11872 FullScreen = 1,
11873 HalfVertical = 2,
11874 HalfHorizontal = 4,
11875 HalfVerticalRightSplit = 8,
11876 HalfHorizontalBottomSplit = 16,
11877 FullQuarterSplit = 32,
11878 HalfVerticalLeftSplit = 64,
11879 HalfHorizontalTopSplit = 128,
11880}
11881
11882impl SupportedExdScreenLayouts {
11883 pub fn as_str(&self) -> &'static str {
11885 match self {
11886 SupportedExdScreenLayouts::FullScreen => "full_screen",
11887 SupportedExdScreenLayouts::HalfVertical => "half_vertical",
11888 SupportedExdScreenLayouts::HalfHorizontal => "half_horizontal",
11889 SupportedExdScreenLayouts::HalfVerticalRightSplit => "half_vertical_right_split",
11890 SupportedExdScreenLayouts::HalfHorizontalBottomSplit => "half_horizontal_bottom_split",
11891 SupportedExdScreenLayouts::FullQuarterSplit => "full_quarter_split",
11892 SupportedExdScreenLayouts::HalfVerticalLeftSplit => "half_vertical_left_split",
11893 SupportedExdScreenLayouts::HalfHorizontalTopSplit => "half_horizontal_top_split",
11894 }
11895 }
11896
11897 pub fn from_value(value: u32) -> Option<Self> {
11899 match value {
11900 1 => Some(SupportedExdScreenLayouts::FullScreen),
11901 2 => Some(SupportedExdScreenLayouts::HalfVertical),
11902 4 => Some(SupportedExdScreenLayouts::HalfHorizontal),
11903 8 => Some(SupportedExdScreenLayouts::HalfVerticalRightSplit),
11904 16 => Some(SupportedExdScreenLayouts::HalfHorizontalBottomSplit),
11905 32 => Some(SupportedExdScreenLayouts::FullQuarterSplit),
11906 64 => Some(SupportedExdScreenLayouts::HalfVerticalLeftSplit),
11907 128 => Some(SupportedExdScreenLayouts::HalfHorizontalTopSplit),
11908 _ => None,
11909 }
11910 }
11911
11912 pub fn from_str(name: &str) -> Option<Self> {
11914 match name {
11915 "full_screen" => Some(SupportedExdScreenLayouts::FullScreen),
11916 "half_vertical" => Some(SupportedExdScreenLayouts::HalfVertical),
11917 "half_horizontal" => Some(SupportedExdScreenLayouts::HalfHorizontal),
11918 "half_vertical_right_split" => Some(SupportedExdScreenLayouts::HalfVerticalRightSplit),
11919 "half_horizontal_bottom_split" => {
11920 Some(SupportedExdScreenLayouts::HalfHorizontalBottomSplit)
11921 }
11922 "full_quarter_split" => Some(SupportedExdScreenLayouts::FullQuarterSplit),
11923 "half_vertical_left_split" => Some(SupportedExdScreenLayouts::HalfVerticalLeftSplit),
11924 "half_horizontal_top_split" => Some(SupportedExdScreenLayouts::HalfHorizontalTopSplit),
11925 _ => None,
11926 }
11927 }
11928}
11929
11930#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11931#[repr(u8)]
11932#[non_exhaustive]
11933pub enum FitBaseType {
11934 Enum = 0,
11935 Sint8 = 1,
11936 Uint8 = 2,
11937 Sint16 = 131,
11938 Uint16 = 132,
11939 Sint32 = 133,
11940 Uint32 = 134,
11941 String = 7,
11942 Float32 = 136,
11943 Float64 = 137,
11944 Uint8z = 10,
11945 Uint16z = 139,
11946 Uint32z = 140,
11947 Byte = 13,
11948 Sint64 = 142,
11949 Uint64 = 143,
11950 Uint64z = 144,
11951}
11952
11953impl FitBaseType {
11954 pub fn as_str(&self) -> &'static str {
11956 match self {
11957 FitBaseType::Enum => "enum",
11958 FitBaseType::Sint8 => "sint8",
11959 FitBaseType::Uint8 => "uint8",
11960 FitBaseType::Sint16 => "sint16",
11961 FitBaseType::Uint16 => "uint16",
11962 FitBaseType::Sint32 => "sint32",
11963 FitBaseType::Uint32 => "uint32",
11964 FitBaseType::String => "string",
11965 FitBaseType::Float32 => "float32",
11966 FitBaseType::Float64 => "float64",
11967 FitBaseType::Uint8z => "uint8z",
11968 FitBaseType::Uint16z => "uint16z",
11969 FitBaseType::Uint32z => "uint32z",
11970 FitBaseType::Byte => "byte",
11971 FitBaseType::Sint64 => "sint64",
11972 FitBaseType::Uint64 => "uint64",
11973 FitBaseType::Uint64z => "uint64z",
11974 }
11975 }
11976
11977 pub fn from_value(value: u8) -> Option<Self> {
11979 match value {
11980 0 => Some(FitBaseType::Enum),
11981 1 => Some(FitBaseType::Sint8),
11982 2 => Some(FitBaseType::Uint8),
11983 131 => Some(FitBaseType::Sint16),
11984 132 => Some(FitBaseType::Uint16),
11985 133 => Some(FitBaseType::Sint32),
11986 134 => Some(FitBaseType::Uint32),
11987 7 => Some(FitBaseType::String),
11988 136 => Some(FitBaseType::Float32),
11989 137 => Some(FitBaseType::Float64),
11990 10 => Some(FitBaseType::Uint8z),
11991 139 => Some(FitBaseType::Uint16z),
11992 140 => Some(FitBaseType::Uint32z),
11993 13 => Some(FitBaseType::Byte),
11994 142 => Some(FitBaseType::Sint64),
11995 143 => Some(FitBaseType::Uint64),
11996 144 => Some(FitBaseType::Uint64z),
11997 _ => None,
11998 }
11999 }
12000
12001 pub fn from_str(name: &str) -> Option<Self> {
12003 match name {
12004 "enum" => Some(FitBaseType::Enum),
12005 "sint8" => Some(FitBaseType::Sint8),
12006 "uint8" => Some(FitBaseType::Uint8),
12007 "sint16" => Some(FitBaseType::Sint16),
12008 "uint16" => Some(FitBaseType::Uint16),
12009 "sint32" => Some(FitBaseType::Sint32),
12010 "uint32" => Some(FitBaseType::Uint32),
12011 "string" => Some(FitBaseType::String),
12012 "float32" => Some(FitBaseType::Float32),
12013 "float64" => Some(FitBaseType::Float64),
12014 "uint8z" => Some(FitBaseType::Uint8z),
12015 "uint16z" => Some(FitBaseType::Uint16z),
12016 "uint32z" => Some(FitBaseType::Uint32z),
12017 "byte" => Some(FitBaseType::Byte),
12018 "sint64" => Some(FitBaseType::Sint64),
12019 "uint64" => Some(FitBaseType::Uint64),
12020 "uint64z" => Some(FitBaseType::Uint64z),
12021 _ => None,
12022 }
12023 }
12024}
12025
12026#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12027#[repr(u8)]
12028#[non_exhaustive]
12029pub enum TurnType {
12030 ArrivingIdx = 0,
12031 ArrivingLeftIdx = 1,
12032 ArrivingRightIdx = 2,
12033 ArrivingViaIdx = 3,
12034 ArrivingViaLeftIdx = 4,
12035 ArrivingViaRightIdx = 5,
12036 BearKeepLeftIdx = 6,
12037 BearKeepRightIdx = 7,
12038 ContinueIdx = 8,
12039 ExitLeftIdx = 9,
12040 ExitRightIdx = 10,
12041 FerryIdx = 11,
12042 Roundabout45Idx = 12,
12043 Roundabout90Idx = 13,
12044 Roundabout135Idx = 14,
12045 Roundabout180Idx = 15,
12046 Roundabout225Idx = 16,
12047 Roundabout270Idx = 17,
12048 Roundabout315Idx = 18,
12049 Roundabout360Idx = 19,
12050 RoundaboutNeg45Idx = 20,
12051 RoundaboutNeg90Idx = 21,
12052 RoundaboutNeg135Idx = 22,
12053 RoundaboutNeg180Idx = 23,
12054 RoundaboutNeg225Idx = 24,
12055 RoundaboutNeg270Idx = 25,
12056 RoundaboutNeg315Idx = 26,
12057 RoundaboutNeg360Idx = 27,
12058 RoundaboutGenericIdx = 28,
12059 RoundaboutNegGenericIdx = 29,
12060 SharpTurnLeftIdx = 30,
12061 SharpTurnRightIdx = 31,
12062 TurnLeftIdx = 32,
12063 TurnRightIdx = 33,
12064 UturnLeftIdx = 34,
12065 UturnRightIdx = 35,
12066 IconInvIdx = 36,
12067 IconIdxCnt = 37,
12068}
12069
12070impl TurnType {
12071 pub fn as_str(&self) -> &'static str {
12073 match self {
12074 TurnType::ArrivingIdx => "arriving_idx",
12075 TurnType::ArrivingLeftIdx => "arriving_left_idx",
12076 TurnType::ArrivingRightIdx => "arriving_right_idx",
12077 TurnType::ArrivingViaIdx => "arriving_via_idx",
12078 TurnType::ArrivingViaLeftIdx => "arriving_via_left_idx",
12079 TurnType::ArrivingViaRightIdx => "arriving_via_right_idx",
12080 TurnType::BearKeepLeftIdx => "bear_keep_left_idx",
12081 TurnType::BearKeepRightIdx => "bear_keep_right_idx",
12082 TurnType::ContinueIdx => "continue_idx",
12083 TurnType::ExitLeftIdx => "exit_left_idx",
12084 TurnType::ExitRightIdx => "exit_right_idx",
12085 TurnType::FerryIdx => "ferry_idx",
12086 TurnType::Roundabout45Idx => "roundabout_45_idx",
12087 TurnType::Roundabout90Idx => "roundabout_90_idx",
12088 TurnType::Roundabout135Idx => "roundabout_135_idx",
12089 TurnType::Roundabout180Idx => "roundabout_180_idx",
12090 TurnType::Roundabout225Idx => "roundabout_225_idx",
12091 TurnType::Roundabout270Idx => "roundabout_270_idx",
12092 TurnType::Roundabout315Idx => "roundabout_315_idx",
12093 TurnType::Roundabout360Idx => "roundabout_360_idx",
12094 TurnType::RoundaboutNeg45Idx => "roundabout_neg_45_idx",
12095 TurnType::RoundaboutNeg90Idx => "roundabout_neg_90_idx",
12096 TurnType::RoundaboutNeg135Idx => "roundabout_neg_135_idx",
12097 TurnType::RoundaboutNeg180Idx => "roundabout_neg_180_idx",
12098 TurnType::RoundaboutNeg225Idx => "roundabout_neg_225_idx",
12099 TurnType::RoundaboutNeg270Idx => "roundabout_neg_270_idx",
12100 TurnType::RoundaboutNeg315Idx => "roundabout_neg_315_idx",
12101 TurnType::RoundaboutNeg360Idx => "roundabout_neg_360_idx",
12102 TurnType::RoundaboutGenericIdx => "roundabout_generic_idx",
12103 TurnType::RoundaboutNegGenericIdx => "roundabout_neg_generic_idx",
12104 TurnType::SharpTurnLeftIdx => "sharp_turn_left_idx",
12105 TurnType::SharpTurnRightIdx => "sharp_turn_right_idx",
12106 TurnType::TurnLeftIdx => "turn_left_idx",
12107 TurnType::TurnRightIdx => "turn_right_idx",
12108 TurnType::UturnLeftIdx => "uturn_left_idx",
12109 TurnType::UturnRightIdx => "uturn_right_idx",
12110 TurnType::IconInvIdx => "icon_inv_idx",
12111 TurnType::IconIdxCnt => "icon_idx_cnt",
12112 }
12113 }
12114
12115 pub fn from_value(value: u8) -> Option<Self> {
12117 match value {
12118 0 => Some(TurnType::ArrivingIdx),
12119 1 => Some(TurnType::ArrivingLeftIdx),
12120 2 => Some(TurnType::ArrivingRightIdx),
12121 3 => Some(TurnType::ArrivingViaIdx),
12122 4 => Some(TurnType::ArrivingViaLeftIdx),
12123 5 => Some(TurnType::ArrivingViaRightIdx),
12124 6 => Some(TurnType::BearKeepLeftIdx),
12125 7 => Some(TurnType::BearKeepRightIdx),
12126 8 => Some(TurnType::ContinueIdx),
12127 9 => Some(TurnType::ExitLeftIdx),
12128 10 => Some(TurnType::ExitRightIdx),
12129 11 => Some(TurnType::FerryIdx),
12130 12 => Some(TurnType::Roundabout45Idx),
12131 13 => Some(TurnType::Roundabout90Idx),
12132 14 => Some(TurnType::Roundabout135Idx),
12133 15 => Some(TurnType::Roundabout180Idx),
12134 16 => Some(TurnType::Roundabout225Idx),
12135 17 => Some(TurnType::Roundabout270Idx),
12136 18 => Some(TurnType::Roundabout315Idx),
12137 19 => Some(TurnType::Roundabout360Idx),
12138 20 => Some(TurnType::RoundaboutNeg45Idx),
12139 21 => Some(TurnType::RoundaboutNeg90Idx),
12140 22 => Some(TurnType::RoundaboutNeg135Idx),
12141 23 => Some(TurnType::RoundaboutNeg180Idx),
12142 24 => Some(TurnType::RoundaboutNeg225Idx),
12143 25 => Some(TurnType::RoundaboutNeg270Idx),
12144 26 => Some(TurnType::RoundaboutNeg315Idx),
12145 27 => Some(TurnType::RoundaboutNeg360Idx),
12146 28 => Some(TurnType::RoundaboutGenericIdx),
12147 29 => Some(TurnType::RoundaboutNegGenericIdx),
12148 30 => Some(TurnType::SharpTurnLeftIdx),
12149 31 => Some(TurnType::SharpTurnRightIdx),
12150 32 => Some(TurnType::TurnLeftIdx),
12151 33 => Some(TurnType::TurnRightIdx),
12152 34 => Some(TurnType::UturnLeftIdx),
12153 35 => Some(TurnType::UturnRightIdx),
12154 36 => Some(TurnType::IconInvIdx),
12155 37 => Some(TurnType::IconIdxCnt),
12156 _ => None,
12157 }
12158 }
12159
12160 pub fn from_str(name: &str) -> Option<Self> {
12162 match name {
12163 "arriving_idx" => Some(TurnType::ArrivingIdx),
12164 "arriving_left_idx" => Some(TurnType::ArrivingLeftIdx),
12165 "arriving_right_idx" => Some(TurnType::ArrivingRightIdx),
12166 "arriving_via_idx" => Some(TurnType::ArrivingViaIdx),
12167 "arriving_via_left_idx" => Some(TurnType::ArrivingViaLeftIdx),
12168 "arriving_via_right_idx" => Some(TurnType::ArrivingViaRightIdx),
12169 "bear_keep_left_idx" => Some(TurnType::BearKeepLeftIdx),
12170 "bear_keep_right_idx" => Some(TurnType::BearKeepRightIdx),
12171 "continue_idx" => Some(TurnType::ContinueIdx),
12172 "exit_left_idx" => Some(TurnType::ExitLeftIdx),
12173 "exit_right_idx" => Some(TurnType::ExitRightIdx),
12174 "ferry_idx" => Some(TurnType::FerryIdx),
12175 "roundabout_45_idx" => Some(TurnType::Roundabout45Idx),
12176 "roundabout_90_idx" => Some(TurnType::Roundabout90Idx),
12177 "roundabout_135_idx" => Some(TurnType::Roundabout135Idx),
12178 "roundabout_180_idx" => Some(TurnType::Roundabout180Idx),
12179 "roundabout_225_idx" => Some(TurnType::Roundabout225Idx),
12180 "roundabout_270_idx" => Some(TurnType::Roundabout270Idx),
12181 "roundabout_315_idx" => Some(TurnType::Roundabout315Idx),
12182 "roundabout_360_idx" => Some(TurnType::Roundabout360Idx),
12183 "roundabout_neg_45_idx" => Some(TurnType::RoundaboutNeg45Idx),
12184 "roundabout_neg_90_idx" => Some(TurnType::RoundaboutNeg90Idx),
12185 "roundabout_neg_135_idx" => Some(TurnType::RoundaboutNeg135Idx),
12186 "roundabout_neg_180_idx" => Some(TurnType::RoundaboutNeg180Idx),
12187 "roundabout_neg_225_idx" => Some(TurnType::RoundaboutNeg225Idx),
12188 "roundabout_neg_270_idx" => Some(TurnType::RoundaboutNeg270Idx),
12189 "roundabout_neg_315_idx" => Some(TurnType::RoundaboutNeg315Idx),
12190 "roundabout_neg_360_idx" => Some(TurnType::RoundaboutNeg360Idx),
12191 "roundabout_generic_idx" => Some(TurnType::RoundaboutGenericIdx),
12192 "roundabout_neg_generic_idx" => Some(TurnType::RoundaboutNegGenericIdx),
12193 "sharp_turn_left_idx" => Some(TurnType::SharpTurnLeftIdx),
12194 "sharp_turn_right_idx" => Some(TurnType::SharpTurnRightIdx),
12195 "turn_left_idx" => Some(TurnType::TurnLeftIdx),
12196 "turn_right_idx" => Some(TurnType::TurnRightIdx),
12197 "uturn_left_idx" => Some(TurnType::UturnLeftIdx),
12198 "uturn_right_idx" => Some(TurnType::UturnRightIdx),
12199 "icon_inv_idx" => Some(TurnType::IconInvIdx),
12200 "icon_idx_cnt" => Some(TurnType::IconIdxCnt),
12201 _ => None,
12202 }
12203 }
12204}
12205
12206#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12207#[repr(u8)]
12208#[non_exhaustive]
12209pub enum BikeLightBeamAngleMode {
12210 Manual = 0,
12211 Auto = 1,
12212}
12213
12214impl BikeLightBeamAngleMode {
12215 pub fn as_str(&self) -> &'static str {
12217 match self {
12218 BikeLightBeamAngleMode::Manual => "manual",
12219 BikeLightBeamAngleMode::Auto => "auto",
12220 }
12221 }
12222
12223 pub fn from_value(value: u8) -> Option<Self> {
12225 match value {
12226 0 => Some(BikeLightBeamAngleMode::Manual),
12227 1 => Some(BikeLightBeamAngleMode::Auto),
12228 _ => None,
12229 }
12230 }
12231
12232 pub fn from_str(name: &str) -> Option<Self> {
12234 match name {
12235 "manual" => Some(BikeLightBeamAngleMode::Manual),
12236 "auto" => Some(BikeLightBeamAngleMode::Auto),
12237 _ => None,
12238 }
12239 }
12240}
12241
12242#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12243#[repr(u16)]
12244#[non_exhaustive]
12245pub enum FitBaseUnit {
12246 Other = 0,
12247 Kilogram = 1,
12248 Pound = 2,
12249}
12250
12251impl FitBaseUnit {
12252 pub fn as_str(&self) -> &'static str {
12254 match self {
12255 FitBaseUnit::Other => "other",
12256 FitBaseUnit::Kilogram => "kilogram",
12257 FitBaseUnit::Pound => "pound",
12258 }
12259 }
12260
12261 pub fn from_value(value: u16) -> Option<Self> {
12263 match value {
12264 0 => Some(FitBaseUnit::Other),
12265 1 => Some(FitBaseUnit::Kilogram),
12266 2 => Some(FitBaseUnit::Pound),
12267 _ => None,
12268 }
12269 }
12270
12271 pub fn from_str(name: &str) -> Option<Self> {
12273 match name {
12274 "other" => Some(FitBaseUnit::Other),
12275 "kilogram" => Some(FitBaseUnit::Kilogram),
12276 "pound" => Some(FitBaseUnit::Pound),
12277 _ => None,
12278 }
12279 }
12280}
12281
12282#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12283#[repr(u8)]
12284#[non_exhaustive]
12285pub enum SetType {
12286 Rest = 0,
12287 Active = 1,
12288}
12289
12290impl SetType {
12291 pub fn as_str(&self) -> &'static str {
12293 match self {
12294 SetType::Rest => "rest",
12295 SetType::Active => "active",
12296 }
12297 }
12298
12299 pub fn from_value(value: u8) -> Option<Self> {
12301 match value {
12302 0 => Some(SetType::Rest),
12303 1 => Some(SetType::Active),
12304 _ => None,
12305 }
12306 }
12307
12308 pub fn from_str(name: &str) -> Option<Self> {
12310 match name {
12311 "rest" => Some(SetType::Rest),
12312 "active" => Some(SetType::Active),
12313 _ => None,
12314 }
12315 }
12316}
12317
12318#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12319#[repr(u8)]
12320#[non_exhaustive]
12321pub enum MaxMetCategory {
12322 Generic = 0,
12323 Cycling = 1,
12324}
12325
12326impl MaxMetCategory {
12327 pub fn as_str(&self) -> &'static str {
12329 match self {
12330 MaxMetCategory::Generic => "generic",
12331 MaxMetCategory::Cycling => "cycling",
12332 }
12333 }
12334
12335 pub fn from_value(value: u8) -> Option<Self> {
12337 match value {
12338 0 => Some(MaxMetCategory::Generic),
12339 1 => Some(MaxMetCategory::Cycling),
12340 _ => None,
12341 }
12342 }
12343
12344 pub fn from_str(name: &str) -> Option<Self> {
12346 match name {
12347 "generic" => Some(MaxMetCategory::Generic),
12348 "cycling" => Some(MaxMetCategory::Cycling),
12349 _ => None,
12350 }
12351 }
12352}
12353
12354#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12355#[repr(u16)]
12356#[non_exhaustive]
12357pub enum ExerciseCategory {
12358 BenchPress = 0,
12359 CalfRaise = 1,
12360 Cardio = 2,
12361 Carry = 3,
12362 Chop = 4,
12363 Core = 5,
12364 Crunch = 6,
12365 Curl = 7,
12366 Deadlift = 8,
12367 Flye = 9,
12368 HipRaise = 10,
12369 HipStability = 11,
12370 HipSwing = 12,
12371 Hyperextension = 13,
12372 LateralRaise = 14,
12373 LegCurl = 15,
12374 LegRaise = 16,
12375 Lunge = 17,
12376 OlympicLift = 18,
12377 Plank = 19,
12378 Plyo = 20,
12379 PullUp = 21,
12380 PushUp = 22,
12381 Row = 23,
12382 ShoulderPress = 24,
12383 ShoulderStability = 25,
12384 Shrug = 26,
12385 SitUp = 27,
12386 Squat = 28,
12387 TotalBody = 29,
12388 TricepsExtension = 30,
12389 WarmUp = 31,
12390 Run = 32,
12391 Bike = 33,
12392 CardioSensors = 34,
12393 Move = 35,
12394 Pose = 36,
12395 BandedExercises = 37,
12396 BattleRope = 38,
12397 Elliptical = 39,
12398 FloorClimb = 40,
12399 IndoorBike = 41,
12400 IndoorRow = 42,
12401 Ladder = 43,
12402 Sandbag = 44,
12403 Sled = 45,
12404 SledgeHammer = 46,
12405 StairStepper = 47,
12406 Suspension = 49,
12407 Tire = 50,
12408 RunIndoor = 52,
12409 BikeOutdoor = 53,
12410 Unknown = 65534,
12411}
12412
12413impl ExerciseCategory {
12414 pub fn as_str(&self) -> &'static str {
12416 match self {
12417 ExerciseCategory::BenchPress => "bench_press",
12418 ExerciseCategory::CalfRaise => "calf_raise",
12419 ExerciseCategory::Cardio => "cardio",
12420 ExerciseCategory::Carry => "carry",
12421 ExerciseCategory::Chop => "chop",
12422 ExerciseCategory::Core => "core",
12423 ExerciseCategory::Crunch => "crunch",
12424 ExerciseCategory::Curl => "curl",
12425 ExerciseCategory::Deadlift => "deadlift",
12426 ExerciseCategory::Flye => "flye",
12427 ExerciseCategory::HipRaise => "hip_raise",
12428 ExerciseCategory::HipStability => "hip_stability",
12429 ExerciseCategory::HipSwing => "hip_swing",
12430 ExerciseCategory::Hyperextension => "hyperextension",
12431 ExerciseCategory::LateralRaise => "lateral_raise",
12432 ExerciseCategory::LegCurl => "leg_curl",
12433 ExerciseCategory::LegRaise => "leg_raise",
12434 ExerciseCategory::Lunge => "lunge",
12435 ExerciseCategory::OlympicLift => "olympic_lift",
12436 ExerciseCategory::Plank => "plank",
12437 ExerciseCategory::Plyo => "plyo",
12438 ExerciseCategory::PullUp => "pull_up",
12439 ExerciseCategory::PushUp => "push_up",
12440 ExerciseCategory::Row => "row",
12441 ExerciseCategory::ShoulderPress => "shoulder_press",
12442 ExerciseCategory::ShoulderStability => "shoulder_stability",
12443 ExerciseCategory::Shrug => "shrug",
12444 ExerciseCategory::SitUp => "sit_up",
12445 ExerciseCategory::Squat => "squat",
12446 ExerciseCategory::TotalBody => "total_body",
12447 ExerciseCategory::TricepsExtension => "triceps_extension",
12448 ExerciseCategory::WarmUp => "warm_up",
12449 ExerciseCategory::Run => "run",
12450 ExerciseCategory::Bike => "bike",
12451 ExerciseCategory::CardioSensors => "cardio_sensors",
12452 ExerciseCategory::Move => "move",
12453 ExerciseCategory::Pose => "pose",
12454 ExerciseCategory::BandedExercises => "banded_exercises",
12455 ExerciseCategory::BattleRope => "battle_rope",
12456 ExerciseCategory::Elliptical => "elliptical",
12457 ExerciseCategory::FloorClimb => "floor_climb",
12458 ExerciseCategory::IndoorBike => "indoor_bike",
12459 ExerciseCategory::IndoorRow => "indoor_row",
12460 ExerciseCategory::Ladder => "ladder",
12461 ExerciseCategory::Sandbag => "sandbag",
12462 ExerciseCategory::Sled => "sled",
12463 ExerciseCategory::SledgeHammer => "sledge_hammer",
12464 ExerciseCategory::StairStepper => "stair_stepper",
12465 ExerciseCategory::Suspension => "suspension",
12466 ExerciseCategory::Tire => "tire",
12467 ExerciseCategory::RunIndoor => "run_indoor",
12468 ExerciseCategory::BikeOutdoor => "bike_outdoor",
12469 ExerciseCategory::Unknown => "unknown",
12470 }
12471 }
12472
12473 pub fn from_value(value: u16) -> Option<Self> {
12475 match value {
12476 0 => Some(ExerciseCategory::BenchPress),
12477 1 => Some(ExerciseCategory::CalfRaise),
12478 2 => Some(ExerciseCategory::Cardio),
12479 3 => Some(ExerciseCategory::Carry),
12480 4 => Some(ExerciseCategory::Chop),
12481 5 => Some(ExerciseCategory::Core),
12482 6 => Some(ExerciseCategory::Crunch),
12483 7 => Some(ExerciseCategory::Curl),
12484 8 => Some(ExerciseCategory::Deadlift),
12485 9 => Some(ExerciseCategory::Flye),
12486 10 => Some(ExerciseCategory::HipRaise),
12487 11 => Some(ExerciseCategory::HipStability),
12488 12 => Some(ExerciseCategory::HipSwing),
12489 13 => Some(ExerciseCategory::Hyperextension),
12490 14 => Some(ExerciseCategory::LateralRaise),
12491 15 => Some(ExerciseCategory::LegCurl),
12492 16 => Some(ExerciseCategory::LegRaise),
12493 17 => Some(ExerciseCategory::Lunge),
12494 18 => Some(ExerciseCategory::OlympicLift),
12495 19 => Some(ExerciseCategory::Plank),
12496 20 => Some(ExerciseCategory::Plyo),
12497 21 => Some(ExerciseCategory::PullUp),
12498 22 => Some(ExerciseCategory::PushUp),
12499 23 => Some(ExerciseCategory::Row),
12500 24 => Some(ExerciseCategory::ShoulderPress),
12501 25 => Some(ExerciseCategory::ShoulderStability),
12502 26 => Some(ExerciseCategory::Shrug),
12503 27 => Some(ExerciseCategory::SitUp),
12504 28 => Some(ExerciseCategory::Squat),
12505 29 => Some(ExerciseCategory::TotalBody),
12506 30 => Some(ExerciseCategory::TricepsExtension),
12507 31 => Some(ExerciseCategory::WarmUp),
12508 32 => Some(ExerciseCategory::Run),
12509 33 => Some(ExerciseCategory::Bike),
12510 34 => Some(ExerciseCategory::CardioSensors),
12511 35 => Some(ExerciseCategory::Move),
12512 36 => Some(ExerciseCategory::Pose),
12513 37 => Some(ExerciseCategory::BandedExercises),
12514 38 => Some(ExerciseCategory::BattleRope),
12515 39 => Some(ExerciseCategory::Elliptical),
12516 40 => Some(ExerciseCategory::FloorClimb),
12517 41 => Some(ExerciseCategory::IndoorBike),
12518 42 => Some(ExerciseCategory::IndoorRow),
12519 43 => Some(ExerciseCategory::Ladder),
12520 44 => Some(ExerciseCategory::Sandbag),
12521 45 => Some(ExerciseCategory::Sled),
12522 46 => Some(ExerciseCategory::SledgeHammer),
12523 47 => Some(ExerciseCategory::StairStepper),
12524 49 => Some(ExerciseCategory::Suspension),
12525 50 => Some(ExerciseCategory::Tire),
12526 52 => Some(ExerciseCategory::RunIndoor),
12527 53 => Some(ExerciseCategory::BikeOutdoor),
12528 65534 => Some(ExerciseCategory::Unknown),
12529 _ => None,
12530 }
12531 }
12532
12533 pub fn from_str(name: &str) -> Option<Self> {
12535 match name {
12536 "bench_press" => Some(ExerciseCategory::BenchPress),
12537 "calf_raise" => Some(ExerciseCategory::CalfRaise),
12538 "cardio" => Some(ExerciseCategory::Cardio),
12539 "carry" => Some(ExerciseCategory::Carry),
12540 "chop" => Some(ExerciseCategory::Chop),
12541 "core" => Some(ExerciseCategory::Core),
12542 "crunch" => Some(ExerciseCategory::Crunch),
12543 "curl" => Some(ExerciseCategory::Curl),
12544 "deadlift" => Some(ExerciseCategory::Deadlift),
12545 "flye" => Some(ExerciseCategory::Flye),
12546 "hip_raise" => Some(ExerciseCategory::HipRaise),
12547 "hip_stability" => Some(ExerciseCategory::HipStability),
12548 "hip_swing" => Some(ExerciseCategory::HipSwing),
12549 "hyperextension" => Some(ExerciseCategory::Hyperextension),
12550 "lateral_raise" => Some(ExerciseCategory::LateralRaise),
12551 "leg_curl" => Some(ExerciseCategory::LegCurl),
12552 "leg_raise" => Some(ExerciseCategory::LegRaise),
12553 "lunge" => Some(ExerciseCategory::Lunge),
12554 "olympic_lift" => Some(ExerciseCategory::OlympicLift),
12555 "plank" => Some(ExerciseCategory::Plank),
12556 "plyo" => Some(ExerciseCategory::Plyo),
12557 "pull_up" => Some(ExerciseCategory::PullUp),
12558 "push_up" => Some(ExerciseCategory::PushUp),
12559 "row" => Some(ExerciseCategory::Row),
12560 "shoulder_press" => Some(ExerciseCategory::ShoulderPress),
12561 "shoulder_stability" => Some(ExerciseCategory::ShoulderStability),
12562 "shrug" => Some(ExerciseCategory::Shrug),
12563 "sit_up" => Some(ExerciseCategory::SitUp),
12564 "squat" => Some(ExerciseCategory::Squat),
12565 "total_body" => Some(ExerciseCategory::TotalBody),
12566 "triceps_extension" => Some(ExerciseCategory::TricepsExtension),
12567 "warm_up" => Some(ExerciseCategory::WarmUp),
12568 "run" => Some(ExerciseCategory::Run),
12569 "bike" => Some(ExerciseCategory::Bike),
12570 "cardio_sensors" => Some(ExerciseCategory::CardioSensors),
12571 "move" => Some(ExerciseCategory::Move),
12572 "pose" => Some(ExerciseCategory::Pose),
12573 "banded_exercises" => Some(ExerciseCategory::BandedExercises),
12574 "battle_rope" => Some(ExerciseCategory::BattleRope),
12575 "elliptical" => Some(ExerciseCategory::Elliptical),
12576 "floor_climb" => Some(ExerciseCategory::FloorClimb),
12577 "indoor_bike" => Some(ExerciseCategory::IndoorBike),
12578 "indoor_row" => Some(ExerciseCategory::IndoorRow),
12579 "ladder" => Some(ExerciseCategory::Ladder),
12580 "sandbag" => Some(ExerciseCategory::Sandbag),
12581 "sled" => Some(ExerciseCategory::Sled),
12582 "sledge_hammer" => Some(ExerciseCategory::SledgeHammer),
12583 "stair_stepper" => Some(ExerciseCategory::StairStepper),
12584 "suspension" => Some(ExerciseCategory::Suspension),
12585 "tire" => Some(ExerciseCategory::Tire),
12586 "run_indoor" => Some(ExerciseCategory::RunIndoor),
12587 "bike_outdoor" => Some(ExerciseCategory::BikeOutdoor),
12588 "unknown" => Some(ExerciseCategory::Unknown),
12589 _ => None,
12590 }
12591 }
12592}
12593
12594#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12595#[repr(u16)]
12596#[non_exhaustive]
12597pub enum BenchPressExerciseName {
12598 AlternatingDumbbellChestPressOnSwissBall = 0,
12599 BarbellBenchPress = 1,
12600 BarbellBoardBenchPress = 2,
12601 BarbellFloorPress = 3,
12602 CloseGripBarbellBenchPress = 4,
12603 DeclineDumbbellBenchPress = 5,
12604 DumbbellBenchPress = 6,
12605 DumbbellFloorPress = 7,
12606 InclineBarbellBenchPress = 8,
12607 InclineDumbbellBenchPress = 9,
12608 InclineSmithMachineBenchPress = 10,
12609 IsometricBarbellBenchPress = 11,
12610 KettlebellChestPress = 12,
12611 NeutralGripDumbbellBenchPress = 13,
12612 NeutralGripDumbbellInclineBenchPress = 14,
12613 OneArmFloorPress = 15,
12614 WeightedOneArmFloorPress = 16,
12615 PartialLockout = 17,
12616 ReverseGripBarbellBenchPress = 18,
12617 ReverseGripInclineBenchPress = 19,
12618 SingleArmCableChestPress = 20,
12619 SingleArmDumbbellBenchPress = 21,
12620 SmithMachineBenchPress = 22,
12621 SwissBallDumbbellChestPress = 23,
12622 TripleStopBarbellBenchPress = 24,
12623 WideGripBarbellBenchPress = 25,
12624 AlternatingDumbbellChestPress = 26,
12625}
12626
12627impl BenchPressExerciseName {
12628 pub fn as_str(&self) -> &'static str {
12630 match self {
12631 BenchPressExerciseName::AlternatingDumbbellChestPressOnSwissBall => {
12632 "alternating_dumbbell_chest_press_on_swiss_ball"
12633 }
12634 BenchPressExerciseName::BarbellBenchPress => "barbell_bench_press",
12635 BenchPressExerciseName::BarbellBoardBenchPress => "barbell_board_bench_press",
12636 BenchPressExerciseName::BarbellFloorPress => "barbell_floor_press",
12637 BenchPressExerciseName::CloseGripBarbellBenchPress => "close_grip_barbell_bench_press",
12638 BenchPressExerciseName::DeclineDumbbellBenchPress => "decline_dumbbell_bench_press",
12639 BenchPressExerciseName::DumbbellBenchPress => "dumbbell_bench_press",
12640 BenchPressExerciseName::DumbbellFloorPress => "dumbbell_floor_press",
12641 BenchPressExerciseName::InclineBarbellBenchPress => "incline_barbell_bench_press",
12642 BenchPressExerciseName::InclineDumbbellBenchPress => "incline_dumbbell_bench_press",
12643 BenchPressExerciseName::InclineSmithMachineBenchPress => {
12644 "incline_smith_machine_bench_press"
12645 }
12646 BenchPressExerciseName::IsometricBarbellBenchPress => "isometric_barbell_bench_press",
12647 BenchPressExerciseName::KettlebellChestPress => "kettlebell_chest_press",
12648 BenchPressExerciseName::NeutralGripDumbbellBenchPress => {
12649 "neutral_grip_dumbbell_bench_press"
12650 }
12651 BenchPressExerciseName::NeutralGripDumbbellInclineBenchPress => {
12652 "neutral_grip_dumbbell_incline_bench_press"
12653 }
12654 BenchPressExerciseName::OneArmFloorPress => "one_arm_floor_press",
12655 BenchPressExerciseName::WeightedOneArmFloorPress => "weighted_one_arm_floor_press",
12656 BenchPressExerciseName::PartialLockout => "partial_lockout",
12657 BenchPressExerciseName::ReverseGripBarbellBenchPress => {
12658 "reverse_grip_barbell_bench_press"
12659 }
12660 BenchPressExerciseName::ReverseGripInclineBenchPress => {
12661 "reverse_grip_incline_bench_press"
12662 }
12663 BenchPressExerciseName::SingleArmCableChestPress => "single_arm_cable_chest_press",
12664 BenchPressExerciseName::SingleArmDumbbellBenchPress => {
12665 "single_arm_dumbbell_bench_press"
12666 }
12667 BenchPressExerciseName::SmithMachineBenchPress => "smith_machine_bench_press",
12668 BenchPressExerciseName::SwissBallDumbbellChestPress => {
12669 "swiss_ball_dumbbell_chest_press"
12670 }
12671 BenchPressExerciseName::TripleStopBarbellBenchPress => {
12672 "triple_stop_barbell_bench_press"
12673 }
12674 BenchPressExerciseName::WideGripBarbellBenchPress => "wide_grip_barbell_bench_press",
12675 BenchPressExerciseName::AlternatingDumbbellChestPress => {
12676 "alternating_dumbbell_chest_press"
12677 }
12678 }
12679 }
12680
12681 pub fn from_value(value: u16) -> Option<Self> {
12683 match value {
12684 0 => Some(BenchPressExerciseName::AlternatingDumbbellChestPressOnSwissBall),
12685 1 => Some(BenchPressExerciseName::BarbellBenchPress),
12686 2 => Some(BenchPressExerciseName::BarbellBoardBenchPress),
12687 3 => Some(BenchPressExerciseName::BarbellFloorPress),
12688 4 => Some(BenchPressExerciseName::CloseGripBarbellBenchPress),
12689 5 => Some(BenchPressExerciseName::DeclineDumbbellBenchPress),
12690 6 => Some(BenchPressExerciseName::DumbbellBenchPress),
12691 7 => Some(BenchPressExerciseName::DumbbellFloorPress),
12692 8 => Some(BenchPressExerciseName::InclineBarbellBenchPress),
12693 9 => Some(BenchPressExerciseName::InclineDumbbellBenchPress),
12694 10 => Some(BenchPressExerciseName::InclineSmithMachineBenchPress),
12695 11 => Some(BenchPressExerciseName::IsometricBarbellBenchPress),
12696 12 => Some(BenchPressExerciseName::KettlebellChestPress),
12697 13 => Some(BenchPressExerciseName::NeutralGripDumbbellBenchPress),
12698 14 => Some(BenchPressExerciseName::NeutralGripDumbbellInclineBenchPress),
12699 15 => Some(BenchPressExerciseName::OneArmFloorPress),
12700 16 => Some(BenchPressExerciseName::WeightedOneArmFloorPress),
12701 17 => Some(BenchPressExerciseName::PartialLockout),
12702 18 => Some(BenchPressExerciseName::ReverseGripBarbellBenchPress),
12703 19 => Some(BenchPressExerciseName::ReverseGripInclineBenchPress),
12704 20 => Some(BenchPressExerciseName::SingleArmCableChestPress),
12705 21 => Some(BenchPressExerciseName::SingleArmDumbbellBenchPress),
12706 22 => Some(BenchPressExerciseName::SmithMachineBenchPress),
12707 23 => Some(BenchPressExerciseName::SwissBallDumbbellChestPress),
12708 24 => Some(BenchPressExerciseName::TripleStopBarbellBenchPress),
12709 25 => Some(BenchPressExerciseName::WideGripBarbellBenchPress),
12710 26 => Some(BenchPressExerciseName::AlternatingDumbbellChestPress),
12711 _ => None,
12712 }
12713 }
12714
12715 pub fn from_str(name: &str) -> Option<Self> {
12717 match name {
12718 "alternating_dumbbell_chest_press_on_swiss_ball" => {
12719 Some(BenchPressExerciseName::AlternatingDumbbellChestPressOnSwissBall)
12720 }
12721 "barbell_bench_press" => Some(BenchPressExerciseName::BarbellBenchPress),
12722 "barbell_board_bench_press" => Some(BenchPressExerciseName::BarbellBoardBenchPress),
12723 "barbell_floor_press" => Some(BenchPressExerciseName::BarbellFloorPress),
12724 "close_grip_barbell_bench_press" => {
12725 Some(BenchPressExerciseName::CloseGripBarbellBenchPress)
12726 }
12727 "decline_dumbbell_bench_press" => {
12728 Some(BenchPressExerciseName::DeclineDumbbellBenchPress)
12729 }
12730 "dumbbell_bench_press" => Some(BenchPressExerciseName::DumbbellBenchPress),
12731 "dumbbell_floor_press" => Some(BenchPressExerciseName::DumbbellFloorPress),
12732 "incline_barbell_bench_press" => Some(BenchPressExerciseName::InclineBarbellBenchPress),
12733 "incline_dumbbell_bench_press" => {
12734 Some(BenchPressExerciseName::InclineDumbbellBenchPress)
12735 }
12736 "incline_smith_machine_bench_press" => {
12737 Some(BenchPressExerciseName::InclineSmithMachineBenchPress)
12738 }
12739 "isometric_barbell_bench_press" => {
12740 Some(BenchPressExerciseName::IsometricBarbellBenchPress)
12741 }
12742 "kettlebell_chest_press" => Some(BenchPressExerciseName::KettlebellChestPress),
12743 "neutral_grip_dumbbell_bench_press" => {
12744 Some(BenchPressExerciseName::NeutralGripDumbbellBenchPress)
12745 }
12746 "neutral_grip_dumbbell_incline_bench_press" => {
12747 Some(BenchPressExerciseName::NeutralGripDumbbellInclineBenchPress)
12748 }
12749 "one_arm_floor_press" => Some(BenchPressExerciseName::OneArmFloorPress),
12750 "weighted_one_arm_floor_press" => {
12751 Some(BenchPressExerciseName::WeightedOneArmFloorPress)
12752 }
12753 "partial_lockout" => Some(BenchPressExerciseName::PartialLockout),
12754 "reverse_grip_barbell_bench_press" => {
12755 Some(BenchPressExerciseName::ReverseGripBarbellBenchPress)
12756 }
12757 "reverse_grip_incline_bench_press" => {
12758 Some(BenchPressExerciseName::ReverseGripInclineBenchPress)
12759 }
12760 "single_arm_cable_chest_press" => {
12761 Some(BenchPressExerciseName::SingleArmCableChestPress)
12762 }
12763 "single_arm_dumbbell_bench_press" => {
12764 Some(BenchPressExerciseName::SingleArmDumbbellBenchPress)
12765 }
12766 "smith_machine_bench_press" => Some(BenchPressExerciseName::SmithMachineBenchPress),
12767 "swiss_ball_dumbbell_chest_press" => {
12768 Some(BenchPressExerciseName::SwissBallDumbbellChestPress)
12769 }
12770 "triple_stop_barbell_bench_press" => {
12771 Some(BenchPressExerciseName::TripleStopBarbellBenchPress)
12772 }
12773 "wide_grip_barbell_bench_press" => {
12774 Some(BenchPressExerciseName::WideGripBarbellBenchPress)
12775 }
12776 "alternating_dumbbell_chest_press" => {
12777 Some(BenchPressExerciseName::AlternatingDumbbellChestPress)
12778 }
12779 _ => None,
12780 }
12781 }
12782}
12783
12784#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12785#[repr(u16)]
12786#[non_exhaustive]
12787pub enum CalfRaiseExerciseName {
12788 _3WayCalfRaise = 0,
12789 _3WayWeightedCalfRaise = 1,
12790 _3WaySingleLegCalfRaise = 2,
12791 _3WayWeightedSingleLegCalfRaise = 3,
12792 DonkeyCalfRaise = 4,
12793 WeightedDonkeyCalfRaise = 5,
12794 SeatedCalfRaise = 6,
12795 WeightedSeatedCalfRaise = 7,
12796 SeatedDumbbellToeRaise = 8,
12797 SingleLegBentKneeCalfRaise = 9,
12798 WeightedSingleLegBentKneeCalfRaise = 10,
12799 SingleLegDeclinePushUp = 11,
12800 SingleLegDonkeyCalfRaise = 12,
12801 WeightedSingleLegDonkeyCalfRaise = 13,
12802 SingleLegHipRaiseWithKneeHold = 14,
12803 SingleLegStandingCalfRaise = 15,
12804 SingleLegStandingDumbbellCalfRaise = 16,
12805 StandingBarbellCalfRaise = 17,
12806 StandingCalfRaise = 18,
12807 WeightedStandingCalfRaise = 19,
12808 StandingDumbbellCalfRaise = 20,
12809}
12810
12811impl CalfRaiseExerciseName {
12812 pub fn as_str(&self) -> &'static str {
12814 match self {
12815 CalfRaiseExerciseName::_3WayCalfRaise => "3_way_calf_raise",
12816 CalfRaiseExerciseName::_3WayWeightedCalfRaise => "3_way_weighted_calf_raise",
12817 CalfRaiseExerciseName::_3WaySingleLegCalfRaise => "3_way_single_leg_calf_raise",
12818 CalfRaiseExerciseName::_3WayWeightedSingleLegCalfRaise => {
12819 "3_way_weighted_single_leg_calf_raise"
12820 }
12821 CalfRaiseExerciseName::DonkeyCalfRaise => "donkey_calf_raise",
12822 CalfRaiseExerciseName::WeightedDonkeyCalfRaise => "weighted_donkey_calf_raise",
12823 CalfRaiseExerciseName::SeatedCalfRaise => "seated_calf_raise",
12824 CalfRaiseExerciseName::WeightedSeatedCalfRaise => "weighted_seated_calf_raise",
12825 CalfRaiseExerciseName::SeatedDumbbellToeRaise => "seated_dumbbell_toe_raise",
12826 CalfRaiseExerciseName::SingleLegBentKneeCalfRaise => "single_leg_bent_knee_calf_raise",
12827 CalfRaiseExerciseName::WeightedSingleLegBentKneeCalfRaise => {
12828 "weighted_single_leg_bent_knee_calf_raise"
12829 }
12830 CalfRaiseExerciseName::SingleLegDeclinePushUp => "single_leg_decline_push_up",
12831 CalfRaiseExerciseName::SingleLegDonkeyCalfRaise => "single_leg_donkey_calf_raise",
12832 CalfRaiseExerciseName::WeightedSingleLegDonkeyCalfRaise => {
12833 "weighted_single_leg_donkey_calf_raise"
12834 }
12835 CalfRaiseExerciseName::SingleLegHipRaiseWithKneeHold => {
12836 "single_leg_hip_raise_with_knee_hold"
12837 }
12838 CalfRaiseExerciseName::SingleLegStandingCalfRaise => "single_leg_standing_calf_raise",
12839 CalfRaiseExerciseName::SingleLegStandingDumbbellCalfRaise => {
12840 "single_leg_standing_dumbbell_calf_raise"
12841 }
12842 CalfRaiseExerciseName::StandingBarbellCalfRaise => "standing_barbell_calf_raise",
12843 CalfRaiseExerciseName::StandingCalfRaise => "standing_calf_raise",
12844 CalfRaiseExerciseName::WeightedStandingCalfRaise => "weighted_standing_calf_raise",
12845 CalfRaiseExerciseName::StandingDumbbellCalfRaise => "standing_dumbbell_calf_raise",
12846 }
12847 }
12848
12849 pub fn from_value(value: u16) -> Option<Self> {
12851 match value {
12852 0 => Some(CalfRaiseExerciseName::_3WayCalfRaise),
12853 1 => Some(CalfRaiseExerciseName::_3WayWeightedCalfRaise),
12854 2 => Some(CalfRaiseExerciseName::_3WaySingleLegCalfRaise),
12855 3 => Some(CalfRaiseExerciseName::_3WayWeightedSingleLegCalfRaise),
12856 4 => Some(CalfRaiseExerciseName::DonkeyCalfRaise),
12857 5 => Some(CalfRaiseExerciseName::WeightedDonkeyCalfRaise),
12858 6 => Some(CalfRaiseExerciseName::SeatedCalfRaise),
12859 7 => Some(CalfRaiseExerciseName::WeightedSeatedCalfRaise),
12860 8 => Some(CalfRaiseExerciseName::SeatedDumbbellToeRaise),
12861 9 => Some(CalfRaiseExerciseName::SingleLegBentKneeCalfRaise),
12862 10 => Some(CalfRaiseExerciseName::WeightedSingleLegBentKneeCalfRaise),
12863 11 => Some(CalfRaiseExerciseName::SingleLegDeclinePushUp),
12864 12 => Some(CalfRaiseExerciseName::SingleLegDonkeyCalfRaise),
12865 13 => Some(CalfRaiseExerciseName::WeightedSingleLegDonkeyCalfRaise),
12866 14 => Some(CalfRaiseExerciseName::SingleLegHipRaiseWithKneeHold),
12867 15 => Some(CalfRaiseExerciseName::SingleLegStandingCalfRaise),
12868 16 => Some(CalfRaiseExerciseName::SingleLegStandingDumbbellCalfRaise),
12869 17 => Some(CalfRaiseExerciseName::StandingBarbellCalfRaise),
12870 18 => Some(CalfRaiseExerciseName::StandingCalfRaise),
12871 19 => Some(CalfRaiseExerciseName::WeightedStandingCalfRaise),
12872 20 => Some(CalfRaiseExerciseName::StandingDumbbellCalfRaise),
12873 _ => None,
12874 }
12875 }
12876
12877 pub fn from_str(name: &str) -> Option<Self> {
12879 match name {
12880 "3_way_calf_raise" => Some(CalfRaiseExerciseName::_3WayCalfRaise),
12881 "3_way_weighted_calf_raise" => Some(CalfRaiseExerciseName::_3WayWeightedCalfRaise),
12882 "3_way_single_leg_calf_raise" => Some(CalfRaiseExerciseName::_3WaySingleLegCalfRaise),
12883 "3_way_weighted_single_leg_calf_raise" => {
12884 Some(CalfRaiseExerciseName::_3WayWeightedSingleLegCalfRaise)
12885 }
12886 "donkey_calf_raise" => Some(CalfRaiseExerciseName::DonkeyCalfRaise),
12887 "weighted_donkey_calf_raise" => Some(CalfRaiseExerciseName::WeightedDonkeyCalfRaise),
12888 "seated_calf_raise" => Some(CalfRaiseExerciseName::SeatedCalfRaise),
12889 "weighted_seated_calf_raise" => Some(CalfRaiseExerciseName::WeightedSeatedCalfRaise),
12890 "seated_dumbbell_toe_raise" => Some(CalfRaiseExerciseName::SeatedDumbbellToeRaise),
12891 "single_leg_bent_knee_calf_raise" => {
12892 Some(CalfRaiseExerciseName::SingleLegBentKneeCalfRaise)
12893 }
12894 "weighted_single_leg_bent_knee_calf_raise" => {
12895 Some(CalfRaiseExerciseName::WeightedSingleLegBentKneeCalfRaise)
12896 }
12897 "single_leg_decline_push_up" => Some(CalfRaiseExerciseName::SingleLegDeclinePushUp),
12898 "single_leg_donkey_calf_raise" => Some(CalfRaiseExerciseName::SingleLegDonkeyCalfRaise),
12899 "weighted_single_leg_donkey_calf_raise" => {
12900 Some(CalfRaiseExerciseName::WeightedSingleLegDonkeyCalfRaise)
12901 }
12902 "single_leg_hip_raise_with_knee_hold" => {
12903 Some(CalfRaiseExerciseName::SingleLegHipRaiseWithKneeHold)
12904 }
12905 "single_leg_standing_calf_raise" => {
12906 Some(CalfRaiseExerciseName::SingleLegStandingCalfRaise)
12907 }
12908 "single_leg_standing_dumbbell_calf_raise" => {
12909 Some(CalfRaiseExerciseName::SingleLegStandingDumbbellCalfRaise)
12910 }
12911 "standing_barbell_calf_raise" => Some(CalfRaiseExerciseName::StandingBarbellCalfRaise),
12912 "standing_calf_raise" => Some(CalfRaiseExerciseName::StandingCalfRaise),
12913 "weighted_standing_calf_raise" => {
12914 Some(CalfRaiseExerciseName::WeightedStandingCalfRaise)
12915 }
12916 "standing_dumbbell_calf_raise" => {
12917 Some(CalfRaiseExerciseName::StandingDumbbellCalfRaise)
12918 }
12919 _ => None,
12920 }
12921 }
12922}
12923
12924#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
12925#[repr(u16)]
12926#[non_exhaustive]
12927pub enum CardioExerciseName {
12928 BobAndWeaveCircle = 0,
12929 WeightedBobAndWeaveCircle = 1,
12930 CardioCoreCrawl = 2,
12931 WeightedCardioCoreCrawl = 3,
12932 DoubleUnder = 4,
12933 WeightedDoubleUnder = 5,
12934 JumpRope = 6,
12935 WeightedJumpRope = 7,
12936 JumpRopeCrossover = 8,
12937 WeightedJumpRopeCrossover = 9,
12938 JumpRopeJog = 10,
12939 WeightedJumpRopeJog = 11,
12940 JumpingJacks = 12,
12941 WeightedJumpingJacks = 13,
12942 SkiMoguls = 14,
12943 WeightedSkiMoguls = 15,
12944 SplitJacks = 16,
12945 WeightedSplitJacks = 17,
12946 SquatJacks = 18,
12947 WeightedSquatJacks = 19,
12948 TripleUnder = 20,
12949 WeightedTripleUnder = 21,
12950 Elliptical = 22,
12951 Spinning = 23,
12952 PolePaddleForwardWheelchair = 24,
12953 PolePaddleBackwardWheelchair = 25,
12954 PoleHandcycleForwardWheelchair = 26,
12955 PoleHandcycleBackwardWheelchair = 27,
12956 PoleRainbowWheelchair = 28,
12957 DoublePunchForwardWheelchair = 29,
12958 DoublePunchDownWheelchair = 30,
12959 DoublePunchSidewaysWheelchair = 31,
12960 DoublePunchUpWheelchair = 32,
12961 SitSkiWheelchair = 33,
12962 SittingJacksWheelchair = 34,
12963 PunchForwardWheelchair = 35,
12964 PunchDownWheelchair = 36,
12965 PunchSidewaysWheelchair = 37,
12966 PunchUpWheelchair = 38,
12967 PunchBagWheelchair = 39,
12968 PoleDdFfUuWheelchair = 40,
12969 ButterflyArmsWheelchair = 41,
12970 Punch = 42,
12971}
12972
12973impl CardioExerciseName {
12974 pub fn as_str(&self) -> &'static str {
12976 match self {
12977 CardioExerciseName::BobAndWeaveCircle => "bob_and_weave_circle",
12978 CardioExerciseName::WeightedBobAndWeaveCircle => "weighted_bob_and_weave_circle",
12979 CardioExerciseName::CardioCoreCrawl => "cardio_core_crawl",
12980 CardioExerciseName::WeightedCardioCoreCrawl => "weighted_cardio_core_crawl",
12981 CardioExerciseName::DoubleUnder => "double_under",
12982 CardioExerciseName::WeightedDoubleUnder => "weighted_double_under",
12983 CardioExerciseName::JumpRope => "jump_rope",
12984 CardioExerciseName::WeightedJumpRope => "weighted_jump_rope",
12985 CardioExerciseName::JumpRopeCrossover => "jump_rope_crossover",
12986 CardioExerciseName::WeightedJumpRopeCrossover => "weighted_jump_rope_crossover",
12987 CardioExerciseName::JumpRopeJog => "jump_rope_jog",
12988 CardioExerciseName::WeightedJumpRopeJog => "weighted_jump_rope_jog",
12989 CardioExerciseName::JumpingJacks => "jumping_jacks",
12990 CardioExerciseName::WeightedJumpingJacks => "weighted_jumping_jacks",
12991 CardioExerciseName::SkiMoguls => "ski_moguls",
12992 CardioExerciseName::WeightedSkiMoguls => "weighted_ski_moguls",
12993 CardioExerciseName::SplitJacks => "split_jacks",
12994 CardioExerciseName::WeightedSplitJacks => "weighted_split_jacks",
12995 CardioExerciseName::SquatJacks => "squat_jacks",
12996 CardioExerciseName::WeightedSquatJacks => "weighted_squat_jacks",
12997 CardioExerciseName::TripleUnder => "triple_under",
12998 CardioExerciseName::WeightedTripleUnder => "weighted_triple_under",
12999 CardioExerciseName::Elliptical => "elliptical",
13000 CardioExerciseName::Spinning => "spinning",
13001 CardioExerciseName::PolePaddleForwardWheelchair => "pole_paddle_forward_wheelchair",
13002 CardioExerciseName::PolePaddleBackwardWheelchair => "pole_paddle_backward_wheelchair",
13003 CardioExerciseName::PoleHandcycleForwardWheelchair => {
13004 "pole_handcycle_forward_wheelchair"
13005 }
13006 CardioExerciseName::PoleHandcycleBackwardWheelchair => {
13007 "pole_handcycle_backward_wheelchair"
13008 }
13009 CardioExerciseName::PoleRainbowWheelchair => "pole_rainbow_wheelchair",
13010 CardioExerciseName::DoublePunchForwardWheelchair => "double_punch_forward_wheelchair",
13011 CardioExerciseName::DoublePunchDownWheelchair => "double_punch_down_wheelchair",
13012 CardioExerciseName::DoublePunchSidewaysWheelchair => "double_punch_sideways_wheelchair",
13013 CardioExerciseName::DoublePunchUpWheelchair => "double_punch_up_wheelchair",
13014 CardioExerciseName::SitSkiWheelchair => "sit_ski_wheelchair",
13015 CardioExerciseName::SittingJacksWheelchair => "sitting_jacks_wheelchair",
13016 CardioExerciseName::PunchForwardWheelchair => "punch_forward_wheelchair",
13017 CardioExerciseName::PunchDownWheelchair => "punch_down_wheelchair",
13018 CardioExerciseName::PunchSidewaysWheelchair => "punch_sideways_wheelchair",
13019 CardioExerciseName::PunchUpWheelchair => "punch_up_wheelchair",
13020 CardioExerciseName::PunchBagWheelchair => "punch_bag_wheelchair",
13021 CardioExerciseName::PoleDdFfUuWheelchair => "pole_dd_ff_uu_wheelchair",
13022 CardioExerciseName::ButterflyArmsWheelchair => "butterfly_arms_wheelchair",
13023 CardioExerciseName::Punch => "punch",
13024 }
13025 }
13026
13027 pub fn from_value(value: u16) -> Option<Self> {
13029 match value {
13030 0 => Some(CardioExerciseName::BobAndWeaveCircle),
13031 1 => Some(CardioExerciseName::WeightedBobAndWeaveCircle),
13032 2 => Some(CardioExerciseName::CardioCoreCrawl),
13033 3 => Some(CardioExerciseName::WeightedCardioCoreCrawl),
13034 4 => Some(CardioExerciseName::DoubleUnder),
13035 5 => Some(CardioExerciseName::WeightedDoubleUnder),
13036 6 => Some(CardioExerciseName::JumpRope),
13037 7 => Some(CardioExerciseName::WeightedJumpRope),
13038 8 => Some(CardioExerciseName::JumpRopeCrossover),
13039 9 => Some(CardioExerciseName::WeightedJumpRopeCrossover),
13040 10 => Some(CardioExerciseName::JumpRopeJog),
13041 11 => Some(CardioExerciseName::WeightedJumpRopeJog),
13042 12 => Some(CardioExerciseName::JumpingJacks),
13043 13 => Some(CardioExerciseName::WeightedJumpingJacks),
13044 14 => Some(CardioExerciseName::SkiMoguls),
13045 15 => Some(CardioExerciseName::WeightedSkiMoguls),
13046 16 => Some(CardioExerciseName::SplitJacks),
13047 17 => Some(CardioExerciseName::WeightedSplitJacks),
13048 18 => Some(CardioExerciseName::SquatJacks),
13049 19 => Some(CardioExerciseName::WeightedSquatJacks),
13050 20 => Some(CardioExerciseName::TripleUnder),
13051 21 => Some(CardioExerciseName::WeightedTripleUnder),
13052 22 => Some(CardioExerciseName::Elliptical),
13053 23 => Some(CardioExerciseName::Spinning),
13054 24 => Some(CardioExerciseName::PolePaddleForwardWheelchair),
13055 25 => Some(CardioExerciseName::PolePaddleBackwardWheelchair),
13056 26 => Some(CardioExerciseName::PoleHandcycleForwardWheelchair),
13057 27 => Some(CardioExerciseName::PoleHandcycleBackwardWheelchair),
13058 28 => Some(CardioExerciseName::PoleRainbowWheelchair),
13059 29 => Some(CardioExerciseName::DoublePunchForwardWheelchair),
13060 30 => Some(CardioExerciseName::DoublePunchDownWheelchair),
13061 31 => Some(CardioExerciseName::DoublePunchSidewaysWheelchair),
13062 32 => Some(CardioExerciseName::DoublePunchUpWheelchair),
13063 33 => Some(CardioExerciseName::SitSkiWheelchair),
13064 34 => Some(CardioExerciseName::SittingJacksWheelchair),
13065 35 => Some(CardioExerciseName::PunchForwardWheelchair),
13066 36 => Some(CardioExerciseName::PunchDownWheelchair),
13067 37 => Some(CardioExerciseName::PunchSidewaysWheelchair),
13068 38 => Some(CardioExerciseName::PunchUpWheelchair),
13069 39 => Some(CardioExerciseName::PunchBagWheelchair),
13070 40 => Some(CardioExerciseName::PoleDdFfUuWheelchair),
13071 41 => Some(CardioExerciseName::ButterflyArmsWheelchair),
13072 42 => Some(CardioExerciseName::Punch),
13073 _ => None,
13074 }
13075 }
13076
13077 pub fn from_str(name: &str) -> Option<Self> {
13079 match name {
13080 "bob_and_weave_circle" => Some(CardioExerciseName::BobAndWeaveCircle),
13081 "weighted_bob_and_weave_circle" => Some(CardioExerciseName::WeightedBobAndWeaveCircle),
13082 "cardio_core_crawl" => Some(CardioExerciseName::CardioCoreCrawl),
13083 "weighted_cardio_core_crawl" => Some(CardioExerciseName::WeightedCardioCoreCrawl),
13084 "double_under" => Some(CardioExerciseName::DoubleUnder),
13085 "weighted_double_under" => Some(CardioExerciseName::WeightedDoubleUnder),
13086 "jump_rope" => Some(CardioExerciseName::JumpRope),
13087 "weighted_jump_rope" => Some(CardioExerciseName::WeightedJumpRope),
13088 "jump_rope_crossover" => Some(CardioExerciseName::JumpRopeCrossover),
13089 "weighted_jump_rope_crossover" => Some(CardioExerciseName::WeightedJumpRopeCrossover),
13090 "jump_rope_jog" => Some(CardioExerciseName::JumpRopeJog),
13091 "weighted_jump_rope_jog" => Some(CardioExerciseName::WeightedJumpRopeJog),
13092 "jumping_jacks" => Some(CardioExerciseName::JumpingJacks),
13093 "weighted_jumping_jacks" => Some(CardioExerciseName::WeightedJumpingJacks),
13094 "ski_moguls" => Some(CardioExerciseName::SkiMoguls),
13095 "weighted_ski_moguls" => Some(CardioExerciseName::WeightedSkiMoguls),
13096 "split_jacks" => Some(CardioExerciseName::SplitJacks),
13097 "weighted_split_jacks" => Some(CardioExerciseName::WeightedSplitJacks),
13098 "squat_jacks" => Some(CardioExerciseName::SquatJacks),
13099 "weighted_squat_jacks" => Some(CardioExerciseName::WeightedSquatJacks),
13100 "triple_under" => Some(CardioExerciseName::TripleUnder),
13101 "weighted_triple_under" => Some(CardioExerciseName::WeightedTripleUnder),
13102 "elliptical" => Some(CardioExerciseName::Elliptical),
13103 "spinning" => Some(CardioExerciseName::Spinning),
13104 "pole_paddle_forward_wheelchair" => {
13105 Some(CardioExerciseName::PolePaddleForwardWheelchair)
13106 }
13107 "pole_paddle_backward_wheelchair" => {
13108 Some(CardioExerciseName::PolePaddleBackwardWheelchair)
13109 }
13110 "pole_handcycle_forward_wheelchair" => {
13111 Some(CardioExerciseName::PoleHandcycleForwardWheelchair)
13112 }
13113 "pole_handcycle_backward_wheelchair" => {
13114 Some(CardioExerciseName::PoleHandcycleBackwardWheelchair)
13115 }
13116 "pole_rainbow_wheelchair" => Some(CardioExerciseName::PoleRainbowWheelchair),
13117 "double_punch_forward_wheelchair" => {
13118 Some(CardioExerciseName::DoublePunchForwardWheelchair)
13119 }
13120 "double_punch_down_wheelchair" => Some(CardioExerciseName::DoublePunchDownWheelchair),
13121 "double_punch_sideways_wheelchair" => {
13122 Some(CardioExerciseName::DoublePunchSidewaysWheelchair)
13123 }
13124 "double_punch_up_wheelchair" => Some(CardioExerciseName::DoublePunchUpWheelchair),
13125 "sit_ski_wheelchair" => Some(CardioExerciseName::SitSkiWheelchair),
13126 "sitting_jacks_wheelchair" => Some(CardioExerciseName::SittingJacksWheelchair),
13127 "punch_forward_wheelchair" => Some(CardioExerciseName::PunchForwardWheelchair),
13128 "punch_down_wheelchair" => Some(CardioExerciseName::PunchDownWheelchair),
13129 "punch_sideways_wheelchair" => Some(CardioExerciseName::PunchSidewaysWheelchair),
13130 "punch_up_wheelchair" => Some(CardioExerciseName::PunchUpWheelchair),
13131 "punch_bag_wheelchair" => Some(CardioExerciseName::PunchBagWheelchair),
13132 "pole_dd_ff_uu_wheelchair" => Some(CardioExerciseName::PoleDdFfUuWheelchair),
13133 "butterfly_arms_wheelchair" => Some(CardioExerciseName::ButterflyArmsWheelchair),
13134 "punch" => Some(CardioExerciseName::Punch),
13135 _ => None,
13136 }
13137 }
13138}
13139
13140#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
13141#[repr(u16)]
13142#[non_exhaustive]
13143pub enum CarryExerciseName {
13144 BarHolds = 0,
13145 FarmersWalk = 1,
13146 FarmersWalkOnToes = 2,
13147 HexDumbbellHold = 3,
13148 OverheadCarry = 4,
13149 DumbbellWaiterCarry = 5,
13150 FarmersCarryWalkLunge = 6,
13151 FarmersCarry = 7,
13152 FarmersCarryOnToes = 8,
13153}
13154
13155impl CarryExerciseName {
13156 pub fn as_str(&self) -> &'static str {
13158 match self {
13159 CarryExerciseName::BarHolds => "bar_holds",
13160 CarryExerciseName::FarmersWalk => "farmers_walk",
13161 CarryExerciseName::FarmersWalkOnToes => "farmers_walk_on_toes",
13162 CarryExerciseName::HexDumbbellHold => "hex_dumbbell_hold",
13163 CarryExerciseName::OverheadCarry => "overhead_carry",
13164 CarryExerciseName::DumbbellWaiterCarry => "dumbbell_waiter_carry",
13165 CarryExerciseName::FarmersCarryWalkLunge => "farmers_carry_walk_lunge",
13166 CarryExerciseName::FarmersCarry => "farmers_carry",
13167 CarryExerciseName::FarmersCarryOnToes => "farmers_carry_on_toes",
13168 }
13169 }
13170
13171 pub fn from_value(value: u16) -> Option<Self> {
13173 match value {
13174 0 => Some(CarryExerciseName::BarHolds),
13175 1 => Some(CarryExerciseName::FarmersWalk),
13176 2 => Some(CarryExerciseName::FarmersWalkOnToes),
13177 3 => Some(CarryExerciseName::HexDumbbellHold),
13178 4 => Some(CarryExerciseName::OverheadCarry),
13179 5 => Some(CarryExerciseName::DumbbellWaiterCarry),
13180 6 => Some(CarryExerciseName::FarmersCarryWalkLunge),
13181 7 => Some(CarryExerciseName::FarmersCarry),
13182 8 => Some(CarryExerciseName::FarmersCarryOnToes),
13183 _ => None,
13184 }
13185 }
13186
13187 pub fn from_str(name: &str) -> Option<Self> {
13189 match name {
13190 "bar_holds" => Some(CarryExerciseName::BarHolds),
13191 "farmers_walk" => Some(CarryExerciseName::FarmersWalk),
13192 "farmers_walk_on_toes" => Some(CarryExerciseName::FarmersWalkOnToes),
13193 "hex_dumbbell_hold" => Some(CarryExerciseName::HexDumbbellHold),
13194 "overhead_carry" => Some(CarryExerciseName::OverheadCarry),
13195 "dumbbell_waiter_carry" => Some(CarryExerciseName::DumbbellWaiterCarry),
13196 "farmers_carry_walk_lunge" => Some(CarryExerciseName::FarmersCarryWalkLunge),
13197 "farmers_carry" => Some(CarryExerciseName::FarmersCarry),
13198 "farmers_carry_on_toes" => Some(CarryExerciseName::FarmersCarryOnToes),
13199 _ => None,
13200 }
13201 }
13202}
13203
13204#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
13205#[repr(u16)]
13206#[non_exhaustive]
13207pub enum ChopExerciseName {
13208 CablePullThrough = 0,
13209 CableRotationalLift = 1,
13210 CableWoodchop = 2,
13211 CrossChopToKnee = 3,
13212 WeightedCrossChopToKnee = 4,
13213 DumbbellChop = 5,
13214 HalfKneelingRotation = 6,
13215 WeightedHalfKneelingRotation = 7,
13216 HalfKneelingRotationalChop = 8,
13217 HalfKneelingRotationalReverseChop = 9,
13218 HalfKneelingStabilityChop = 10,
13219 HalfKneelingStabilityReverseChop = 11,
13220 KneelingRotationalChop = 12,
13221 KneelingRotationalReverseChop = 13,
13222 KneelingStabilityChop = 14,
13223 KneelingWoodchopper = 15,
13224 MedicineBallWoodChops = 16,
13225 PowerSquatChops = 17,
13226 WeightedPowerSquatChops = 18,
13227 StandingRotationalChop = 19,
13228 StandingSplitRotationalChop = 20,
13229 StandingSplitRotationalReverseChop = 21,
13230 StandingStabilityReverseChop = 22,
13231}
13232
13233impl ChopExerciseName {
13234 pub fn as_str(&self) -> &'static str {
13236 match self {
13237 ChopExerciseName::CablePullThrough => "cable_pull_through",
13238 ChopExerciseName::CableRotationalLift => "cable_rotational_lift",
13239 ChopExerciseName::CableWoodchop => "cable_woodchop",
13240 ChopExerciseName::CrossChopToKnee => "cross_chop_to_knee",
13241 ChopExerciseName::WeightedCrossChopToKnee => "weighted_cross_chop_to_knee",
13242 ChopExerciseName::DumbbellChop => "dumbbell_chop",
13243 ChopExerciseName::HalfKneelingRotation => "half_kneeling_rotation",
13244 ChopExerciseName::WeightedHalfKneelingRotation => "weighted_half_kneeling_rotation",
13245 ChopExerciseName::HalfKneelingRotationalChop => "half_kneeling_rotational_chop",
13246 ChopExerciseName::HalfKneelingRotationalReverseChop => {
13247 "half_kneeling_rotational_reverse_chop"
13248 }
13249 ChopExerciseName::HalfKneelingStabilityChop => "half_kneeling_stability_chop",
13250 ChopExerciseName::HalfKneelingStabilityReverseChop => {
13251 "half_kneeling_stability_reverse_chop"
13252 }
13253 ChopExerciseName::KneelingRotationalChop => "kneeling_rotational_chop",
13254 ChopExerciseName::KneelingRotationalReverseChop => "kneeling_rotational_reverse_chop",
13255 ChopExerciseName::KneelingStabilityChop => "kneeling_stability_chop",
13256 ChopExerciseName::KneelingWoodchopper => "kneeling_woodchopper",
13257 ChopExerciseName::MedicineBallWoodChops => "medicine_ball_wood_chops",
13258 ChopExerciseName::PowerSquatChops => "power_squat_chops",
13259 ChopExerciseName::WeightedPowerSquatChops => "weighted_power_squat_chops",
13260 ChopExerciseName::StandingRotationalChop => "standing_rotational_chop",
13261 ChopExerciseName::StandingSplitRotationalChop => "standing_split_rotational_chop",
13262 ChopExerciseName::StandingSplitRotationalReverseChop => {
13263 "standing_split_rotational_reverse_chop"
13264 }
13265 ChopExerciseName::StandingStabilityReverseChop => "standing_stability_reverse_chop",
13266 }
13267 }
13268
13269 pub fn from_value(value: u16) -> Option<Self> {
13271 match value {
13272 0 => Some(ChopExerciseName::CablePullThrough),
13273 1 => Some(ChopExerciseName::CableRotationalLift),
13274 2 => Some(ChopExerciseName::CableWoodchop),
13275 3 => Some(ChopExerciseName::CrossChopToKnee),
13276 4 => Some(ChopExerciseName::WeightedCrossChopToKnee),
13277 5 => Some(ChopExerciseName::DumbbellChop),
13278 6 => Some(ChopExerciseName::HalfKneelingRotation),
13279 7 => Some(ChopExerciseName::WeightedHalfKneelingRotation),
13280 8 => Some(ChopExerciseName::HalfKneelingRotationalChop),
13281 9 => Some(ChopExerciseName::HalfKneelingRotationalReverseChop),
13282 10 => Some(ChopExerciseName::HalfKneelingStabilityChop),
13283 11 => Some(ChopExerciseName::HalfKneelingStabilityReverseChop),
13284 12 => Some(ChopExerciseName::KneelingRotationalChop),
13285 13 => Some(ChopExerciseName::KneelingRotationalReverseChop),
13286 14 => Some(ChopExerciseName::KneelingStabilityChop),
13287 15 => Some(ChopExerciseName::KneelingWoodchopper),
13288 16 => Some(ChopExerciseName::MedicineBallWoodChops),
13289 17 => Some(ChopExerciseName::PowerSquatChops),
13290 18 => Some(ChopExerciseName::WeightedPowerSquatChops),
13291 19 => Some(ChopExerciseName::StandingRotationalChop),
13292 20 => Some(ChopExerciseName::StandingSplitRotationalChop),
13293 21 => Some(ChopExerciseName::StandingSplitRotationalReverseChop),
13294 22 => Some(ChopExerciseName::StandingStabilityReverseChop),
13295 _ => None,
13296 }
13297 }
13298
13299 pub fn from_str(name: &str) -> Option<Self> {
13301 match name {
13302 "cable_pull_through" => Some(ChopExerciseName::CablePullThrough),
13303 "cable_rotational_lift" => Some(ChopExerciseName::CableRotationalLift),
13304 "cable_woodchop" => Some(ChopExerciseName::CableWoodchop),
13305 "cross_chop_to_knee" => Some(ChopExerciseName::CrossChopToKnee),
13306 "weighted_cross_chop_to_knee" => Some(ChopExerciseName::WeightedCrossChopToKnee),
13307 "dumbbell_chop" => Some(ChopExerciseName::DumbbellChop),
13308 "half_kneeling_rotation" => Some(ChopExerciseName::HalfKneelingRotation),
13309 "weighted_half_kneeling_rotation" => {
13310 Some(ChopExerciseName::WeightedHalfKneelingRotation)
13311 }
13312 "half_kneeling_rotational_chop" => Some(ChopExerciseName::HalfKneelingRotationalChop),
13313 "half_kneeling_rotational_reverse_chop" => {
13314 Some(ChopExerciseName::HalfKneelingRotationalReverseChop)
13315 }
13316 "half_kneeling_stability_chop" => Some(ChopExerciseName::HalfKneelingStabilityChop),
13317 "half_kneeling_stability_reverse_chop" => {
13318 Some(ChopExerciseName::HalfKneelingStabilityReverseChop)
13319 }
13320 "kneeling_rotational_chop" => Some(ChopExerciseName::KneelingRotationalChop),
13321 "kneeling_rotational_reverse_chop" => {
13322 Some(ChopExerciseName::KneelingRotationalReverseChop)
13323 }
13324 "kneeling_stability_chop" => Some(ChopExerciseName::KneelingStabilityChop),
13325 "kneeling_woodchopper" => Some(ChopExerciseName::KneelingWoodchopper),
13326 "medicine_ball_wood_chops" => Some(ChopExerciseName::MedicineBallWoodChops),
13327 "power_squat_chops" => Some(ChopExerciseName::PowerSquatChops),
13328 "weighted_power_squat_chops" => Some(ChopExerciseName::WeightedPowerSquatChops),
13329 "standing_rotational_chop" => Some(ChopExerciseName::StandingRotationalChop),
13330 "standing_split_rotational_chop" => Some(ChopExerciseName::StandingSplitRotationalChop),
13331 "standing_split_rotational_reverse_chop" => {
13332 Some(ChopExerciseName::StandingSplitRotationalReverseChop)
13333 }
13334 "standing_stability_reverse_chop" => {
13335 Some(ChopExerciseName::StandingStabilityReverseChop)
13336 }
13337 _ => None,
13338 }
13339 }
13340}
13341
13342#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
13343#[repr(u16)]
13344#[non_exhaustive]
13345pub enum CoreExerciseName {
13346 AbsJabs = 0,
13347 WeightedAbsJabs = 1,
13348 AlternatingPlateReach = 2,
13349 BarbellRollout = 3,
13350 WeightedBarbellRollout = 4,
13351 BodyBarObliqueTwist = 5,
13352 CableCorePress = 6,
13353 CableSideBend = 7,
13354 SideBend = 8,
13355 WeightedSideBend = 9,
13356 CrescentCircle = 10,
13357 WeightedCrescentCircle = 11,
13358 CyclingRussianTwist = 12,
13359 WeightedCyclingRussianTwist = 13,
13360 ElevatedFeetRussianTwist = 14,
13361 WeightedElevatedFeetRussianTwist = 15,
13362 HalfTurkishGetUp = 16,
13363 KettlebellWindmill = 17,
13364 KneelingAbWheel = 18,
13365 WeightedKneelingAbWheel = 19,
13366 ModifiedFrontLever = 20,
13367 OpenKneeTucks = 21,
13368 WeightedOpenKneeTucks = 22,
13369 SideAbsLegLift = 23,
13370 WeightedSideAbsLegLift = 24,
13371 SwissBallJackknife = 25,
13372 WeightedSwissBallJackknife = 26,
13373 SwissBallPike = 27,
13374 WeightedSwissBallPike = 28,
13375 SwissBallRollout = 29,
13376 WeightedSwissBallRollout = 30,
13377 TriangleHipPress = 31,
13378 WeightedTriangleHipPress = 32,
13379 TrxSuspendedJackknife = 33,
13380 WeightedTrxSuspendedJackknife = 34,
13381 UBoat = 35,
13382 WeightedUBoat = 36,
13383 WindmillSwitches = 37,
13384 WeightedWindmillSwitches = 38,
13385 AlternatingSlideOut = 39,
13386 WeightedAlternatingSlideOut = 40,
13387 GhdBackExtensions = 41,
13388 WeightedGhdBackExtensions = 42,
13389 OverheadWalk = 43,
13390 Inchworm = 44,
13391 WeightedModifiedFrontLever = 45,
13392 RussianTwist = 46,
13393 AbdominalLegRotations = 47,
13394 ArmAndLegExtensionOnKnees = 48,
13395 Bicycle = 49,
13396 BicepCurlWithLegExtension = 50,
13397 CatCow = 51,
13398 Corkscrew = 52,
13399 CrissCross = 53,
13400 CrissCrossWithBall = 54,
13401 DoubleLegStretch = 55,
13402 KneeFolds = 56,
13403 LowerLift = 57,
13404 NeckPull = 58,
13405 PelvicClocks = 59,
13406 RollOver = 60,
13407 RollUp = 61,
13408 Rolling = 62,
13409 Rowing1 = 63,
13410 Rowing2 = 64,
13411 Scissors = 65,
13412 SingleLegCircles = 66,
13413 SingleLegStretch = 67,
13414 SnakeTwist1And2 = 68,
13415 Swan = 69,
13416 Swimming = 70,
13417 Teaser = 71,
13418 TheHundred = 72,
13419 BicepCurlWithLegExtensionWithWeights = 73,
13420 HangingLSit = 75,
13421 LowerLiftWithWeights = 77,
13422 RingLSit = 79,
13423 Rowing1WithWeights = 80,
13424 Rowing2WithWeights = 81,
13425 ScissorsWithWeights = 82,
13426 SingleLegStretchWithWeights = 83,
13427 ToesToElbows = 84,
13428 WeightedCrissCross = 85,
13429 WeightedDoubleLegStretch = 86,
13430 WeightedTheHundred = 87,
13431 LSit = 88,
13432 TurkishGetUp = 89,
13433 WeightedRingLSit = 90,
13434 WeightedHangingLSit = 91,
13435 WeightedLSit = 92,
13436 SideBendLowWheelchair = 93,
13437 SideBendMidWheelchair = 94,
13438 SideBendHighWheelchair = 95,
13439 SeatedSideBend = 96,
13440}
13441
13442impl CoreExerciseName {
13443 pub fn as_str(&self) -> &'static str {
13445 match self {
13446 CoreExerciseName::AbsJabs => "abs_jabs",
13447 CoreExerciseName::WeightedAbsJabs => "weighted_abs_jabs",
13448 CoreExerciseName::AlternatingPlateReach => "alternating_plate_reach",
13449 CoreExerciseName::BarbellRollout => "barbell_rollout",
13450 CoreExerciseName::WeightedBarbellRollout => "weighted_barbell_rollout",
13451 CoreExerciseName::BodyBarObliqueTwist => "body_bar_oblique_twist",
13452 CoreExerciseName::CableCorePress => "cable_core_press",
13453 CoreExerciseName::CableSideBend => "cable_side_bend",
13454 CoreExerciseName::SideBend => "side_bend",
13455 CoreExerciseName::WeightedSideBend => "weighted_side_bend",
13456 CoreExerciseName::CrescentCircle => "crescent_circle",
13457 CoreExerciseName::WeightedCrescentCircle => "weighted_crescent_circle",
13458 CoreExerciseName::CyclingRussianTwist => "cycling_russian_twist",
13459 CoreExerciseName::WeightedCyclingRussianTwist => "weighted_cycling_russian_twist",
13460 CoreExerciseName::ElevatedFeetRussianTwist => "elevated_feet_russian_twist",
13461 CoreExerciseName::WeightedElevatedFeetRussianTwist => {
13462 "weighted_elevated_feet_russian_twist"
13463 }
13464 CoreExerciseName::HalfTurkishGetUp => "half_turkish_get_up",
13465 CoreExerciseName::KettlebellWindmill => "kettlebell_windmill",
13466 CoreExerciseName::KneelingAbWheel => "kneeling_ab_wheel",
13467 CoreExerciseName::WeightedKneelingAbWheel => "weighted_kneeling_ab_wheel",
13468 CoreExerciseName::ModifiedFrontLever => "modified_front_lever",
13469 CoreExerciseName::OpenKneeTucks => "open_knee_tucks",
13470 CoreExerciseName::WeightedOpenKneeTucks => "weighted_open_knee_tucks",
13471 CoreExerciseName::SideAbsLegLift => "side_abs_leg_lift",
13472 CoreExerciseName::WeightedSideAbsLegLift => "weighted_side_abs_leg_lift",
13473 CoreExerciseName::SwissBallJackknife => "swiss_ball_jackknife",
13474 CoreExerciseName::WeightedSwissBallJackknife => "weighted_swiss_ball_jackknife",
13475 CoreExerciseName::SwissBallPike => "swiss_ball_pike",
13476 CoreExerciseName::WeightedSwissBallPike => "weighted_swiss_ball_pike",
13477 CoreExerciseName::SwissBallRollout => "swiss_ball_rollout",
13478 CoreExerciseName::WeightedSwissBallRollout => "weighted_swiss_ball_rollout",
13479 CoreExerciseName::TriangleHipPress => "triangle_hip_press",
13480 CoreExerciseName::WeightedTriangleHipPress => "weighted_triangle_hip_press",
13481 CoreExerciseName::TrxSuspendedJackknife => "trx_suspended_jackknife",
13482 CoreExerciseName::WeightedTrxSuspendedJackknife => "weighted_trx_suspended_jackknife",
13483 CoreExerciseName::UBoat => "u_boat",
13484 CoreExerciseName::WeightedUBoat => "weighted_u_boat",
13485 CoreExerciseName::WindmillSwitches => "windmill_switches",
13486 CoreExerciseName::WeightedWindmillSwitches => "weighted_windmill_switches",
13487 CoreExerciseName::AlternatingSlideOut => "alternating_slide_out",
13488 CoreExerciseName::WeightedAlternatingSlideOut => "weighted_alternating_slide_out",
13489 CoreExerciseName::GhdBackExtensions => "ghd_back_extensions",
13490 CoreExerciseName::WeightedGhdBackExtensions => "weighted_ghd_back_extensions",
13491 CoreExerciseName::OverheadWalk => "overhead_walk",
13492 CoreExerciseName::Inchworm => "inchworm",
13493 CoreExerciseName::WeightedModifiedFrontLever => "weighted_modified_front_lever",
13494 CoreExerciseName::RussianTwist => "russian_twist",
13495 CoreExerciseName::AbdominalLegRotations => "abdominal_leg_rotations",
13496 CoreExerciseName::ArmAndLegExtensionOnKnees => "arm_and_leg_extension_on_knees",
13497 CoreExerciseName::Bicycle => "bicycle",
13498 CoreExerciseName::BicepCurlWithLegExtension => "bicep_curl_with_leg_extension",
13499 CoreExerciseName::CatCow => "cat_cow",
13500 CoreExerciseName::Corkscrew => "corkscrew",
13501 CoreExerciseName::CrissCross => "criss_cross",
13502 CoreExerciseName::CrissCrossWithBall => "criss_cross_with_ball",
13503 CoreExerciseName::DoubleLegStretch => "double_leg_stretch",
13504 CoreExerciseName::KneeFolds => "knee_folds",
13505 CoreExerciseName::LowerLift => "lower_lift",
13506 CoreExerciseName::NeckPull => "neck_pull",
13507 CoreExerciseName::PelvicClocks => "pelvic_clocks",
13508 CoreExerciseName::RollOver => "roll_over",
13509 CoreExerciseName::RollUp => "roll_up",
13510 CoreExerciseName::Rolling => "rolling",
13511 CoreExerciseName::Rowing1 => "rowing_1",
13512 CoreExerciseName::Rowing2 => "rowing_2",
13513 CoreExerciseName::Scissors => "scissors",
13514 CoreExerciseName::SingleLegCircles => "single_leg_circles",
13515 CoreExerciseName::SingleLegStretch => "single_leg_stretch",
13516 CoreExerciseName::SnakeTwist1And2 => "snake_twist_1_and_2",
13517 CoreExerciseName::Swan => "swan",
13518 CoreExerciseName::Swimming => "swimming",
13519 CoreExerciseName::Teaser => "teaser",
13520 CoreExerciseName::TheHundred => "the_hundred",
13521 CoreExerciseName::BicepCurlWithLegExtensionWithWeights => {
13522 "bicep_curl_with_leg_extension_with_weights"
13523 }
13524 CoreExerciseName::HangingLSit => "hanging_l_sit",
13525 CoreExerciseName::LowerLiftWithWeights => "lower_lift_with_weights",
13526 CoreExerciseName::RingLSit => "ring_l_sit",
13527 CoreExerciseName::Rowing1WithWeights => "rowing_1_with_weights",
13528 CoreExerciseName::Rowing2WithWeights => "rowing_2_with_weights",
13529 CoreExerciseName::ScissorsWithWeights => "scissors_with_weights",
13530 CoreExerciseName::SingleLegStretchWithWeights => "single_leg_stretch_with_weights",
13531 CoreExerciseName::ToesToElbows => "toes_to_elbows",
13532 CoreExerciseName::WeightedCrissCross => "weighted_criss_cross",
13533 CoreExerciseName::WeightedDoubleLegStretch => "weighted_double_leg_stretch",
13534 CoreExerciseName::WeightedTheHundred => "weighted_the_hundred",
13535 CoreExerciseName::LSit => "l_sit",
13536 CoreExerciseName::TurkishGetUp => "turkish_get_up",
13537 CoreExerciseName::WeightedRingLSit => "weighted_ring_l_sit",
13538 CoreExerciseName::WeightedHangingLSit => "weighted_hanging_l_sit",
13539 CoreExerciseName::WeightedLSit => "weighted_l_sit",
13540 CoreExerciseName::SideBendLowWheelchair => "side_bend_low_wheelchair",
13541 CoreExerciseName::SideBendMidWheelchair => "side_bend_mid_wheelchair",
13542 CoreExerciseName::SideBendHighWheelchair => "side_bend_high_wheelchair",
13543 CoreExerciseName::SeatedSideBend => "seated_side_bend",
13544 }
13545 }
13546
13547 pub fn from_value(value: u16) -> Option<Self> {
13549 match value {
13550 0 => Some(CoreExerciseName::AbsJabs),
13551 1 => Some(CoreExerciseName::WeightedAbsJabs),
13552 2 => Some(CoreExerciseName::AlternatingPlateReach),
13553 3 => Some(CoreExerciseName::BarbellRollout),
13554 4 => Some(CoreExerciseName::WeightedBarbellRollout),
13555 5 => Some(CoreExerciseName::BodyBarObliqueTwist),
13556 6 => Some(CoreExerciseName::CableCorePress),
13557 7 => Some(CoreExerciseName::CableSideBend),
13558 8 => Some(CoreExerciseName::SideBend),
13559 9 => Some(CoreExerciseName::WeightedSideBend),
13560 10 => Some(CoreExerciseName::CrescentCircle),
13561 11 => Some(CoreExerciseName::WeightedCrescentCircle),
13562 12 => Some(CoreExerciseName::CyclingRussianTwist),
13563 13 => Some(CoreExerciseName::WeightedCyclingRussianTwist),
13564 14 => Some(CoreExerciseName::ElevatedFeetRussianTwist),
13565 15 => Some(CoreExerciseName::WeightedElevatedFeetRussianTwist),
13566 16 => Some(CoreExerciseName::HalfTurkishGetUp),
13567 17 => Some(CoreExerciseName::KettlebellWindmill),
13568 18 => Some(CoreExerciseName::KneelingAbWheel),
13569 19 => Some(CoreExerciseName::WeightedKneelingAbWheel),
13570 20 => Some(CoreExerciseName::ModifiedFrontLever),
13571 21 => Some(CoreExerciseName::OpenKneeTucks),
13572 22 => Some(CoreExerciseName::WeightedOpenKneeTucks),
13573 23 => Some(CoreExerciseName::SideAbsLegLift),
13574 24 => Some(CoreExerciseName::WeightedSideAbsLegLift),
13575 25 => Some(CoreExerciseName::SwissBallJackknife),
13576 26 => Some(CoreExerciseName::WeightedSwissBallJackknife),
13577 27 => Some(CoreExerciseName::SwissBallPike),
13578 28 => Some(CoreExerciseName::WeightedSwissBallPike),
13579 29 => Some(CoreExerciseName::SwissBallRollout),
13580 30 => Some(CoreExerciseName::WeightedSwissBallRollout),
13581 31 => Some(CoreExerciseName::TriangleHipPress),
13582 32 => Some(CoreExerciseName::WeightedTriangleHipPress),
13583 33 => Some(CoreExerciseName::TrxSuspendedJackknife),
13584 34 => Some(CoreExerciseName::WeightedTrxSuspendedJackknife),
13585 35 => Some(CoreExerciseName::UBoat),
13586 36 => Some(CoreExerciseName::WeightedUBoat),
13587 37 => Some(CoreExerciseName::WindmillSwitches),
13588 38 => Some(CoreExerciseName::WeightedWindmillSwitches),
13589 39 => Some(CoreExerciseName::AlternatingSlideOut),
13590 40 => Some(CoreExerciseName::WeightedAlternatingSlideOut),
13591 41 => Some(CoreExerciseName::GhdBackExtensions),
13592 42 => Some(CoreExerciseName::WeightedGhdBackExtensions),
13593 43 => Some(CoreExerciseName::OverheadWalk),
13594 44 => Some(CoreExerciseName::Inchworm),
13595 45 => Some(CoreExerciseName::WeightedModifiedFrontLever),
13596 46 => Some(CoreExerciseName::RussianTwist),
13597 47 => Some(CoreExerciseName::AbdominalLegRotations),
13598 48 => Some(CoreExerciseName::ArmAndLegExtensionOnKnees),
13599 49 => Some(CoreExerciseName::Bicycle),
13600 50 => Some(CoreExerciseName::BicepCurlWithLegExtension),
13601 51 => Some(CoreExerciseName::CatCow),
13602 52 => Some(CoreExerciseName::Corkscrew),
13603 53 => Some(CoreExerciseName::CrissCross),
13604 54 => Some(CoreExerciseName::CrissCrossWithBall),
13605 55 => Some(CoreExerciseName::DoubleLegStretch),
13606 56 => Some(CoreExerciseName::KneeFolds),
13607 57 => Some(CoreExerciseName::LowerLift),
13608 58 => Some(CoreExerciseName::NeckPull),
13609 59 => Some(CoreExerciseName::PelvicClocks),
13610 60 => Some(CoreExerciseName::RollOver),
13611 61 => Some(CoreExerciseName::RollUp),
13612 62 => Some(CoreExerciseName::Rolling),
13613 63 => Some(CoreExerciseName::Rowing1),
13614 64 => Some(CoreExerciseName::Rowing2),
13615 65 => Some(CoreExerciseName::Scissors),
13616 66 => Some(CoreExerciseName::SingleLegCircles),
13617 67 => Some(CoreExerciseName::SingleLegStretch),
13618 68 => Some(CoreExerciseName::SnakeTwist1And2),
13619 69 => Some(CoreExerciseName::Swan),
13620 70 => Some(CoreExerciseName::Swimming),
13621 71 => Some(CoreExerciseName::Teaser),
13622 72 => Some(CoreExerciseName::TheHundred),
13623 73 => Some(CoreExerciseName::BicepCurlWithLegExtensionWithWeights),
13624 75 => Some(CoreExerciseName::HangingLSit),
13625 77 => Some(CoreExerciseName::LowerLiftWithWeights),
13626 79 => Some(CoreExerciseName::RingLSit),
13627 80 => Some(CoreExerciseName::Rowing1WithWeights),
13628 81 => Some(CoreExerciseName::Rowing2WithWeights),
13629 82 => Some(CoreExerciseName::ScissorsWithWeights),
13630 83 => Some(CoreExerciseName::SingleLegStretchWithWeights),
13631 84 => Some(CoreExerciseName::ToesToElbows),
13632 85 => Some(CoreExerciseName::WeightedCrissCross),
13633 86 => Some(CoreExerciseName::WeightedDoubleLegStretch),
13634 87 => Some(CoreExerciseName::WeightedTheHundred),
13635 88 => Some(CoreExerciseName::LSit),
13636 89 => Some(CoreExerciseName::TurkishGetUp),
13637 90 => Some(CoreExerciseName::WeightedRingLSit),
13638 91 => Some(CoreExerciseName::WeightedHangingLSit),
13639 92 => Some(CoreExerciseName::WeightedLSit),
13640 93 => Some(CoreExerciseName::SideBendLowWheelchair),
13641 94 => Some(CoreExerciseName::SideBendMidWheelchair),
13642 95 => Some(CoreExerciseName::SideBendHighWheelchair),
13643 96 => Some(CoreExerciseName::SeatedSideBend),
13644 _ => None,
13645 }
13646 }
13647
13648 pub fn from_str(name: &str) -> Option<Self> {
13650 match name {
13651 "abs_jabs" => Some(CoreExerciseName::AbsJabs),
13652 "weighted_abs_jabs" => Some(CoreExerciseName::WeightedAbsJabs),
13653 "alternating_plate_reach" => Some(CoreExerciseName::AlternatingPlateReach),
13654 "barbell_rollout" => Some(CoreExerciseName::BarbellRollout),
13655 "weighted_barbell_rollout" => Some(CoreExerciseName::WeightedBarbellRollout),
13656 "body_bar_oblique_twist" => Some(CoreExerciseName::BodyBarObliqueTwist),
13657 "cable_core_press" => Some(CoreExerciseName::CableCorePress),
13658 "cable_side_bend" => Some(CoreExerciseName::CableSideBend),
13659 "side_bend" => Some(CoreExerciseName::SideBend),
13660 "weighted_side_bend" => Some(CoreExerciseName::WeightedSideBend),
13661 "crescent_circle" => Some(CoreExerciseName::CrescentCircle),
13662 "weighted_crescent_circle" => Some(CoreExerciseName::WeightedCrescentCircle),
13663 "cycling_russian_twist" => Some(CoreExerciseName::CyclingRussianTwist),
13664 "weighted_cycling_russian_twist" => Some(CoreExerciseName::WeightedCyclingRussianTwist),
13665 "elevated_feet_russian_twist" => Some(CoreExerciseName::ElevatedFeetRussianTwist),
13666 "weighted_elevated_feet_russian_twist" => {
13667 Some(CoreExerciseName::WeightedElevatedFeetRussianTwist)
13668 }
13669 "half_turkish_get_up" => Some(CoreExerciseName::HalfTurkishGetUp),
13670 "kettlebell_windmill" => Some(CoreExerciseName::KettlebellWindmill),
13671 "kneeling_ab_wheel" => Some(CoreExerciseName::KneelingAbWheel),
13672 "weighted_kneeling_ab_wheel" => Some(CoreExerciseName::WeightedKneelingAbWheel),
13673 "modified_front_lever" => Some(CoreExerciseName::ModifiedFrontLever),
13674 "open_knee_tucks" => Some(CoreExerciseName::OpenKneeTucks),
13675 "weighted_open_knee_tucks" => Some(CoreExerciseName::WeightedOpenKneeTucks),
13676 "side_abs_leg_lift" => Some(CoreExerciseName::SideAbsLegLift),
13677 "weighted_side_abs_leg_lift" => Some(CoreExerciseName::WeightedSideAbsLegLift),
13678 "swiss_ball_jackknife" => Some(CoreExerciseName::SwissBallJackknife),
13679 "weighted_swiss_ball_jackknife" => Some(CoreExerciseName::WeightedSwissBallJackknife),
13680 "swiss_ball_pike" => Some(CoreExerciseName::SwissBallPike),
13681 "weighted_swiss_ball_pike" => Some(CoreExerciseName::WeightedSwissBallPike),
13682 "swiss_ball_rollout" => Some(CoreExerciseName::SwissBallRollout),
13683 "weighted_swiss_ball_rollout" => Some(CoreExerciseName::WeightedSwissBallRollout),
13684 "triangle_hip_press" => Some(CoreExerciseName::TriangleHipPress),
13685 "weighted_triangle_hip_press" => Some(CoreExerciseName::WeightedTriangleHipPress),
13686 "trx_suspended_jackknife" => Some(CoreExerciseName::TrxSuspendedJackknife),
13687 "weighted_trx_suspended_jackknife" => {
13688 Some(CoreExerciseName::WeightedTrxSuspendedJackknife)
13689 }
13690 "u_boat" => Some(CoreExerciseName::UBoat),
13691 "weighted_u_boat" => Some(CoreExerciseName::WeightedUBoat),
13692 "windmill_switches" => Some(CoreExerciseName::WindmillSwitches),
13693 "weighted_windmill_switches" => Some(CoreExerciseName::WeightedWindmillSwitches),
13694 "alternating_slide_out" => Some(CoreExerciseName::AlternatingSlideOut),
13695 "weighted_alternating_slide_out" => Some(CoreExerciseName::WeightedAlternatingSlideOut),
13696 "ghd_back_extensions" => Some(CoreExerciseName::GhdBackExtensions),
13697 "weighted_ghd_back_extensions" => Some(CoreExerciseName::WeightedGhdBackExtensions),
13698 "overhead_walk" => Some(CoreExerciseName::OverheadWalk),
13699 "inchworm" => Some(CoreExerciseName::Inchworm),
13700 "weighted_modified_front_lever" => Some(CoreExerciseName::WeightedModifiedFrontLever),
13701 "russian_twist" => Some(CoreExerciseName::RussianTwist),
13702 "abdominal_leg_rotations" => Some(CoreExerciseName::AbdominalLegRotations),
13703 "arm_and_leg_extension_on_knees" => Some(CoreExerciseName::ArmAndLegExtensionOnKnees),
13704 "bicycle" => Some(CoreExerciseName::Bicycle),
13705 "bicep_curl_with_leg_extension" => Some(CoreExerciseName::BicepCurlWithLegExtension),
13706 "cat_cow" => Some(CoreExerciseName::CatCow),
13707 "corkscrew" => Some(CoreExerciseName::Corkscrew),
13708 "criss_cross" => Some(CoreExerciseName::CrissCross),
13709 "criss_cross_with_ball" => Some(CoreExerciseName::CrissCrossWithBall),
13710 "double_leg_stretch" => Some(CoreExerciseName::DoubleLegStretch),
13711 "knee_folds" => Some(CoreExerciseName::KneeFolds),
13712 "lower_lift" => Some(CoreExerciseName::LowerLift),
13713 "neck_pull" => Some(CoreExerciseName::NeckPull),
13714 "pelvic_clocks" => Some(CoreExerciseName::PelvicClocks),
13715 "roll_over" => Some(CoreExerciseName::RollOver),
13716 "roll_up" => Some(CoreExerciseName::RollUp),
13717 "rolling" => Some(CoreExerciseName::Rolling),
13718 "rowing_1" => Some(CoreExerciseName::Rowing1),
13719 "rowing_2" => Some(CoreExerciseName::Rowing2),
13720 "scissors" => Some(CoreExerciseName::Scissors),
13721 "single_leg_circles" => Some(CoreExerciseName::SingleLegCircles),
13722 "single_leg_stretch" => Some(CoreExerciseName::SingleLegStretch),
13723 "snake_twist_1_and_2" => Some(CoreExerciseName::SnakeTwist1And2),
13724 "swan" => Some(CoreExerciseName::Swan),
13725 "swimming" => Some(CoreExerciseName::Swimming),
13726 "teaser" => Some(CoreExerciseName::Teaser),
13727 "the_hundred" => Some(CoreExerciseName::TheHundred),
13728 "bicep_curl_with_leg_extension_with_weights" => {
13729 Some(CoreExerciseName::BicepCurlWithLegExtensionWithWeights)
13730 }
13731 "hanging_l_sit" => Some(CoreExerciseName::HangingLSit),
13732 "lower_lift_with_weights" => Some(CoreExerciseName::LowerLiftWithWeights),
13733 "ring_l_sit" => Some(CoreExerciseName::RingLSit),
13734 "rowing_1_with_weights" => Some(CoreExerciseName::Rowing1WithWeights),
13735 "rowing_2_with_weights" => Some(CoreExerciseName::Rowing2WithWeights),
13736 "scissors_with_weights" => Some(CoreExerciseName::ScissorsWithWeights),
13737 "single_leg_stretch_with_weights" => {
13738 Some(CoreExerciseName::SingleLegStretchWithWeights)
13739 }
13740 "toes_to_elbows" => Some(CoreExerciseName::ToesToElbows),
13741 "weighted_criss_cross" => Some(CoreExerciseName::WeightedCrissCross),
13742 "weighted_double_leg_stretch" => Some(CoreExerciseName::WeightedDoubleLegStretch),
13743 "weighted_the_hundred" => Some(CoreExerciseName::WeightedTheHundred),
13744 "l_sit" => Some(CoreExerciseName::LSit),
13745 "turkish_get_up" => Some(CoreExerciseName::TurkishGetUp),
13746 "weighted_ring_l_sit" => Some(CoreExerciseName::WeightedRingLSit),
13747 "weighted_hanging_l_sit" => Some(CoreExerciseName::WeightedHangingLSit),
13748 "weighted_l_sit" => Some(CoreExerciseName::WeightedLSit),
13749 "side_bend_low_wheelchair" => Some(CoreExerciseName::SideBendLowWheelchair),
13750 "side_bend_mid_wheelchair" => Some(CoreExerciseName::SideBendMidWheelchair),
13751 "side_bend_high_wheelchair" => Some(CoreExerciseName::SideBendHighWheelchair),
13752 "seated_side_bend" => Some(CoreExerciseName::SeatedSideBend),
13753 _ => None,
13754 }
13755 }
13756}
13757
13758#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
13759#[repr(u16)]
13760#[non_exhaustive]
13761pub enum CrunchExerciseName {
13762 BicycleCrunch = 0,
13763 CableCrunch = 1,
13764 CircularArmCrunch = 2,
13765 CrossedArmsCrunch = 3,
13766 WeightedCrossedArmsCrunch = 4,
13767 CrossLegReverseCrunch = 5,
13768 WeightedCrossLegReverseCrunch = 6,
13769 CrunchChop = 7,
13770 WeightedCrunchChop = 8,
13771 DoubleCrunch = 9,
13772 WeightedDoubleCrunch = 10,
13773 ElbowToKneeCrunch = 11,
13774 WeightedElbowToKneeCrunch = 12,
13775 FlutterKicks = 13,
13776 WeightedFlutterKicks = 14,
13777 FoamRollerReverseCrunchOnBench = 15,
13778 WeightedFoamRollerReverseCrunchOnBench = 16,
13779 FoamRollerReverseCrunchWithDumbbell = 17,
13780 FoamRollerReverseCrunchWithMedicineBall = 18,
13781 FrogPress = 19,
13782 HangingKneeRaiseObliqueCrunch = 20,
13783 WeightedHangingKneeRaiseObliqueCrunch = 21,
13784 HipCrossover = 22,
13785 WeightedHipCrossover = 23,
13786 HollowRock = 24,
13787 WeightedHollowRock = 25,
13788 InclineReverseCrunch = 26,
13789 WeightedInclineReverseCrunch = 27,
13790 KneelingCableCrunch = 28,
13791 KneelingCrossCrunch = 29,
13792 WeightedKneelingCrossCrunch = 30,
13793 KneelingObliqueCableCrunch = 31,
13794 KneesToElbow = 32,
13795 LegExtensions = 33,
13796 WeightedLegExtensions = 34,
13797 LegLevers = 35,
13798 McgillCurlUp = 36,
13799 WeightedMcgillCurlUp = 37,
13800 ModifiedPilatesRollUpWithBall = 38,
13801 WeightedModifiedPilatesRollUpWithBall = 39,
13802 PilatesCrunch = 40,
13803 WeightedPilatesCrunch = 41,
13804 PilatesRollUpWithBall = 42,
13805 WeightedPilatesRollUpWithBall = 43,
13806 RaisedLegsCrunch = 44,
13807 WeightedRaisedLegsCrunch = 45,
13808 ReverseCrunch = 46,
13809 WeightedReverseCrunch = 47,
13810 ReverseCrunchOnABench = 48,
13811 WeightedReverseCrunchOnABench = 49,
13812 ReverseCurlAndLift = 50,
13813 WeightedReverseCurlAndLift = 51,
13814 RotationalLift = 52,
13815 WeightedRotationalLift = 53,
13816 SeatedAlternatingReverseCrunch = 54,
13817 WeightedSeatedAlternatingReverseCrunch = 55,
13818 SeatedLegU = 56,
13819 WeightedSeatedLegU = 57,
13820 SideToSideCrunchAndWeave = 58,
13821 WeightedSideToSideCrunchAndWeave = 59,
13822 SingleLegReverseCrunch = 60,
13823 WeightedSingleLegReverseCrunch = 61,
13824 SkaterCrunchCross = 62,
13825 WeightedSkaterCrunchCross = 63,
13826 StandingCableCrunch = 64,
13827 StandingSideCrunch = 65,
13828 StepClimb = 66,
13829 WeightedStepClimb = 67,
13830 SwissBallCrunch = 68,
13831 SwissBallReverseCrunch = 69,
13832 WeightedSwissBallReverseCrunch = 70,
13833 SwissBallRussianTwist = 71,
13834 WeightedSwissBallRussianTwist = 72,
13835 SwissBallSideCrunch = 73,
13836 WeightedSwissBallSideCrunch = 74,
13837 ThoracicCrunchesOnFoamRoller = 75,
13838 WeightedThoracicCrunchesOnFoamRoller = 76,
13839 TricepsCrunch = 77,
13840 WeightedBicycleCrunch = 78,
13841 WeightedCrunch = 79,
13842 WeightedSwissBallCrunch = 80,
13843 ToesToBar = 81,
13844 WeightedToesToBar = 82,
13845 Crunch = 83,
13846 StraightLegCrunchWithBall = 84,
13847 LegClimbCrunch = 86,
13848}
13849
13850impl CrunchExerciseName {
13851 pub fn as_str(&self) -> &'static str {
13853 match self {
13854 CrunchExerciseName::BicycleCrunch => "bicycle_crunch",
13855 CrunchExerciseName::CableCrunch => "cable_crunch",
13856 CrunchExerciseName::CircularArmCrunch => "circular_arm_crunch",
13857 CrunchExerciseName::CrossedArmsCrunch => "crossed_arms_crunch",
13858 CrunchExerciseName::WeightedCrossedArmsCrunch => "weighted_crossed_arms_crunch",
13859 CrunchExerciseName::CrossLegReverseCrunch => "cross_leg_reverse_crunch",
13860 CrunchExerciseName::WeightedCrossLegReverseCrunch => {
13861 "weighted_cross_leg_reverse_crunch"
13862 }
13863 CrunchExerciseName::CrunchChop => "crunch_chop",
13864 CrunchExerciseName::WeightedCrunchChop => "weighted_crunch_chop",
13865 CrunchExerciseName::DoubleCrunch => "double_crunch",
13866 CrunchExerciseName::WeightedDoubleCrunch => "weighted_double_crunch",
13867 CrunchExerciseName::ElbowToKneeCrunch => "elbow_to_knee_crunch",
13868 CrunchExerciseName::WeightedElbowToKneeCrunch => "weighted_elbow_to_knee_crunch",
13869 CrunchExerciseName::FlutterKicks => "flutter_kicks",
13870 CrunchExerciseName::WeightedFlutterKicks => "weighted_flutter_kicks",
13871 CrunchExerciseName::FoamRollerReverseCrunchOnBench => {
13872 "foam_roller_reverse_crunch_on_bench"
13873 }
13874 CrunchExerciseName::WeightedFoamRollerReverseCrunchOnBench => {
13875 "weighted_foam_roller_reverse_crunch_on_bench"
13876 }
13877 CrunchExerciseName::FoamRollerReverseCrunchWithDumbbell => {
13878 "foam_roller_reverse_crunch_with_dumbbell"
13879 }
13880 CrunchExerciseName::FoamRollerReverseCrunchWithMedicineBall => {
13881 "foam_roller_reverse_crunch_with_medicine_ball"
13882 }
13883 CrunchExerciseName::FrogPress => "frog_press",
13884 CrunchExerciseName::HangingKneeRaiseObliqueCrunch => {
13885 "hanging_knee_raise_oblique_crunch"
13886 }
13887 CrunchExerciseName::WeightedHangingKneeRaiseObliqueCrunch => {
13888 "weighted_hanging_knee_raise_oblique_crunch"
13889 }
13890 CrunchExerciseName::HipCrossover => "hip_crossover",
13891 CrunchExerciseName::WeightedHipCrossover => "weighted_hip_crossover",
13892 CrunchExerciseName::HollowRock => "hollow_rock",
13893 CrunchExerciseName::WeightedHollowRock => "weighted_hollow_rock",
13894 CrunchExerciseName::InclineReverseCrunch => "incline_reverse_crunch",
13895 CrunchExerciseName::WeightedInclineReverseCrunch => "weighted_incline_reverse_crunch",
13896 CrunchExerciseName::KneelingCableCrunch => "kneeling_cable_crunch",
13897 CrunchExerciseName::KneelingCrossCrunch => "kneeling_cross_crunch",
13898 CrunchExerciseName::WeightedKneelingCrossCrunch => "weighted_kneeling_cross_crunch",
13899 CrunchExerciseName::KneelingObliqueCableCrunch => "kneeling_oblique_cable_crunch",
13900 CrunchExerciseName::KneesToElbow => "knees_to_elbow",
13901 CrunchExerciseName::LegExtensions => "leg_extensions",
13902 CrunchExerciseName::WeightedLegExtensions => "weighted_leg_extensions",
13903 CrunchExerciseName::LegLevers => "leg_levers",
13904 CrunchExerciseName::McgillCurlUp => "mcgill_curl_up",
13905 CrunchExerciseName::WeightedMcgillCurlUp => "weighted_mcgill_curl_up",
13906 CrunchExerciseName::ModifiedPilatesRollUpWithBall => {
13907 "modified_pilates_roll_up_with_ball"
13908 }
13909 CrunchExerciseName::WeightedModifiedPilatesRollUpWithBall => {
13910 "weighted_modified_pilates_roll_up_with_ball"
13911 }
13912 CrunchExerciseName::PilatesCrunch => "pilates_crunch",
13913 CrunchExerciseName::WeightedPilatesCrunch => "weighted_pilates_crunch",
13914 CrunchExerciseName::PilatesRollUpWithBall => "pilates_roll_up_with_ball",
13915 CrunchExerciseName::WeightedPilatesRollUpWithBall => {
13916 "weighted_pilates_roll_up_with_ball"
13917 }
13918 CrunchExerciseName::RaisedLegsCrunch => "raised_legs_crunch",
13919 CrunchExerciseName::WeightedRaisedLegsCrunch => "weighted_raised_legs_crunch",
13920 CrunchExerciseName::ReverseCrunch => "reverse_crunch",
13921 CrunchExerciseName::WeightedReverseCrunch => "weighted_reverse_crunch",
13922 CrunchExerciseName::ReverseCrunchOnABench => "reverse_crunch_on_a_bench",
13923 CrunchExerciseName::WeightedReverseCrunchOnABench => {
13924 "weighted_reverse_crunch_on_a_bench"
13925 }
13926 CrunchExerciseName::ReverseCurlAndLift => "reverse_curl_and_lift",
13927 CrunchExerciseName::WeightedReverseCurlAndLift => "weighted_reverse_curl_and_lift",
13928 CrunchExerciseName::RotationalLift => "rotational_lift",
13929 CrunchExerciseName::WeightedRotationalLift => "weighted_rotational_lift",
13930 CrunchExerciseName::SeatedAlternatingReverseCrunch => {
13931 "seated_alternating_reverse_crunch"
13932 }
13933 CrunchExerciseName::WeightedSeatedAlternatingReverseCrunch => {
13934 "weighted_seated_alternating_reverse_crunch"
13935 }
13936 CrunchExerciseName::SeatedLegU => "seated_leg_u",
13937 CrunchExerciseName::WeightedSeatedLegU => "weighted_seated_leg_u",
13938 CrunchExerciseName::SideToSideCrunchAndWeave => "side_to_side_crunch_and_weave",
13939 CrunchExerciseName::WeightedSideToSideCrunchAndWeave => {
13940 "weighted_side_to_side_crunch_and_weave"
13941 }
13942 CrunchExerciseName::SingleLegReverseCrunch => "single_leg_reverse_crunch",
13943 CrunchExerciseName::WeightedSingleLegReverseCrunch => {
13944 "weighted_single_leg_reverse_crunch"
13945 }
13946 CrunchExerciseName::SkaterCrunchCross => "skater_crunch_cross",
13947 CrunchExerciseName::WeightedSkaterCrunchCross => "weighted_skater_crunch_cross",
13948 CrunchExerciseName::StandingCableCrunch => "standing_cable_crunch",
13949 CrunchExerciseName::StandingSideCrunch => "standing_side_crunch",
13950 CrunchExerciseName::StepClimb => "step_climb",
13951 CrunchExerciseName::WeightedStepClimb => "weighted_step_climb",
13952 CrunchExerciseName::SwissBallCrunch => "swiss_ball_crunch",
13953 CrunchExerciseName::SwissBallReverseCrunch => "swiss_ball_reverse_crunch",
13954 CrunchExerciseName::WeightedSwissBallReverseCrunch => {
13955 "weighted_swiss_ball_reverse_crunch"
13956 }
13957 CrunchExerciseName::SwissBallRussianTwist => "swiss_ball_russian_twist",
13958 CrunchExerciseName::WeightedSwissBallRussianTwist => {
13959 "weighted_swiss_ball_russian_twist"
13960 }
13961 CrunchExerciseName::SwissBallSideCrunch => "swiss_ball_side_crunch",
13962 CrunchExerciseName::WeightedSwissBallSideCrunch => "weighted_swiss_ball_side_crunch",
13963 CrunchExerciseName::ThoracicCrunchesOnFoamRoller => "thoracic_crunches_on_foam_roller",
13964 CrunchExerciseName::WeightedThoracicCrunchesOnFoamRoller => {
13965 "weighted_thoracic_crunches_on_foam_roller"
13966 }
13967 CrunchExerciseName::TricepsCrunch => "triceps_crunch",
13968 CrunchExerciseName::WeightedBicycleCrunch => "weighted_bicycle_crunch",
13969 CrunchExerciseName::WeightedCrunch => "weighted_crunch",
13970 CrunchExerciseName::WeightedSwissBallCrunch => "weighted_swiss_ball_crunch",
13971 CrunchExerciseName::ToesToBar => "toes_to_bar",
13972 CrunchExerciseName::WeightedToesToBar => "weighted_toes_to_bar",
13973 CrunchExerciseName::Crunch => "crunch",
13974 CrunchExerciseName::StraightLegCrunchWithBall => "straight_leg_crunch_with_ball",
13975 CrunchExerciseName::LegClimbCrunch => "leg_climb_crunch",
13976 }
13977 }
13978
13979 pub fn from_value(value: u16) -> Option<Self> {
13981 match value {
13982 0 => Some(CrunchExerciseName::BicycleCrunch),
13983 1 => Some(CrunchExerciseName::CableCrunch),
13984 2 => Some(CrunchExerciseName::CircularArmCrunch),
13985 3 => Some(CrunchExerciseName::CrossedArmsCrunch),
13986 4 => Some(CrunchExerciseName::WeightedCrossedArmsCrunch),
13987 5 => Some(CrunchExerciseName::CrossLegReverseCrunch),
13988 6 => Some(CrunchExerciseName::WeightedCrossLegReverseCrunch),
13989 7 => Some(CrunchExerciseName::CrunchChop),
13990 8 => Some(CrunchExerciseName::WeightedCrunchChop),
13991 9 => Some(CrunchExerciseName::DoubleCrunch),
13992 10 => Some(CrunchExerciseName::WeightedDoubleCrunch),
13993 11 => Some(CrunchExerciseName::ElbowToKneeCrunch),
13994 12 => Some(CrunchExerciseName::WeightedElbowToKneeCrunch),
13995 13 => Some(CrunchExerciseName::FlutterKicks),
13996 14 => Some(CrunchExerciseName::WeightedFlutterKicks),
13997 15 => Some(CrunchExerciseName::FoamRollerReverseCrunchOnBench),
13998 16 => Some(CrunchExerciseName::WeightedFoamRollerReverseCrunchOnBench),
13999 17 => Some(CrunchExerciseName::FoamRollerReverseCrunchWithDumbbell),
14000 18 => Some(CrunchExerciseName::FoamRollerReverseCrunchWithMedicineBall),
14001 19 => Some(CrunchExerciseName::FrogPress),
14002 20 => Some(CrunchExerciseName::HangingKneeRaiseObliqueCrunch),
14003 21 => Some(CrunchExerciseName::WeightedHangingKneeRaiseObliqueCrunch),
14004 22 => Some(CrunchExerciseName::HipCrossover),
14005 23 => Some(CrunchExerciseName::WeightedHipCrossover),
14006 24 => Some(CrunchExerciseName::HollowRock),
14007 25 => Some(CrunchExerciseName::WeightedHollowRock),
14008 26 => Some(CrunchExerciseName::InclineReverseCrunch),
14009 27 => Some(CrunchExerciseName::WeightedInclineReverseCrunch),
14010 28 => Some(CrunchExerciseName::KneelingCableCrunch),
14011 29 => Some(CrunchExerciseName::KneelingCrossCrunch),
14012 30 => Some(CrunchExerciseName::WeightedKneelingCrossCrunch),
14013 31 => Some(CrunchExerciseName::KneelingObliqueCableCrunch),
14014 32 => Some(CrunchExerciseName::KneesToElbow),
14015 33 => Some(CrunchExerciseName::LegExtensions),
14016 34 => Some(CrunchExerciseName::WeightedLegExtensions),
14017 35 => Some(CrunchExerciseName::LegLevers),
14018 36 => Some(CrunchExerciseName::McgillCurlUp),
14019 37 => Some(CrunchExerciseName::WeightedMcgillCurlUp),
14020 38 => Some(CrunchExerciseName::ModifiedPilatesRollUpWithBall),
14021 39 => Some(CrunchExerciseName::WeightedModifiedPilatesRollUpWithBall),
14022 40 => Some(CrunchExerciseName::PilatesCrunch),
14023 41 => Some(CrunchExerciseName::WeightedPilatesCrunch),
14024 42 => Some(CrunchExerciseName::PilatesRollUpWithBall),
14025 43 => Some(CrunchExerciseName::WeightedPilatesRollUpWithBall),
14026 44 => Some(CrunchExerciseName::RaisedLegsCrunch),
14027 45 => Some(CrunchExerciseName::WeightedRaisedLegsCrunch),
14028 46 => Some(CrunchExerciseName::ReverseCrunch),
14029 47 => Some(CrunchExerciseName::WeightedReverseCrunch),
14030 48 => Some(CrunchExerciseName::ReverseCrunchOnABench),
14031 49 => Some(CrunchExerciseName::WeightedReverseCrunchOnABench),
14032 50 => Some(CrunchExerciseName::ReverseCurlAndLift),
14033 51 => Some(CrunchExerciseName::WeightedReverseCurlAndLift),
14034 52 => Some(CrunchExerciseName::RotationalLift),
14035 53 => Some(CrunchExerciseName::WeightedRotationalLift),
14036 54 => Some(CrunchExerciseName::SeatedAlternatingReverseCrunch),
14037 55 => Some(CrunchExerciseName::WeightedSeatedAlternatingReverseCrunch),
14038 56 => Some(CrunchExerciseName::SeatedLegU),
14039 57 => Some(CrunchExerciseName::WeightedSeatedLegU),
14040 58 => Some(CrunchExerciseName::SideToSideCrunchAndWeave),
14041 59 => Some(CrunchExerciseName::WeightedSideToSideCrunchAndWeave),
14042 60 => Some(CrunchExerciseName::SingleLegReverseCrunch),
14043 61 => Some(CrunchExerciseName::WeightedSingleLegReverseCrunch),
14044 62 => Some(CrunchExerciseName::SkaterCrunchCross),
14045 63 => Some(CrunchExerciseName::WeightedSkaterCrunchCross),
14046 64 => Some(CrunchExerciseName::StandingCableCrunch),
14047 65 => Some(CrunchExerciseName::StandingSideCrunch),
14048 66 => Some(CrunchExerciseName::StepClimb),
14049 67 => Some(CrunchExerciseName::WeightedStepClimb),
14050 68 => Some(CrunchExerciseName::SwissBallCrunch),
14051 69 => Some(CrunchExerciseName::SwissBallReverseCrunch),
14052 70 => Some(CrunchExerciseName::WeightedSwissBallReverseCrunch),
14053 71 => Some(CrunchExerciseName::SwissBallRussianTwist),
14054 72 => Some(CrunchExerciseName::WeightedSwissBallRussianTwist),
14055 73 => Some(CrunchExerciseName::SwissBallSideCrunch),
14056 74 => Some(CrunchExerciseName::WeightedSwissBallSideCrunch),
14057 75 => Some(CrunchExerciseName::ThoracicCrunchesOnFoamRoller),
14058 76 => Some(CrunchExerciseName::WeightedThoracicCrunchesOnFoamRoller),
14059 77 => Some(CrunchExerciseName::TricepsCrunch),
14060 78 => Some(CrunchExerciseName::WeightedBicycleCrunch),
14061 79 => Some(CrunchExerciseName::WeightedCrunch),
14062 80 => Some(CrunchExerciseName::WeightedSwissBallCrunch),
14063 81 => Some(CrunchExerciseName::ToesToBar),
14064 82 => Some(CrunchExerciseName::WeightedToesToBar),
14065 83 => Some(CrunchExerciseName::Crunch),
14066 84 => Some(CrunchExerciseName::StraightLegCrunchWithBall),
14067 86 => Some(CrunchExerciseName::LegClimbCrunch),
14068 _ => None,
14069 }
14070 }
14071
14072 pub fn from_str(name: &str) -> Option<Self> {
14074 match name {
14075 "bicycle_crunch" => Some(CrunchExerciseName::BicycleCrunch),
14076 "cable_crunch" => Some(CrunchExerciseName::CableCrunch),
14077 "circular_arm_crunch" => Some(CrunchExerciseName::CircularArmCrunch),
14078 "crossed_arms_crunch" => Some(CrunchExerciseName::CrossedArmsCrunch),
14079 "weighted_crossed_arms_crunch" => Some(CrunchExerciseName::WeightedCrossedArmsCrunch),
14080 "cross_leg_reverse_crunch" => Some(CrunchExerciseName::CrossLegReverseCrunch),
14081 "weighted_cross_leg_reverse_crunch" => {
14082 Some(CrunchExerciseName::WeightedCrossLegReverseCrunch)
14083 }
14084 "crunch_chop" => Some(CrunchExerciseName::CrunchChop),
14085 "weighted_crunch_chop" => Some(CrunchExerciseName::WeightedCrunchChop),
14086 "double_crunch" => Some(CrunchExerciseName::DoubleCrunch),
14087 "weighted_double_crunch" => Some(CrunchExerciseName::WeightedDoubleCrunch),
14088 "elbow_to_knee_crunch" => Some(CrunchExerciseName::ElbowToKneeCrunch),
14089 "weighted_elbow_to_knee_crunch" => Some(CrunchExerciseName::WeightedElbowToKneeCrunch),
14090 "flutter_kicks" => Some(CrunchExerciseName::FlutterKicks),
14091 "weighted_flutter_kicks" => Some(CrunchExerciseName::WeightedFlutterKicks),
14092 "foam_roller_reverse_crunch_on_bench" => {
14093 Some(CrunchExerciseName::FoamRollerReverseCrunchOnBench)
14094 }
14095 "weighted_foam_roller_reverse_crunch_on_bench" => {
14096 Some(CrunchExerciseName::WeightedFoamRollerReverseCrunchOnBench)
14097 }
14098 "foam_roller_reverse_crunch_with_dumbbell" => {
14099 Some(CrunchExerciseName::FoamRollerReverseCrunchWithDumbbell)
14100 }
14101 "foam_roller_reverse_crunch_with_medicine_ball" => {
14102 Some(CrunchExerciseName::FoamRollerReverseCrunchWithMedicineBall)
14103 }
14104 "frog_press" => Some(CrunchExerciseName::FrogPress),
14105 "hanging_knee_raise_oblique_crunch" => {
14106 Some(CrunchExerciseName::HangingKneeRaiseObliqueCrunch)
14107 }
14108 "weighted_hanging_knee_raise_oblique_crunch" => {
14109 Some(CrunchExerciseName::WeightedHangingKneeRaiseObliqueCrunch)
14110 }
14111 "hip_crossover" => Some(CrunchExerciseName::HipCrossover),
14112 "weighted_hip_crossover" => Some(CrunchExerciseName::WeightedHipCrossover),
14113 "hollow_rock" => Some(CrunchExerciseName::HollowRock),
14114 "weighted_hollow_rock" => Some(CrunchExerciseName::WeightedHollowRock),
14115 "incline_reverse_crunch" => Some(CrunchExerciseName::InclineReverseCrunch),
14116 "weighted_incline_reverse_crunch" => {
14117 Some(CrunchExerciseName::WeightedInclineReverseCrunch)
14118 }
14119 "kneeling_cable_crunch" => Some(CrunchExerciseName::KneelingCableCrunch),
14120 "kneeling_cross_crunch" => Some(CrunchExerciseName::KneelingCrossCrunch),
14121 "weighted_kneeling_cross_crunch" => {
14122 Some(CrunchExerciseName::WeightedKneelingCrossCrunch)
14123 }
14124 "kneeling_oblique_cable_crunch" => Some(CrunchExerciseName::KneelingObliqueCableCrunch),
14125 "knees_to_elbow" => Some(CrunchExerciseName::KneesToElbow),
14126 "leg_extensions" => Some(CrunchExerciseName::LegExtensions),
14127 "weighted_leg_extensions" => Some(CrunchExerciseName::WeightedLegExtensions),
14128 "leg_levers" => Some(CrunchExerciseName::LegLevers),
14129 "mcgill_curl_up" => Some(CrunchExerciseName::McgillCurlUp),
14130 "weighted_mcgill_curl_up" => Some(CrunchExerciseName::WeightedMcgillCurlUp),
14131 "modified_pilates_roll_up_with_ball" => {
14132 Some(CrunchExerciseName::ModifiedPilatesRollUpWithBall)
14133 }
14134 "weighted_modified_pilates_roll_up_with_ball" => {
14135 Some(CrunchExerciseName::WeightedModifiedPilatesRollUpWithBall)
14136 }
14137 "pilates_crunch" => Some(CrunchExerciseName::PilatesCrunch),
14138 "weighted_pilates_crunch" => Some(CrunchExerciseName::WeightedPilatesCrunch),
14139 "pilates_roll_up_with_ball" => Some(CrunchExerciseName::PilatesRollUpWithBall),
14140 "weighted_pilates_roll_up_with_ball" => {
14141 Some(CrunchExerciseName::WeightedPilatesRollUpWithBall)
14142 }
14143 "raised_legs_crunch" => Some(CrunchExerciseName::RaisedLegsCrunch),
14144 "weighted_raised_legs_crunch" => Some(CrunchExerciseName::WeightedRaisedLegsCrunch),
14145 "reverse_crunch" => Some(CrunchExerciseName::ReverseCrunch),
14146 "weighted_reverse_crunch" => Some(CrunchExerciseName::WeightedReverseCrunch),
14147 "reverse_crunch_on_a_bench" => Some(CrunchExerciseName::ReverseCrunchOnABench),
14148 "weighted_reverse_crunch_on_a_bench" => {
14149 Some(CrunchExerciseName::WeightedReverseCrunchOnABench)
14150 }
14151 "reverse_curl_and_lift" => Some(CrunchExerciseName::ReverseCurlAndLift),
14152 "weighted_reverse_curl_and_lift" => {
14153 Some(CrunchExerciseName::WeightedReverseCurlAndLift)
14154 }
14155 "rotational_lift" => Some(CrunchExerciseName::RotationalLift),
14156 "weighted_rotational_lift" => Some(CrunchExerciseName::WeightedRotationalLift),
14157 "seated_alternating_reverse_crunch" => {
14158 Some(CrunchExerciseName::SeatedAlternatingReverseCrunch)
14159 }
14160 "weighted_seated_alternating_reverse_crunch" => {
14161 Some(CrunchExerciseName::WeightedSeatedAlternatingReverseCrunch)
14162 }
14163 "seated_leg_u" => Some(CrunchExerciseName::SeatedLegU),
14164 "weighted_seated_leg_u" => Some(CrunchExerciseName::WeightedSeatedLegU),
14165 "side_to_side_crunch_and_weave" => Some(CrunchExerciseName::SideToSideCrunchAndWeave),
14166 "weighted_side_to_side_crunch_and_weave" => {
14167 Some(CrunchExerciseName::WeightedSideToSideCrunchAndWeave)
14168 }
14169 "single_leg_reverse_crunch" => Some(CrunchExerciseName::SingleLegReverseCrunch),
14170 "weighted_single_leg_reverse_crunch" => {
14171 Some(CrunchExerciseName::WeightedSingleLegReverseCrunch)
14172 }
14173 "skater_crunch_cross" => Some(CrunchExerciseName::SkaterCrunchCross),
14174 "weighted_skater_crunch_cross" => Some(CrunchExerciseName::WeightedSkaterCrunchCross),
14175 "standing_cable_crunch" => Some(CrunchExerciseName::StandingCableCrunch),
14176 "standing_side_crunch" => Some(CrunchExerciseName::StandingSideCrunch),
14177 "step_climb" => Some(CrunchExerciseName::StepClimb),
14178 "weighted_step_climb" => Some(CrunchExerciseName::WeightedStepClimb),
14179 "swiss_ball_crunch" => Some(CrunchExerciseName::SwissBallCrunch),
14180 "swiss_ball_reverse_crunch" => Some(CrunchExerciseName::SwissBallReverseCrunch),
14181 "weighted_swiss_ball_reverse_crunch" => {
14182 Some(CrunchExerciseName::WeightedSwissBallReverseCrunch)
14183 }
14184 "swiss_ball_russian_twist" => Some(CrunchExerciseName::SwissBallRussianTwist),
14185 "weighted_swiss_ball_russian_twist" => {
14186 Some(CrunchExerciseName::WeightedSwissBallRussianTwist)
14187 }
14188 "swiss_ball_side_crunch" => Some(CrunchExerciseName::SwissBallSideCrunch),
14189 "weighted_swiss_ball_side_crunch" => {
14190 Some(CrunchExerciseName::WeightedSwissBallSideCrunch)
14191 }
14192 "thoracic_crunches_on_foam_roller" => {
14193 Some(CrunchExerciseName::ThoracicCrunchesOnFoamRoller)
14194 }
14195 "weighted_thoracic_crunches_on_foam_roller" => {
14196 Some(CrunchExerciseName::WeightedThoracicCrunchesOnFoamRoller)
14197 }
14198 "triceps_crunch" => Some(CrunchExerciseName::TricepsCrunch),
14199 "weighted_bicycle_crunch" => Some(CrunchExerciseName::WeightedBicycleCrunch),
14200 "weighted_crunch" => Some(CrunchExerciseName::WeightedCrunch),
14201 "weighted_swiss_ball_crunch" => Some(CrunchExerciseName::WeightedSwissBallCrunch),
14202 "toes_to_bar" => Some(CrunchExerciseName::ToesToBar),
14203 "weighted_toes_to_bar" => Some(CrunchExerciseName::WeightedToesToBar),
14204 "crunch" => Some(CrunchExerciseName::Crunch),
14205 "straight_leg_crunch_with_ball" => Some(CrunchExerciseName::StraightLegCrunchWithBall),
14206 "leg_climb_crunch" => Some(CrunchExerciseName::LegClimbCrunch),
14207 _ => None,
14208 }
14209 }
14210}
14211
14212#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
14213#[repr(u16)]
14214#[non_exhaustive]
14215pub enum CurlExerciseName {
14216 AlternatingDumbbellBicepsCurl = 0,
14217 AlternatingDumbbellBicepsCurlOnSwissBall = 1,
14218 AlternatingInclineDumbbellBicepsCurl = 2,
14219 BarbellBicepsCurl = 3,
14220 BarbellReverseWristCurl = 4,
14221 BarbellWristCurl = 5,
14222 BehindTheBackBarbellReverseWristCurl = 6,
14223 BehindTheBackOneArmCableCurl = 7,
14224 CableBicepsCurl = 8,
14225 CableHammerCurl = 9,
14226 CheatingBarbellBicepsCurl = 10,
14227 CloseGripEzBarBicepsCurl = 11,
14228 CrossBodyDumbbellHammerCurl = 12,
14229 DeadHangBicepsCurl = 13,
14230 DeclineHammerCurl = 14,
14231 DumbbellBicepsCurlWithStaticHold = 15,
14232 DumbbellHammerCurl = 16,
14233 DumbbellReverseWristCurl = 17,
14234 DumbbellWristCurl = 18,
14235 EzBarPreacherCurl = 19,
14236 ForwardBendBicepsCurl = 20,
14237 HammerCurlToPress = 21,
14238 InclineDumbbellBicepsCurl = 22,
14239 InclineOffsetThumbDumbbellCurl = 23,
14240 KettlebellBicepsCurl = 24,
14241 LyingConcentrationCableCurl = 25,
14242 OneArmPreacherCurl = 26,
14243 PlatePinchCurl = 27,
14244 PreacherCurlWithCable = 28,
14245 ReverseEzBarCurl = 29,
14246 ReverseGripWristCurl = 30,
14247 ReverseGripBarbellBicepsCurl = 31,
14248 SeatedAlternatingDumbbellBicepsCurl = 32,
14249 SeatedDumbbellBicepsCurl = 33,
14250 SeatedReverseDumbbellCurl = 34,
14251 SplitStanceOffsetPinkyDumbbellCurl = 35,
14252 StandingAlternatingDumbbellCurls = 36,
14253 StandingDumbbellBicepsCurl = 37,
14254 StandingEzBarBicepsCurl = 38,
14255 StaticCurl = 39,
14256 SwissBallDumbbellOverheadTricepsExtension = 40,
14257 SwissBallEzBarPreacherCurl = 41,
14258 TwistingStandingDumbbellBicepsCurl = 42,
14259 WideGripEzBarBicepsCurl = 43,
14260 OneArmConcentrationCurl = 44,
14261 StandingZottmanBicepsCurl = 45,
14262 DumbbellBicepsCurl = 46,
14263 DragCurlWheelchair = 47,
14264 DumbbellBicepsCurlWheelchair = 48,
14265 BottleCurl = 49,
14266 SeatedBottleCurl = 50,
14267}
14268
14269impl CurlExerciseName {
14270 pub fn as_str(&self) -> &'static str {
14272 match self {
14273 CurlExerciseName::AlternatingDumbbellBicepsCurl => "alternating_dumbbell_biceps_curl",
14274 CurlExerciseName::AlternatingDumbbellBicepsCurlOnSwissBall => {
14275 "alternating_dumbbell_biceps_curl_on_swiss_ball"
14276 }
14277 CurlExerciseName::AlternatingInclineDumbbellBicepsCurl => {
14278 "alternating_incline_dumbbell_biceps_curl"
14279 }
14280 CurlExerciseName::BarbellBicepsCurl => "barbell_biceps_curl",
14281 CurlExerciseName::BarbellReverseWristCurl => "barbell_reverse_wrist_curl",
14282 CurlExerciseName::BarbellWristCurl => "barbell_wrist_curl",
14283 CurlExerciseName::BehindTheBackBarbellReverseWristCurl => {
14284 "behind_the_back_barbell_reverse_wrist_curl"
14285 }
14286 CurlExerciseName::BehindTheBackOneArmCableCurl => "behind_the_back_one_arm_cable_curl",
14287 CurlExerciseName::CableBicepsCurl => "cable_biceps_curl",
14288 CurlExerciseName::CableHammerCurl => "cable_hammer_curl",
14289 CurlExerciseName::CheatingBarbellBicepsCurl => "cheating_barbell_biceps_curl",
14290 CurlExerciseName::CloseGripEzBarBicepsCurl => "close_grip_ez_bar_biceps_curl",
14291 CurlExerciseName::CrossBodyDumbbellHammerCurl => "cross_body_dumbbell_hammer_curl",
14292 CurlExerciseName::DeadHangBicepsCurl => "dead_hang_biceps_curl",
14293 CurlExerciseName::DeclineHammerCurl => "decline_hammer_curl",
14294 CurlExerciseName::DumbbellBicepsCurlWithStaticHold => {
14295 "dumbbell_biceps_curl_with_static_hold"
14296 }
14297 CurlExerciseName::DumbbellHammerCurl => "dumbbell_hammer_curl",
14298 CurlExerciseName::DumbbellReverseWristCurl => "dumbbell_reverse_wrist_curl",
14299 CurlExerciseName::DumbbellWristCurl => "dumbbell_wrist_curl",
14300 CurlExerciseName::EzBarPreacherCurl => "ez_bar_preacher_curl",
14301 CurlExerciseName::ForwardBendBicepsCurl => "forward_bend_biceps_curl",
14302 CurlExerciseName::HammerCurlToPress => "hammer_curl_to_press",
14303 CurlExerciseName::InclineDumbbellBicepsCurl => "incline_dumbbell_biceps_curl",
14304 CurlExerciseName::InclineOffsetThumbDumbbellCurl => {
14305 "incline_offset_thumb_dumbbell_curl"
14306 }
14307 CurlExerciseName::KettlebellBicepsCurl => "kettlebell_biceps_curl",
14308 CurlExerciseName::LyingConcentrationCableCurl => "lying_concentration_cable_curl",
14309 CurlExerciseName::OneArmPreacherCurl => "one_arm_preacher_curl",
14310 CurlExerciseName::PlatePinchCurl => "plate_pinch_curl",
14311 CurlExerciseName::PreacherCurlWithCable => "preacher_curl_with_cable",
14312 CurlExerciseName::ReverseEzBarCurl => "reverse_ez_bar_curl",
14313 CurlExerciseName::ReverseGripWristCurl => "reverse_grip_wrist_curl",
14314 CurlExerciseName::ReverseGripBarbellBicepsCurl => "reverse_grip_barbell_biceps_curl",
14315 CurlExerciseName::SeatedAlternatingDumbbellBicepsCurl => {
14316 "seated_alternating_dumbbell_biceps_curl"
14317 }
14318 CurlExerciseName::SeatedDumbbellBicepsCurl => "seated_dumbbell_biceps_curl",
14319 CurlExerciseName::SeatedReverseDumbbellCurl => "seated_reverse_dumbbell_curl",
14320 CurlExerciseName::SplitStanceOffsetPinkyDumbbellCurl => {
14321 "split_stance_offset_pinky_dumbbell_curl"
14322 }
14323 CurlExerciseName::StandingAlternatingDumbbellCurls => {
14324 "standing_alternating_dumbbell_curls"
14325 }
14326 CurlExerciseName::StandingDumbbellBicepsCurl => "standing_dumbbell_biceps_curl",
14327 CurlExerciseName::StandingEzBarBicepsCurl => "standing_ez_bar_biceps_curl",
14328 CurlExerciseName::StaticCurl => "static_curl",
14329 CurlExerciseName::SwissBallDumbbellOverheadTricepsExtension => {
14330 "swiss_ball_dumbbell_overhead_triceps_extension"
14331 }
14332 CurlExerciseName::SwissBallEzBarPreacherCurl => "swiss_ball_ez_bar_preacher_curl",
14333 CurlExerciseName::TwistingStandingDumbbellBicepsCurl => {
14334 "twisting_standing_dumbbell_biceps_curl"
14335 }
14336 CurlExerciseName::WideGripEzBarBicepsCurl => "wide_grip_ez_bar_biceps_curl",
14337 CurlExerciseName::OneArmConcentrationCurl => "one_arm_concentration_curl",
14338 CurlExerciseName::StandingZottmanBicepsCurl => "standing_zottman_biceps_curl",
14339 CurlExerciseName::DumbbellBicepsCurl => "dumbbell_biceps_curl",
14340 CurlExerciseName::DragCurlWheelchair => "drag_curl_wheelchair",
14341 CurlExerciseName::DumbbellBicepsCurlWheelchair => "dumbbell_biceps_curl_wheelchair",
14342 CurlExerciseName::BottleCurl => "bottle_curl",
14343 CurlExerciseName::SeatedBottleCurl => "seated_bottle_curl",
14344 }
14345 }
14346
14347 pub fn from_value(value: u16) -> Option<Self> {
14349 match value {
14350 0 => Some(CurlExerciseName::AlternatingDumbbellBicepsCurl),
14351 1 => Some(CurlExerciseName::AlternatingDumbbellBicepsCurlOnSwissBall),
14352 2 => Some(CurlExerciseName::AlternatingInclineDumbbellBicepsCurl),
14353 3 => Some(CurlExerciseName::BarbellBicepsCurl),
14354 4 => Some(CurlExerciseName::BarbellReverseWristCurl),
14355 5 => Some(CurlExerciseName::BarbellWristCurl),
14356 6 => Some(CurlExerciseName::BehindTheBackBarbellReverseWristCurl),
14357 7 => Some(CurlExerciseName::BehindTheBackOneArmCableCurl),
14358 8 => Some(CurlExerciseName::CableBicepsCurl),
14359 9 => Some(CurlExerciseName::CableHammerCurl),
14360 10 => Some(CurlExerciseName::CheatingBarbellBicepsCurl),
14361 11 => Some(CurlExerciseName::CloseGripEzBarBicepsCurl),
14362 12 => Some(CurlExerciseName::CrossBodyDumbbellHammerCurl),
14363 13 => Some(CurlExerciseName::DeadHangBicepsCurl),
14364 14 => Some(CurlExerciseName::DeclineHammerCurl),
14365 15 => Some(CurlExerciseName::DumbbellBicepsCurlWithStaticHold),
14366 16 => Some(CurlExerciseName::DumbbellHammerCurl),
14367 17 => Some(CurlExerciseName::DumbbellReverseWristCurl),
14368 18 => Some(CurlExerciseName::DumbbellWristCurl),
14369 19 => Some(CurlExerciseName::EzBarPreacherCurl),
14370 20 => Some(CurlExerciseName::ForwardBendBicepsCurl),
14371 21 => Some(CurlExerciseName::HammerCurlToPress),
14372 22 => Some(CurlExerciseName::InclineDumbbellBicepsCurl),
14373 23 => Some(CurlExerciseName::InclineOffsetThumbDumbbellCurl),
14374 24 => Some(CurlExerciseName::KettlebellBicepsCurl),
14375 25 => Some(CurlExerciseName::LyingConcentrationCableCurl),
14376 26 => Some(CurlExerciseName::OneArmPreacherCurl),
14377 27 => Some(CurlExerciseName::PlatePinchCurl),
14378 28 => Some(CurlExerciseName::PreacherCurlWithCable),
14379 29 => Some(CurlExerciseName::ReverseEzBarCurl),
14380 30 => Some(CurlExerciseName::ReverseGripWristCurl),
14381 31 => Some(CurlExerciseName::ReverseGripBarbellBicepsCurl),
14382 32 => Some(CurlExerciseName::SeatedAlternatingDumbbellBicepsCurl),
14383 33 => Some(CurlExerciseName::SeatedDumbbellBicepsCurl),
14384 34 => Some(CurlExerciseName::SeatedReverseDumbbellCurl),
14385 35 => Some(CurlExerciseName::SplitStanceOffsetPinkyDumbbellCurl),
14386 36 => Some(CurlExerciseName::StandingAlternatingDumbbellCurls),
14387 37 => Some(CurlExerciseName::StandingDumbbellBicepsCurl),
14388 38 => Some(CurlExerciseName::StandingEzBarBicepsCurl),
14389 39 => Some(CurlExerciseName::StaticCurl),
14390 40 => Some(CurlExerciseName::SwissBallDumbbellOverheadTricepsExtension),
14391 41 => Some(CurlExerciseName::SwissBallEzBarPreacherCurl),
14392 42 => Some(CurlExerciseName::TwistingStandingDumbbellBicepsCurl),
14393 43 => Some(CurlExerciseName::WideGripEzBarBicepsCurl),
14394 44 => Some(CurlExerciseName::OneArmConcentrationCurl),
14395 45 => Some(CurlExerciseName::StandingZottmanBicepsCurl),
14396 46 => Some(CurlExerciseName::DumbbellBicepsCurl),
14397 47 => Some(CurlExerciseName::DragCurlWheelchair),
14398 48 => Some(CurlExerciseName::DumbbellBicepsCurlWheelchair),
14399 49 => Some(CurlExerciseName::BottleCurl),
14400 50 => Some(CurlExerciseName::SeatedBottleCurl),
14401 _ => None,
14402 }
14403 }
14404
14405 pub fn from_str(name: &str) -> Option<Self> {
14407 match name {
14408 "alternating_dumbbell_biceps_curl" => {
14409 Some(CurlExerciseName::AlternatingDumbbellBicepsCurl)
14410 }
14411 "alternating_dumbbell_biceps_curl_on_swiss_ball" => {
14412 Some(CurlExerciseName::AlternatingDumbbellBicepsCurlOnSwissBall)
14413 }
14414 "alternating_incline_dumbbell_biceps_curl" => {
14415 Some(CurlExerciseName::AlternatingInclineDumbbellBicepsCurl)
14416 }
14417 "barbell_biceps_curl" => Some(CurlExerciseName::BarbellBicepsCurl),
14418 "barbell_reverse_wrist_curl" => Some(CurlExerciseName::BarbellReverseWristCurl),
14419 "barbell_wrist_curl" => Some(CurlExerciseName::BarbellWristCurl),
14420 "behind_the_back_barbell_reverse_wrist_curl" => {
14421 Some(CurlExerciseName::BehindTheBackBarbellReverseWristCurl)
14422 }
14423 "behind_the_back_one_arm_cable_curl" => {
14424 Some(CurlExerciseName::BehindTheBackOneArmCableCurl)
14425 }
14426 "cable_biceps_curl" => Some(CurlExerciseName::CableBicepsCurl),
14427 "cable_hammer_curl" => Some(CurlExerciseName::CableHammerCurl),
14428 "cheating_barbell_biceps_curl" => Some(CurlExerciseName::CheatingBarbellBicepsCurl),
14429 "close_grip_ez_bar_biceps_curl" => Some(CurlExerciseName::CloseGripEzBarBicepsCurl),
14430 "cross_body_dumbbell_hammer_curl" => {
14431 Some(CurlExerciseName::CrossBodyDumbbellHammerCurl)
14432 }
14433 "dead_hang_biceps_curl" => Some(CurlExerciseName::DeadHangBicepsCurl),
14434 "decline_hammer_curl" => Some(CurlExerciseName::DeclineHammerCurl),
14435 "dumbbell_biceps_curl_with_static_hold" => {
14436 Some(CurlExerciseName::DumbbellBicepsCurlWithStaticHold)
14437 }
14438 "dumbbell_hammer_curl" => Some(CurlExerciseName::DumbbellHammerCurl),
14439 "dumbbell_reverse_wrist_curl" => Some(CurlExerciseName::DumbbellReverseWristCurl),
14440 "dumbbell_wrist_curl" => Some(CurlExerciseName::DumbbellWristCurl),
14441 "ez_bar_preacher_curl" => Some(CurlExerciseName::EzBarPreacherCurl),
14442 "forward_bend_biceps_curl" => Some(CurlExerciseName::ForwardBendBicepsCurl),
14443 "hammer_curl_to_press" => Some(CurlExerciseName::HammerCurlToPress),
14444 "incline_dumbbell_biceps_curl" => Some(CurlExerciseName::InclineDumbbellBicepsCurl),
14445 "incline_offset_thumb_dumbbell_curl" => {
14446 Some(CurlExerciseName::InclineOffsetThumbDumbbellCurl)
14447 }
14448 "kettlebell_biceps_curl" => Some(CurlExerciseName::KettlebellBicepsCurl),
14449 "lying_concentration_cable_curl" => Some(CurlExerciseName::LyingConcentrationCableCurl),
14450 "one_arm_preacher_curl" => Some(CurlExerciseName::OneArmPreacherCurl),
14451 "plate_pinch_curl" => Some(CurlExerciseName::PlatePinchCurl),
14452 "preacher_curl_with_cable" => Some(CurlExerciseName::PreacherCurlWithCable),
14453 "reverse_ez_bar_curl" => Some(CurlExerciseName::ReverseEzBarCurl),
14454 "reverse_grip_wrist_curl" => Some(CurlExerciseName::ReverseGripWristCurl),
14455 "reverse_grip_barbell_biceps_curl" => {
14456 Some(CurlExerciseName::ReverseGripBarbellBicepsCurl)
14457 }
14458 "seated_alternating_dumbbell_biceps_curl" => {
14459 Some(CurlExerciseName::SeatedAlternatingDumbbellBicepsCurl)
14460 }
14461 "seated_dumbbell_biceps_curl" => Some(CurlExerciseName::SeatedDumbbellBicepsCurl),
14462 "seated_reverse_dumbbell_curl" => Some(CurlExerciseName::SeatedReverseDumbbellCurl),
14463 "split_stance_offset_pinky_dumbbell_curl" => {
14464 Some(CurlExerciseName::SplitStanceOffsetPinkyDumbbellCurl)
14465 }
14466 "standing_alternating_dumbbell_curls" => {
14467 Some(CurlExerciseName::StandingAlternatingDumbbellCurls)
14468 }
14469 "standing_dumbbell_biceps_curl" => Some(CurlExerciseName::StandingDumbbellBicepsCurl),
14470 "standing_ez_bar_biceps_curl" => Some(CurlExerciseName::StandingEzBarBicepsCurl),
14471 "static_curl" => Some(CurlExerciseName::StaticCurl),
14472 "swiss_ball_dumbbell_overhead_triceps_extension" => {
14473 Some(CurlExerciseName::SwissBallDumbbellOverheadTricepsExtension)
14474 }
14475 "swiss_ball_ez_bar_preacher_curl" => Some(CurlExerciseName::SwissBallEzBarPreacherCurl),
14476 "twisting_standing_dumbbell_biceps_curl" => {
14477 Some(CurlExerciseName::TwistingStandingDumbbellBicepsCurl)
14478 }
14479 "wide_grip_ez_bar_biceps_curl" => Some(CurlExerciseName::WideGripEzBarBicepsCurl),
14480 "one_arm_concentration_curl" => Some(CurlExerciseName::OneArmConcentrationCurl),
14481 "standing_zottman_biceps_curl" => Some(CurlExerciseName::StandingZottmanBicepsCurl),
14482 "dumbbell_biceps_curl" => Some(CurlExerciseName::DumbbellBicepsCurl),
14483 "drag_curl_wheelchair" => Some(CurlExerciseName::DragCurlWheelchair),
14484 "dumbbell_biceps_curl_wheelchair" => {
14485 Some(CurlExerciseName::DumbbellBicepsCurlWheelchair)
14486 }
14487 "bottle_curl" => Some(CurlExerciseName::BottleCurl),
14488 "seated_bottle_curl" => Some(CurlExerciseName::SeatedBottleCurl),
14489 _ => None,
14490 }
14491 }
14492}
14493
14494#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
14495#[repr(u16)]
14496#[non_exhaustive]
14497pub enum DeadliftExerciseName {
14498 BarbellDeadlift = 0,
14499 BarbellStraightLegDeadlift = 1,
14500 DumbbellDeadlift = 2,
14501 DumbbellSingleLegDeadliftToRow = 3,
14502 DumbbellStraightLegDeadlift = 4,
14503 KettlebellFloorToShelf = 5,
14504 OneArmOneLegDeadlift = 6,
14505 RackPull = 7,
14506 RotationalDumbbellStraightLegDeadlift = 8,
14507 SingleArmDeadlift = 9,
14508 SingleLegBarbellDeadlift = 10,
14509 SingleLegBarbellStraightLegDeadlift = 11,
14510 SingleLegDeadliftWithBarbell = 12,
14511 SingleLegRdlCircuit = 13,
14512 SingleLegRomanianDeadliftWithDumbbell = 14,
14513 SumoDeadlift = 15,
14514 SumoDeadliftHighPull = 16,
14515 TrapBarDeadlift = 17,
14516 WideGripBarbellDeadlift = 18,
14517 KettlebellDeadlift = 20,
14518 KettlebellSumoDeadlift = 21,
14519 RomanianDeadlift = 23,
14520 SingleLegRomanianDeadliftCircuit = 24,
14521 StraightLegDeadlift = 25,
14522}
14523
14524impl DeadliftExerciseName {
14525 pub fn as_str(&self) -> &'static str {
14527 match self {
14528 DeadliftExerciseName::BarbellDeadlift => "barbell_deadlift",
14529 DeadliftExerciseName::BarbellStraightLegDeadlift => "barbell_straight_leg_deadlift",
14530 DeadliftExerciseName::DumbbellDeadlift => "dumbbell_deadlift",
14531 DeadliftExerciseName::DumbbellSingleLegDeadliftToRow => {
14532 "dumbbell_single_leg_deadlift_to_row"
14533 }
14534 DeadliftExerciseName::DumbbellStraightLegDeadlift => "dumbbell_straight_leg_deadlift",
14535 DeadliftExerciseName::KettlebellFloorToShelf => "kettlebell_floor_to_shelf",
14536 DeadliftExerciseName::OneArmOneLegDeadlift => "one_arm_one_leg_deadlift",
14537 DeadliftExerciseName::RackPull => "rack_pull",
14538 DeadliftExerciseName::RotationalDumbbellStraightLegDeadlift => {
14539 "rotational_dumbbell_straight_leg_deadlift"
14540 }
14541 DeadliftExerciseName::SingleArmDeadlift => "single_arm_deadlift",
14542 DeadliftExerciseName::SingleLegBarbellDeadlift => "single_leg_barbell_deadlift",
14543 DeadliftExerciseName::SingleLegBarbellStraightLegDeadlift => {
14544 "single_leg_barbell_straight_leg_deadlift"
14545 }
14546 DeadliftExerciseName::SingleLegDeadliftWithBarbell => {
14547 "single_leg_deadlift_with_barbell"
14548 }
14549 DeadliftExerciseName::SingleLegRdlCircuit => "single_leg_rdl_circuit",
14550 DeadliftExerciseName::SingleLegRomanianDeadliftWithDumbbell => {
14551 "single_leg_romanian_deadlift_with_dumbbell"
14552 }
14553 DeadliftExerciseName::SumoDeadlift => "sumo_deadlift",
14554 DeadliftExerciseName::SumoDeadliftHighPull => "sumo_deadlift_high_pull",
14555 DeadliftExerciseName::TrapBarDeadlift => "trap_bar_deadlift",
14556 DeadliftExerciseName::WideGripBarbellDeadlift => "wide_grip_barbell_deadlift",
14557 DeadliftExerciseName::KettlebellDeadlift => "kettlebell_deadlift",
14558 DeadliftExerciseName::KettlebellSumoDeadlift => "kettlebell_sumo_deadlift",
14559 DeadliftExerciseName::RomanianDeadlift => "romanian_deadlift",
14560 DeadliftExerciseName::SingleLegRomanianDeadliftCircuit => {
14561 "single_leg_romanian_deadlift_circuit"
14562 }
14563 DeadliftExerciseName::StraightLegDeadlift => "straight_leg_deadlift",
14564 }
14565 }
14566
14567 pub fn from_value(value: u16) -> Option<Self> {
14569 match value {
14570 0 => Some(DeadliftExerciseName::BarbellDeadlift),
14571 1 => Some(DeadliftExerciseName::BarbellStraightLegDeadlift),
14572 2 => Some(DeadliftExerciseName::DumbbellDeadlift),
14573 3 => Some(DeadliftExerciseName::DumbbellSingleLegDeadliftToRow),
14574 4 => Some(DeadliftExerciseName::DumbbellStraightLegDeadlift),
14575 5 => Some(DeadliftExerciseName::KettlebellFloorToShelf),
14576 6 => Some(DeadliftExerciseName::OneArmOneLegDeadlift),
14577 7 => Some(DeadliftExerciseName::RackPull),
14578 8 => Some(DeadliftExerciseName::RotationalDumbbellStraightLegDeadlift),
14579 9 => Some(DeadliftExerciseName::SingleArmDeadlift),
14580 10 => Some(DeadliftExerciseName::SingleLegBarbellDeadlift),
14581 11 => Some(DeadliftExerciseName::SingleLegBarbellStraightLegDeadlift),
14582 12 => Some(DeadliftExerciseName::SingleLegDeadliftWithBarbell),
14583 13 => Some(DeadliftExerciseName::SingleLegRdlCircuit),
14584 14 => Some(DeadliftExerciseName::SingleLegRomanianDeadliftWithDumbbell),
14585 15 => Some(DeadliftExerciseName::SumoDeadlift),
14586 16 => Some(DeadliftExerciseName::SumoDeadliftHighPull),
14587 17 => Some(DeadliftExerciseName::TrapBarDeadlift),
14588 18 => Some(DeadliftExerciseName::WideGripBarbellDeadlift),
14589 20 => Some(DeadliftExerciseName::KettlebellDeadlift),
14590 21 => Some(DeadliftExerciseName::KettlebellSumoDeadlift),
14591 23 => Some(DeadliftExerciseName::RomanianDeadlift),
14592 24 => Some(DeadliftExerciseName::SingleLegRomanianDeadliftCircuit),
14593 25 => Some(DeadliftExerciseName::StraightLegDeadlift),
14594 _ => None,
14595 }
14596 }
14597
14598 pub fn from_str(name: &str) -> Option<Self> {
14600 match name {
14601 "barbell_deadlift" => Some(DeadliftExerciseName::BarbellDeadlift),
14602 "barbell_straight_leg_deadlift" => {
14603 Some(DeadliftExerciseName::BarbellStraightLegDeadlift)
14604 }
14605 "dumbbell_deadlift" => Some(DeadliftExerciseName::DumbbellDeadlift),
14606 "dumbbell_single_leg_deadlift_to_row" => {
14607 Some(DeadliftExerciseName::DumbbellSingleLegDeadliftToRow)
14608 }
14609 "dumbbell_straight_leg_deadlift" => {
14610 Some(DeadliftExerciseName::DumbbellStraightLegDeadlift)
14611 }
14612 "kettlebell_floor_to_shelf" => Some(DeadliftExerciseName::KettlebellFloorToShelf),
14613 "one_arm_one_leg_deadlift" => Some(DeadliftExerciseName::OneArmOneLegDeadlift),
14614 "rack_pull" => Some(DeadliftExerciseName::RackPull),
14615 "rotational_dumbbell_straight_leg_deadlift" => {
14616 Some(DeadliftExerciseName::RotationalDumbbellStraightLegDeadlift)
14617 }
14618 "single_arm_deadlift" => Some(DeadliftExerciseName::SingleArmDeadlift),
14619 "single_leg_barbell_deadlift" => Some(DeadliftExerciseName::SingleLegBarbellDeadlift),
14620 "single_leg_barbell_straight_leg_deadlift" => {
14621 Some(DeadliftExerciseName::SingleLegBarbellStraightLegDeadlift)
14622 }
14623 "single_leg_deadlift_with_barbell" => {
14624 Some(DeadliftExerciseName::SingleLegDeadliftWithBarbell)
14625 }
14626 "single_leg_rdl_circuit" => Some(DeadliftExerciseName::SingleLegRdlCircuit),
14627 "single_leg_romanian_deadlift_with_dumbbell" => {
14628 Some(DeadliftExerciseName::SingleLegRomanianDeadliftWithDumbbell)
14629 }
14630 "sumo_deadlift" => Some(DeadliftExerciseName::SumoDeadlift),
14631 "sumo_deadlift_high_pull" => Some(DeadliftExerciseName::SumoDeadliftHighPull),
14632 "trap_bar_deadlift" => Some(DeadliftExerciseName::TrapBarDeadlift),
14633 "wide_grip_barbell_deadlift" => Some(DeadliftExerciseName::WideGripBarbellDeadlift),
14634 "kettlebell_deadlift" => Some(DeadliftExerciseName::KettlebellDeadlift),
14635 "kettlebell_sumo_deadlift" => Some(DeadliftExerciseName::KettlebellSumoDeadlift),
14636 "romanian_deadlift" => Some(DeadliftExerciseName::RomanianDeadlift),
14637 "single_leg_romanian_deadlift_circuit" => {
14638 Some(DeadliftExerciseName::SingleLegRomanianDeadliftCircuit)
14639 }
14640 "straight_leg_deadlift" => Some(DeadliftExerciseName::StraightLegDeadlift),
14641 _ => None,
14642 }
14643 }
14644}
14645
14646#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
14647#[repr(u16)]
14648#[non_exhaustive]
14649pub enum FlyeExerciseName {
14650 CableCrossover = 0,
14651 DeclineDumbbellFlye = 1,
14652 DumbbellFlye = 2,
14653 InclineDumbbellFlye = 3,
14654 KettlebellFlye = 4,
14655 KneelingRearFlye = 5,
14656 SingleArmStandingCableReverseFlye = 6,
14657 SwissBallDumbbellFlye = 7,
14658 ArmRotations = 8,
14659 HugATree = 9,
14660 FaceDownInclineReverseFlye = 10,
14661 InclineReverseFlye = 11,
14662 RearDeltFlyWheelchair = 12,
14663}
14664
14665impl FlyeExerciseName {
14666 pub fn as_str(&self) -> &'static str {
14668 match self {
14669 FlyeExerciseName::CableCrossover => "cable_crossover",
14670 FlyeExerciseName::DeclineDumbbellFlye => "decline_dumbbell_flye",
14671 FlyeExerciseName::DumbbellFlye => "dumbbell_flye",
14672 FlyeExerciseName::InclineDumbbellFlye => "incline_dumbbell_flye",
14673 FlyeExerciseName::KettlebellFlye => "kettlebell_flye",
14674 FlyeExerciseName::KneelingRearFlye => "kneeling_rear_flye",
14675 FlyeExerciseName::SingleArmStandingCableReverseFlye => {
14676 "single_arm_standing_cable_reverse_flye"
14677 }
14678 FlyeExerciseName::SwissBallDumbbellFlye => "swiss_ball_dumbbell_flye",
14679 FlyeExerciseName::ArmRotations => "arm_rotations",
14680 FlyeExerciseName::HugATree => "hug_a_tree",
14681 FlyeExerciseName::FaceDownInclineReverseFlye => "face_down_incline_reverse_flye",
14682 FlyeExerciseName::InclineReverseFlye => "incline_reverse_flye",
14683 FlyeExerciseName::RearDeltFlyWheelchair => "rear_delt_fly_wheelchair",
14684 }
14685 }
14686
14687 pub fn from_value(value: u16) -> Option<Self> {
14689 match value {
14690 0 => Some(FlyeExerciseName::CableCrossover),
14691 1 => Some(FlyeExerciseName::DeclineDumbbellFlye),
14692 2 => Some(FlyeExerciseName::DumbbellFlye),
14693 3 => Some(FlyeExerciseName::InclineDumbbellFlye),
14694 4 => Some(FlyeExerciseName::KettlebellFlye),
14695 5 => Some(FlyeExerciseName::KneelingRearFlye),
14696 6 => Some(FlyeExerciseName::SingleArmStandingCableReverseFlye),
14697 7 => Some(FlyeExerciseName::SwissBallDumbbellFlye),
14698 8 => Some(FlyeExerciseName::ArmRotations),
14699 9 => Some(FlyeExerciseName::HugATree),
14700 10 => Some(FlyeExerciseName::FaceDownInclineReverseFlye),
14701 11 => Some(FlyeExerciseName::InclineReverseFlye),
14702 12 => Some(FlyeExerciseName::RearDeltFlyWheelchair),
14703 _ => None,
14704 }
14705 }
14706
14707 pub fn from_str(name: &str) -> Option<Self> {
14709 match name {
14710 "cable_crossover" => Some(FlyeExerciseName::CableCrossover),
14711 "decline_dumbbell_flye" => Some(FlyeExerciseName::DeclineDumbbellFlye),
14712 "dumbbell_flye" => Some(FlyeExerciseName::DumbbellFlye),
14713 "incline_dumbbell_flye" => Some(FlyeExerciseName::InclineDumbbellFlye),
14714 "kettlebell_flye" => Some(FlyeExerciseName::KettlebellFlye),
14715 "kneeling_rear_flye" => Some(FlyeExerciseName::KneelingRearFlye),
14716 "single_arm_standing_cable_reverse_flye" => {
14717 Some(FlyeExerciseName::SingleArmStandingCableReverseFlye)
14718 }
14719 "swiss_ball_dumbbell_flye" => Some(FlyeExerciseName::SwissBallDumbbellFlye),
14720 "arm_rotations" => Some(FlyeExerciseName::ArmRotations),
14721 "hug_a_tree" => Some(FlyeExerciseName::HugATree),
14722 "face_down_incline_reverse_flye" => Some(FlyeExerciseName::FaceDownInclineReverseFlye),
14723 "incline_reverse_flye" => Some(FlyeExerciseName::InclineReverseFlye),
14724 "rear_delt_fly_wheelchair" => Some(FlyeExerciseName::RearDeltFlyWheelchair),
14725 _ => None,
14726 }
14727 }
14728}
14729
14730#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
14731#[repr(u16)]
14732#[non_exhaustive]
14733pub enum HipRaiseExerciseName {
14734 BarbellHipThrustOnFloor = 0,
14735 BarbellHipThrustWithBench = 1,
14736 BentKneeSwissBallReverseHipRaise = 2,
14737 WeightedBentKneeSwissBallReverseHipRaise = 3,
14738 BridgeWithLegExtension = 4,
14739 WeightedBridgeWithLegExtension = 5,
14740 ClamBridge = 6,
14741 FrontKickTabletop = 7,
14742 WeightedFrontKickTabletop = 8,
14743 HipExtensionAndCross = 9,
14744 WeightedHipExtensionAndCross = 10,
14745 HipRaise = 11,
14746 WeightedHipRaise = 12,
14747 HipRaiseWithFeetOnSwissBall = 13,
14748 WeightedHipRaiseWithFeetOnSwissBall = 14,
14749 HipRaiseWithHeadOnBosuBall = 15,
14750 WeightedHipRaiseWithHeadOnBosuBall = 16,
14751 HipRaiseWithHeadOnSwissBall = 17,
14752 WeightedHipRaiseWithHeadOnSwissBall = 18,
14753 HipRaiseWithKneeSqueeze = 19,
14754 WeightedHipRaiseWithKneeSqueeze = 20,
14755 InclineRearLegExtension = 21,
14756 WeightedInclineRearLegExtension = 22,
14757 KettlebellSwing = 23,
14758 MarchingHipRaise = 24,
14759 WeightedMarchingHipRaise = 25,
14760 MarchingHipRaiseWithFeetOnASwissBall = 26,
14761 WeightedMarchingHipRaiseWithFeetOnASwissBall = 27,
14762 ReverseHipRaise = 28,
14763 WeightedReverseHipRaise = 29,
14764 SingleLegHipRaise = 30,
14765 WeightedSingleLegHipRaise = 31,
14766 SingleLegHipRaiseWithFootOnBench = 32,
14767 WeightedSingleLegHipRaiseWithFootOnBench = 33,
14768 SingleLegHipRaiseWithFootOnBosuBall = 34,
14769 WeightedSingleLegHipRaiseWithFootOnBosuBall = 35,
14770 SingleLegHipRaiseWithFootOnFoamRoller = 36,
14771 WeightedSingleLegHipRaiseWithFootOnFoamRoller = 37,
14772 SingleLegHipRaiseWithFootOnMedicineBall = 38,
14773 WeightedSingleLegHipRaiseWithFootOnMedicineBall = 39,
14774 SingleLegHipRaiseWithHeadOnBosuBall = 40,
14775 WeightedSingleLegHipRaiseWithHeadOnBosuBall = 41,
14776 WeightedClamBridge = 42,
14777 SingleLegSwissBallHipRaiseAndLegCurl = 43,
14778 Clams = 44,
14779 InnerThighCircles = 45,
14780 InnerThighSideLift = 46,
14781 LegCircles = 47,
14782 LegLift = 48,
14783 LegLiftInExternalRotation = 49,
14784}
14785
14786impl HipRaiseExerciseName {
14787 pub fn as_str(&self) -> &'static str {
14789 match self {
14790 HipRaiseExerciseName::BarbellHipThrustOnFloor => "barbell_hip_thrust_on_floor",
14791 HipRaiseExerciseName::BarbellHipThrustWithBench => "barbell_hip_thrust_with_bench",
14792 HipRaiseExerciseName::BentKneeSwissBallReverseHipRaise => {
14793 "bent_knee_swiss_ball_reverse_hip_raise"
14794 }
14795 HipRaiseExerciseName::WeightedBentKneeSwissBallReverseHipRaise => {
14796 "weighted_bent_knee_swiss_ball_reverse_hip_raise"
14797 }
14798 HipRaiseExerciseName::BridgeWithLegExtension => "bridge_with_leg_extension",
14799 HipRaiseExerciseName::WeightedBridgeWithLegExtension => {
14800 "weighted_bridge_with_leg_extension"
14801 }
14802 HipRaiseExerciseName::ClamBridge => "clam_bridge",
14803 HipRaiseExerciseName::FrontKickTabletop => "front_kick_tabletop",
14804 HipRaiseExerciseName::WeightedFrontKickTabletop => "weighted_front_kick_tabletop",
14805 HipRaiseExerciseName::HipExtensionAndCross => "hip_extension_and_cross",
14806 HipRaiseExerciseName::WeightedHipExtensionAndCross => {
14807 "weighted_hip_extension_and_cross"
14808 }
14809 HipRaiseExerciseName::HipRaise => "hip_raise",
14810 HipRaiseExerciseName::WeightedHipRaise => "weighted_hip_raise",
14811 HipRaiseExerciseName::HipRaiseWithFeetOnSwissBall => {
14812 "hip_raise_with_feet_on_swiss_ball"
14813 }
14814 HipRaiseExerciseName::WeightedHipRaiseWithFeetOnSwissBall => {
14815 "weighted_hip_raise_with_feet_on_swiss_ball"
14816 }
14817 HipRaiseExerciseName::HipRaiseWithHeadOnBosuBall => "hip_raise_with_head_on_bosu_ball",
14818 HipRaiseExerciseName::WeightedHipRaiseWithHeadOnBosuBall => {
14819 "weighted_hip_raise_with_head_on_bosu_ball"
14820 }
14821 HipRaiseExerciseName::HipRaiseWithHeadOnSwissBall => {
14822 "hip_raise_with_head_on_swiss_ball"
14823 }
14824 HipRaiseExerciseName::WeightedHipRaiseWithHeadOnSwissBall => {
14825 "weighted_hip_raise_with_head_on_swiss_ball"
14826 }
14827 HipRaiseExerciseName::HipRaiseWithKneeSqueeze => "hip_raise_with_knee_squeeze",
14828 HipRaiseExerciseName::WeightedHipRaiseWithKneeSqueeze => {
14829 "weighted_hip_raise_with_knee_squeeze"
14830 }
14831 HipRaiseExerciseName::InclineRearLegExtension => "incline_rear_leg_extension",
14832 HipRaiseExerciseName::WeightedInclineRearLegExtension => {
14833 "weighted_incline_rear_leg_extension"
14834 }
14835 HipRaiseExerciseName::KettlebellSwing => "kettlebell_swing",
14836 HipRaiseExerciseName::MarchingHipRaise => "marching_hip_raise",
14837 HipRaiseExerciseName::WeightedMarchingHipRaise => "weighted_marching_hip_raise",
14838 HipRaiseExerciseName::MarchingHipRaiseWithFeetOnASwissBall => {
14839 "marching_hip_raise_with_feet_on_a_swiss_ball"
14840 }
14841 HipRaiseExerciseName::WeightedMarchingHipRaiseWithFeetOnASwissBall => {
14842 "weighted_marching_hip_raise_with_feet_on_a_swiss_ball"
14843 }
14844 HipRaiseExerciseName::ReverseHipRaise => "reverse_hip_raise",
14845 HipRaiseExerciseName::WeightedReverseHipRaise => "weighted_reverse_hip_raise",
14846 HipRaiseExerciseName::SingleLegHipRaise => "single_leg_hip_raise",
14847 HipRaiseExerciseName::WeightedSingleLegHipRaise => "weighted_single_leg_hip_raise",
14848 HipRaiseExerciseName::SingleLegHipRaiseWithFootOnBench => {
14849 "single_leg_hip_raise_with_foot_on_bench"
14850 }
14851 HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnBench => {
14852 "weighted_single_leg_hip_raise_with_foot_on_bench"
14853 }
14854 HipRaiseExerciseName::SingleLegHipRaiseWithFootOnBosuBall => {
14855 "single_leg_hip_raise_with_foot_on_bosu_ball"
14856 }
14857 HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnBosuBall => {
14858 "weighted_single_leg_hip_raise_with_foot_on_bosu_ball"
14859 }
14860 HipRaiseExerciseName::SingleLegHipRaiseWithFootOnFoamRoller => {
14861 "single_leg_hip_raise_with_foot_on_foam_roller"
14862 }
14863 HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnFoamRoller => {
14864 "weighted_single_leg_hip_raise_with_foot_on_foam_roller"
14865 }
14866 HipRaiseExerciseName::SingleLegHipRaiseWithFootOnMedicineBall => {
14867 "single_leg_hip_raise_with_foot_on_medicine_ball"
14868 }
14869 HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnMedicineBall => {
14870 "weighted_single_leg_hip_raise_with_foot_on_medicine_ball"
14871 }
14872 HipRaiseExerciseName::SingleLegHipRaiseWithHeadOnBosuBall => {
14873 "single_leg_hip_raise_with_head_on_bosu_ball"
14874 }
14875 HipRaiseExerciseName::WeightedSingleLegHipRaiseWithHeadOnBosuBall => {
14876 "weighted_single_leg_hip_raise_with_head_on_bosu_ball"
14877 }
14878 HipRaiseExerciseName::WeightedClamBridge => "weighted_clam_bridge",
14879 HipRaiseExerciseName::SingleLegSwissBallHipRaiseAndLegCurl => {
14880 "single_leg_swiss_ball_hip_raise_and_leg_curl"
14881 }
14882 HipRaiseExerciseName::Clams => "clams",
14883 HipRaiseExerciseName::InnerThighCircles => "inner_thigh_circles",
14884 HipRaiseExerciseName::InnerThighSideLift => "inner_thigh_side_lift",
14885 HipRaiseExerciseName::LegCircles => "leg_circles",
14886 HipRaiseExerciseName::LegLift => "leg_lift",
14887 HipRaiseExerciseName::LegLiftInExternalRotation => "leg_lift_in_external_rotation",
14888 }
14889 }
14890
14891 pub fn from_value(value: u16) -> Option<Self> {
14893 match value {
14894 0 => Some(HipRaiseExerciseName::BarbellHipThrustOnFloor),
14895 1 => Some(HipRaiseExerciseName::BarbellHipThrustWithBench),
14896 2 => Some(HipRaiseExerciseName::BentKneeSwissBallReverseHipRaise),
14897 3 => Some(HipRaiseExerciseName::WeightedBentKneeSwissBallReverseHipRaise),
14898 4 => Some(HipRaiseExerciseName::BridgeWithLegExtension),
14899 5 => Some(HipRaiseExerciseName::WeightedBridgeWithLegExtension),
14900 6 => Some(HipRaiseExerciseName::ClamBridge),
14901 7 => Some(HipRaiseExerciseName::FrontKickTabletop),
14902 8 => Some(HipRaiseExerciseName::WeightedFrontKickTabletop),
14903 9 => Some(HipRaiseExerciseName::HipExtensionAndCross),
14904 10 => Some(HipRaiseExerciseName::WeightedHipExtensionAndCross),
14905 11 => Some(HipRaiseExerciseName::HipRaise),
14906 12 => Some(HipRaiseExerciseName::WeightedHipRaise),
14907 13 => Some(HipRaiseExerciseName::HipRaiseWithFeetOnSwissBall),
14908 14 => Some(HipRaiseExerciseName::WeightedHipRaiseWithFeetOnSwissBall),
14909 15 => Some(HipRaiseExerciseName::HipRaiseWithHeadOnBosuBall),
14910 16 => Some(HipRaiseExerciseName::WeightedHipRaiseWithHeadOnBosuBall),
14911 17 => Some(HipRaiseExerciseName::HipRaiseWithHeadOnSwissBall),
14912 18 => Some(HipRaiseExerciseName::WeightedHipRaiseWithHeadOnSwissBall),
14913 19 => Some(HipRaiseExerciseName::HipRaiseWithKneeSqueeze),
14914 20 => Some(HipRaiseExerciseName::WeightedHipRaiseWithKneeSqueeze),
14915 21 => Some(HipRaiseExerciseName::InclineRearLegExtension),
14916 22 => Some(HipRaiseExerciseName::WeightedInclineRearLegExtension),
14917 23 => Some(HipRaiseExerciseName::KettlebellSwing),
14918 24 => Some(HipRaiseExerciseName::MarchingHipRaise),
14919 25 => Some(HipRaiseExerciseName::WeightedMarchingHipRaise),
14920 26 => Some(HipRaiseExerciseName::MarchingHipRaiseWithFeetOnASwissBall),
14921 27 => Some(HipRaiseExerciseName::WeightedMarchingHipRaiseWithFeetOnASwissBall),
14922 28 => Some(HipRaiseExerciseName::ReverseHipRaise),
14923 29 => Some(HipRaiseExerciseName::WeightedReverseHipRaise),
14924 30 => Some(HipRaiseExerciseName::SingleLegHipRaise),
14925 31 => Some(HipRaiseExerciseName::WeightedSingleLegHipRaise),
14926 32 => Some(HipRaiseExerciseName::SingleLegHipRaiseWithFootOnBench),
14927 33 => Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnBench),
14928 34 => Some(HipRaiseExerciseName::SingleLegHipRaiseWithFootOnBosuBall),
14929 35 => Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnBosuBall),
14930 36 => Some(HipRaiseExerciseName::SingleLegHipRaiseWithFootOnFoamRoller),
14931 37 => Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnFoamRoller),
14932 38 => Some(HipRaiseExerciseName::SingleLegHipRaiseWithFootOnMedicineBall),
14933 39 => Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnMedicineBall),
14934 40 => Some(HipRaiseExerciseName::SingleLegHipRaiseWithHeadOnBosuBall),
14935 41 => Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithHeadOnBosuBall),
14936 42 => Some(HipRaiseExerciseName::WeightedClamBridge),
14937 43 => Some(HipRaiseExerciseName::SingleLegSwissBallHipRaiseAndLegCurl),
14938 44 => Some(HipRaiseExerciseName::Clams),
14939 45 => Some(HipRaiseExerciseName::InnerThighCircles),
14940 46 => Some(HipRaiseExerciseName::InnerThighSideLift),
14941 47 => Some(HipRaiseExerciseName::LegCircles),
14942 48 => Some(HipRaiseExerciseName::LegLift),
14943 49 => Some(HipRaiseExerciseName::LegLiftInExternalRotation),
14944 _ => None,
14945 }
14946 }
14947
14948 pub fn from_str(name: &str) -> Option<Self> {
14950 match name {
14951 "barbell_hip_thrust_on_floor" => Some(HipRaiseExerciseName::BarbellHipThrustOnFloor),
14952 "barbell_hip_thrust_with_bench" => {
14953 Some(HipRaiseExerciseName::BarbellHipThrustWithBench)
14954 }
14955 "bent_knee_swiss_ball_reverse_hip_raise" => {
14956 Some(HipRaiseExerciseName::BentKneeSwissBallReverseHipRaise)
14957 }
14958 "weighted_bent_knee_swiss_ball_reverse_hip_raise" => {
14959 Some(HipRaiseExerciseName::WeightedBentKneeSwissBallReverseHipRaise)
14960 }
14961 "bridge_with_leg_extension" => Some(HipRaiseExerciseName::BridgeWithLegExtension),
14962 "weighted_bridge_with_leg_extension" => {
14963 Some(HipRaiseExerciseName::WeightedBridgeWithLegExtension)
14964 }
14965 "clam_bridge" => Some(HipRaiseExerciseName::ClamBridge),
14966 "front_kick_tabletop" => Some(HipRaiseExerciseName::FrontKickTabletop),
14967 "weighted_front_kick_tabletop" => Some(HipRaiseExerciseName::WeightedFrontKickTabletop),
14968 "hip_extension_and_cross" => Some(HipRaiseExerciseName::HipExtensionAndCross),
14969 "weighted_hip_extension_and_cross" => {
14970 Some(HipRaiseExerciseName::WeightedHipExtensionAndCross)
14971 }
14972 "hip_raise" => Some(HipRaiseExerciseName::HipRaise),
14973 "weighted_hip_raise" => Some(HipRaiseExerciseName::WeightedHipRaise),
14974 "hip_raise_with_feet_on_swiss_ball" => {
14975 Some(HipRaiseExerciseName::HipRaiseWithFeetOnSwissBall)
14976 }
14977 "weighted_hip_raise_with_feet_on_swiss_ball" => {
14978 Some(HipRaiseExerciseName::WeightedHipRaiseWithFeetOnSwissBall)
14979 }
14980 "hip_raise_with_head_on_bosu_ball" => {
14981 Some(HipRaiseExerciseName::HipRaiseWithHeadOnBosuBall)
14982 }
14983 "weighted_hip_raise_with_head_on_bosu_ball" => {
14984 Some(HipRaiseExerciseName::WeightedHipRaiseWithHeadOnBosuBall)
14985 }
14986 "hip_raise_with_head_on_swiss_ball" => {
14987 Some(HipRaiseExerciseName::HipRaiseWithHeadOnSwissBall)
14988 }
14989 "weighted_hip_raise_with_head_on_swiss_ball" => {
14990 Some(HipRaiseExerciseName::WeightedHipRaiseWithHeadOnSwissBall)
14991 }
14992 "hip_raise_with_knee_squeeze" => Some(HipRaiseExerciseName::HipRaiseWithKneeSqueeze),
14993 "weighted_hip_raise_with_knee_squeeze" => {
14994 Some(HipRaiseExerciseName::WeightedHipRaiseWithKneeSqueeze)
14995 }
14996 "incline_rear_leg_extension" => Some(HipRaiseExerciseName::InclineRearLegExtension),
14997 "weighted_incline_rear_leg_extension" => {
14998 Some(HipRaiseExerciseName::WeightedInclineRearLegExtension)
14999 }
15000 "kettlebell_swing" => Some(HipRaiseExerciseName::KettlebellSwing),
15001 "marching_hip_raise" => Some(HipRaiseExerciseName::MarchingHipRaise),
15002 "weighted_marching_hip_raise" => Some(HipRaiseExerciseName::WeightedMarchingHipRaise),
15003 "marching_hip_raise_with_feet_on_a_swiss_ball" => {
15004 Some(HipRaiseExerciseName::MarchingHipRaiseWithFeetOnASwissBall)
15005 }
15006 "weighted_marching_hip_raise_with_feet_on_a_swiss_ball" => {
15007 Some(HipRaiseExerciseName::WeightedMarchingHipRaiseWithFeetOnASwissBall)
15008 }
15009 "reverse_hip_raise" => Some(HipRaiseExerciseName::ReverseHipRaise),
15010 "weighted_reverse_hip_raise" => Some(HipRaiseExerciseName::WeightedReverseHipRaise),
15011 "single_leg_hip_raise" => Some(HipRaiseExerciseName::SingleLegHipRaise),
15012 "weighted_single_leg_hip_raise" => {
15013 Some(HipRaiseExerciseName::WeightedSingleLegHipRaise)
15014 }
15015 "single_leg_hip_raise_with_foot_on_bench" => {
15016 Some(HipRaiseExerciseName::SingleLegHipRaiseWithFootOnBench)
15017 }
15018 "weighted_single_leg_hip_raise_with_foot_on_bench" => {
15019 Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnBench)
15020 }
15021 "single_leg_hip_raise_with_foot_on_bosu_ball" => {
15022 Some(HipRaiseExerciseName::SingleLegHipRaiseWithFootOnBosuBall)
15023 }
15024 "weighted_single_leg_hip_raise_with_foot_on_bosu_ball" => {
15025 Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnBosuBall)
15026 }
15027 "single_leg_hip_raise_with_foot_on_foam_roller" => {
15028 Some(HipRaiseExerciseName::SingleLegHipRaiseWithFootOnFoamRoller)
15029 }
15030 "weighted_single_leg_hip_raise_with_foot_on_foam_roller" => {
15031 Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnFoamRoller)
15032 }
15033 "single_leg_hip_raise_with_foot_on_medicine_ball" => {
15034 Some(HipRaiseExerciseName::SingleLegHipRaiseWithFootOnMedicineBall)
15035 }
15036 "weighted_single_leg_hip_raise_with_foot_on_medicine_ball" => {
15037 Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithFootOnMedicineBall)
15038 }
15039 "single_leg_hip_raise_with_head_on_bosu_ball" => {
15040 Some(HipRaiseExerciseName::SingleLegHipRaiseWithHeadOnBosuBall)
15041 }
15042 "weighted_single_leg_hip_raise_with_head_on_bosu_ball" => {
15043 Some(HipRaiseExerciseName::WeightedSingleLegHipRaiseWithHeadOnBosuBall)
15044 }
15045 "weighted_clam_bridge" => Some(HipRaiseExerciseName::WeightedClamBridge),
15046 "single_leg_swiss_ball_hip_raise_and_leg_curl" => {
15047 Some(HipRaiseExerciseName::SingleLegSwissBallHipRaiseAndLegCurl)
15048 }
15049 "clams" => Some(HipRaiseExerciseName::Clams),
15050 "inner_thigh_circles" => Some(HipRaiseExerciseName::InnerThighCircles),
15051 "inner_thigh_side_lift" => Some(HipRaiseExerciseName::InnerThighSideLift),
15052 "leg_circles" => Some(HipRaiseExerciseName::LegCircles),
15053 "leg_lift" => Some(HipRaiseExerciseName::LegLift),
15054 "leg_lift_in_external_rotation" => {
15055 Some(HipRaiseExerciseName::LegLiftInExternalRotation)
15056 }
15057 _ => None,
15058 }
15059 }
15060}
15061
15062#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
15063#[repr(u16)]
15064#[non_exhaustive]
15065pub enum HipStabilityExerciseName {
15066 BandSideLyingLegRaise = 0,
15067 DeadBug = 1,
15068 WeightedDeadBug = 2,
15069 ExternalHipRaise = 3,
15070 WeightedExternalHipRaise = 4,
15071 FireHydrantKicks = 5,
15072 WeightedFireHydrantKicks = 6,
15073 HipCircles = 7,
15074 WeightedHipCircles = 8,
15075 InnerThighLift = 9,
15076 WeightedInnerThighLift = 10,
15077 LateralWalksWithBandAtAnkles = 11,
15078 PretzelSideKick = 12,
15079 WeightedPretzelSideKick = 13,
15080 ProneHipInternalRotation = 14,
15081 WeightedProneHipInternalRotation = 15,
15082 Quadruped = 16,
15083 QuadrupedHipExtension = 17,
15084 WeightedQuadrupedHipExtension = 18,
15085 QuadrupedWithLegLift = 19,
15086 WeightedQuadrupedWithLegLift = 20,
15087 SideLyingLegRaise = 21,
15088 WeightedSideLyingLegRaise = 22,
15089 SlidingHipAdduction = 23,
15090 WeightedSlidingHipAdduction = 24,
15091 StandingAdduction = 25,
15092 WeightedStandingAdduction = 26,
15093 StandingCableHipAbduction = 27,
15094 StandingHipAbduction = 28,
15095 WeightedStandingHipAbduction = 29,
15096 StandingRearLegRaise = 30,
15097 WeightedStandingRearLegRaise = 31,
15098 SupineHipInternalRotation = 32,
15099 WeightedSupineHipInternalRotation = 33,
15100 LyingAbductionStretch = 34,
15101}
15102
15103impl HipStabilityExerciseName {
15104 pub fn as_str(&self) -> &'static str {
15106 match self {
15107 HipStabilityExerciseName::BandSideLyingLegRaise => "band_side_lying_leg_raise",
15108 HipStabilityExerciseName::DeadBug => "dead_bug",
15109 HipStabilityExerciseName::WeightedDeadBug => "weighted_dead_bug",
15110 HipStabilityExerciseName::ExternalHipRaise => "external_hip_raise",
15111 HipStabilityExerciseName::WeightedExternalHipRaise => "weighted_external_hip_raise",
15112 HipStabilityExerciseName::FireHydrantKicks => "fire_hydrant_kicks",
15113 HipStabilityExerciseName::WeightedFireHydrantKicks => "weighted_fire_hydrant_kicks",
15114 HipStabilityExerciseName::HipCircles => "hip_circles",
15115 HipStabilityExerciseName::WeightedHipCircles => "weighted_hip_circles",
15116 HipStabilityExerciseName::InnerThighLift => "inner_thigh_lift",
15117 HipStabilityExerciseName::WeightedInnerThighLift => "weighted_inner_thigh_lift",
15118 HipStabilityExerciseName::LateralWalksWithBandAtAnkles => {
15119 "lateral_walks_with_band_at_ankles"
15120 }
15121 HipStabilityExerciseName::PretzelSideKick => "pretzel_side_kick",
15122 HipStabilityExerciseName::WeightedPretzelSideKick => "weighted_pretzel_side_kick",
15123 HipStabilityExerciseName::ProneHipInternalRotation => "prone_hip_internal_rotation",
15124 HipStabilityExerciseName::WeightedProneHipInternalRotation => {
15125 "weighted_prone_hip_internal_rotation"
15126 }
15127 HipStabilityExerciseName::Quadruped => "quadruped",
15128 HipStabilityExerciseName::QuadrupedHipExtension => "quadruped_hip_extension",
15129 HipStabilityExerciseName::WeightedQuadrupedHipExtension => {
15130 "weighted_quadruped_hip_extension"
15131 }
15132 HipStabilityExerciseName::QuadrupedWithLegLift => "quadruped_with_leg_lift",
15133 HipStabilityExerciseName::WeightedQuadrupedWithLegLift => {
15134 "weighted_quadruped_with_leg_lift"
15135 }
15136 HipStabilityExerciseName::SideLyingLegRaise => "side_lying_leg_raise",
15137 HipStabilityExerciseName::WeightedSideLyingLegRaise => "weighted_side_lying_leg_raise",
15138 HipStabilityExerciseName::SlidingHipAdduction => "sliding_hip_adduction",
15139 HipStabilityExerciseName::WeightedSlidingHipAdduction => {
15140 "weighted_sliding_hip_adduction"
15141 }
15142 HipStabilityExerciseName::StandingAdduction => "standing_adduction",
15143 HipStabilityExerciseName::WeightedStandingAdduction => "weighted_standing_adduction",
15144 HipStabilityExerciseName::StandingCableHipAbduction => "standing_cable_hip_abduction",
15145 HipStabilityExerciseName::StandingHipAbduction => "standing_hip_abduction",
15146 HipStabilityExerciseName::WeightedStandingHipAbduction => {
15147 "weighted_standing_hip_abduction"
15148 }
15149 HipStabilityExerciseName::StandingRearLegRaise => "standing_rear_leg_raise",
15150 HipStabilityExerciseName::WeightedStandingRearLegRaise => {
15151 "weighted_standing_rear_leg_raise"
15152 }
15153 HipStabilityExerciseName::SupineHipInternalRotation => "supine_hip_internal_rotation",
15154 HipStabilityExerciseName::WeightedSupineHipInternalRotation => {
15155 "weighted_supine_hip_internal_rotation"
15156 }
15157 HipStabilityExerciseName::LyingAbductionStretch => "lying_abduction_stretch",
15158 }
15159 }
15160
15161 pub fn from_value(value: u16) -> Option<Self> {
15163 match value {
15164 0 => Some(HipStabilityExerciseName::BandSideLyingLegRaise),
15165 1 => Some(HipStabilityExerciseName::DeadBug),
15166 2 => Some(HipStabilityExerciseName::WeightedDeadBug),
15167 3 => Some(HipStabilityExerciseName::ExternalHipRaise),
15168 4 => Some(HipStabilityExerciseName::WeightedExternalHipRaise),
15169 5 => Some(HipStabilityExerciseName::FireHydrantKicks),
15170 6 => Some(HipStabilityExerciseName::WeightedFireHydrantKicks),
15171 7 => Some(HipStabilityExerciseName::HipCircles),
15172 8 => Some(HipStabilityExerciseName::WeightedHipCircles),
15173 9 => Some(HipStabilityExerciseName::InnerThighLift),
15174 10 => Some(HipStabilityExerciseName::WeightedInnerThighLift),
15175 11 => Some(HipStabilityExerciseName::LateralWalksWithBandAtAnkles),
15176 12 => Some(HipStabilityExerciseName::PretzelSideKick),
15177 13 => Some(HipStabilityExerciseName::WeightedPretzelSideKick),
15178 14 => Some(HipStabilityExerciseName::ProneHipInternalRotation),
15179 15 => Some(HipStabilityExerciseName::WeightedProneHipInternalRotation),
15180 16 => Some(HipStabilityExerciseName::Quadruped),
15181 17 => Some(HipStabilityExerciseName::QuadrupedHipExtension),
15182 18 => Some(HipStabilityExerciseName::WeightedQuadrupedHipExtension),
15183 19 => Some(HipStabilityExerciseName::QuadrupedWithLegLift),
15184 20 => Some(HipStabilityExerciseName::WeightedQuadrupedWithLegLift),
15185 21 => Some(HipStabilityExerciseName::SideLyingLegRaise),
15186 22 => Some(HipStabilityExerciseName::WeightedSideLyingLegRaise),
15187 23 => Some(HipStabilityExerciseName::SlidingHipAdduction),
15188 24 => Some(HipStabilityExerciseName::WeightedSlidingHipAdduction),
15189 25 => Some(HipStabilityExerciseName::StandingAdduction),
15190 26 => Some(HipStabilityExerciseName::WeightedStandingAdduction),
15191 27 => Some(HipStabilityExerciseName::StandingCableHipAbduction),
15192 28 => Some(HipStabilityExerciseName::StandingHipAbduction),
15193 29 => Some(HipStabilityExerciseName::WeightedStandingHipAbduction),
15194 30 => Some(HipStabilityExerciseName::StandingRearLegRaise),
15195 31 => Some(HipStabilityExerciseName::WeightedStandingRearLegRaise),
15196 32 => Some(HipStabilityExerciseName::SupineHipInternalRotation),
15197 33 => Some(HipStabilityExerciseName::WeightedSupineHipInternalRotation),
15198 34 => Some(HipStabilityExerciseName::LyingAbductionStretch),
15199 _ => None,
15200 }
15201 }
15202
15203 pub fn from_str(name: &str) -> Option<Self> {
15205 match name {
15206 "band_side_lying_leg_raise" => Some(HipStabilityExerciseName::BandSideLyingLegRaise),
15207 "dead_bug" => Some(HipStabilityExerciseName::DeadBug),
15208 "weighted_dead_bug" => Some(HipStabilityExerciseName::WeightedDeadBug),
15209 "external_hip_raise" => Some(HipStabilityExerciseName::ExternalHipRaise),
15210 "weighted_external_hip_raise" => {
15211 Some(HipStabilityExerciseName::WeightedExternalHipRaise)
15212 }
15213 "fire_hydrant_kicks" => Some(HipStabilityExerciseName::FireHydrantKicks),
15214 "weighted_fire_hydrant_kicks" => {
15215 Some(HipStabilityExerciseName::WeightedFireHydrantKicks)
15216 }
15217 "hip_circles" => Some(HipStabilityExerciseName::HipCircles),
15218 "weighted_hip_circles" => Some(HipStabilityExerciseName::WeightedHipCircles),
15219 "inner_thigh_lift" => Some(HipStabilityExerciseName::InnerThighLift),
15220 "weighted_inner_thigh_lift" => Some(HipStabilityExerciseName::WeightedInnerThighLift),
15221 "lateral_walks_with_band_at_ankles" => {
15222 Some(HipStabilityExerciseName::LateralWalksWithBandAtAnkles)
15223 }
15224 "pretzel_side_kick" => Some(HipStabilityExerciseName::PretzelSideKick),
15225 "weighted_pretzel_side_kick" => Some(HipStabilityExerciseName::WeightedPretzelSideKick),
15226 "prone_hip_internal_rotation" => {
15227 Some(HipStabilityExerciseName::ProneHipInternalRotation)
15228 }
15229 "weighted_prone_hip_internal_rotation" => {
15230 Some(HipStabilityExerciseName::WeightedProneHipInternalRotation)
15231 }
15232 "quadruped" => Some(HipStabilityExerciseName::Quadruped),
15233 "quadruped_hip_extension" => Some(HipStabilityExerciseName::QuadrupedHipExtension),
15234 "weighted_quadruped_hip_extension" => {
15235 Some(HipStabilityExerciseName::WeightedQuadrupedHipExtension)
15236 }
15237 "quadruped_with_leg_lift" => Some(HipStabilityExerciseName::QuadrupedWithLegLift),
15238 "weighted_quadruped_with_leg_lift" => {
15239 Some(HipStabilityExerciseName::WeightedQuadrupedWithLegLift)
15240 }
15241 "side_lying_leg_raise" => Some(HipStabilityExerciseName::SideLyingLegRaise),
15242 "weighted_side_lying_leg_raise" => {
15243 Some(HipStabilityExerciseName::WeightedSideLyingLegRaise)
15244 }
15245 "sliding_hip_adduction" => Some(HipStabilityExerciseName::SlidingHipAdduction),
15246 "weighted_sliding_hip_adduction" => {
15247 Some(HipStabilityExerciseName::WeightedSlidingHipAdduction)
15248 }
15249 "standing_adduction" => Some(HipStabilityExerciseName::StandingAdduction),
15250 "weighted_standing_adduction" => {
15251 Some(HipStabilityExerciseName::WeightedStandingAdduction)
15252 }
15253 "standing_cable_hip_abduction" => {
15254 Some(HipStabilityExerciseName::StandingCableHipAbduction)
15255 }
15256 "standing_hip_abduction" => Some(HipStabilityExerciseName::StandingHipAbduction),
15257 "weighted_standing_hip_abduction" => {
15258 Some(HipStabilityExerciseName::WeightedStandingHipAbduction)
15259 }
15260 "standing_rear_leg_raise" => Some(HipStabilityExerciseName::StandingRearLegRaise),
15261 "weighted_standing_rear_leg_raise" => {
15262 Some(HipStabilityExerciseName::WeightedStandingRearLegRaise)
15263 }
15264 "supine_hip_internal_rotation" => {
15265 Some(HipStabilityExerciseName::SupineHipInternalRotation)
15266 }
15267 "weighted_supine_hip_internal_rotation" => {
15268 Some(HipStabilityExerciseName::WeightedSupineHipInternalRotation)
15269 }
15270 "lying_abduction_stretch" => Some(HipStabilityExerciseName::LyingAbductionStretch),
15271 _ => None,
15272 }
15273 }
15274}
15275
15276#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
15277#[repr(u16)]
15278#[non_exhaustive]
15279pub enum HipSwingExerciseName {
15280 SingleArmKettlebellSwing = 0,
15281 SingleArmDumbbellSwing = 1,
15282 StepOutSwing = 2,
15283 OneArmSwing = 3,
15284}
15285
15286impl HipSwingExerciseName {
15287 pub fn as_str(&self) -> &'static str {
15289 match self {
15290 HipSwingExerciseName::SingleArmKettlebellSwing => "single_arm_kettlebell_swing",
15291 HipSwingExerciseName::SingleArmDumbbellSwing => "single_arm_dumbbell_swing",
15292 HipSwingExerciseName::StepOutSwing => "step_out_swing",
15293 HipSwingExerciseName::OneArmSwing => "one_arm_swing",
15294 }
15295 }
15296
15297 pub fn from_value(value: u16) -> Option<Self> {
15299 match value {
15300 0 => Some(HipSwingExerciseName::SingleArmKettlebellSwing),
15301 1 => Some(HipSwingExerciseName::SingleArmDumbbellSwing),
15302 2 => Some(HipSwingExerciseName::StepOutSwing),
15303 3 => Some(HipSwingExerciseName::OneArmSwing),
15304 _ => None,
15305 }
15306 }
15307
15308 pub fn from_str(name: &str) -> Option<Self> {
15310 match name {
15311 "single_arm_kettlebell_swing" => Some(HipSwingExerciseName::SingleArmKettlebellSwing),
15312 "single_arm_dumbbell_swing" => Some(HipSwingExerciseName::SingleArmDumbbellSwing),
15313 "step_out_swing" => Some(HipSwingExerciseName::StepOutSwing),
15314 "one_arm_swing" => Some(HipSwingExerciseName::OneArmSwing),
15315 _ => None,
15316 }
15317 }
15318}
15319
15320#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
15321#[repr(u16)]
15322#[non_exhaustive]
15323pub enum HyperextensionExerciseName {
15324 BackExtensionWithOppositeArmAndLegReach = 0,
15325 WeightedBackExtensionWithOppositeArmAndLegReach = 1,
15326 BaseRotations = 2,
15327 WeightedBaseRotations = 3,
15328 BentKneeReverseHyperextension = 4,
15329 WeightedBentKneeReverseHyperextension = 5,
15330 HollowHoldAndRoll = 6,
15331 WeightedHollowHoldAndRoll = 7,
15332 Kicks = 8,
15333 WeightedKicks = 9,
15334 KneeRaises = 10,
15335 WeightedKneeRaises = 11,
15336 KneelingSuperman = 12,
15337 WeightedKneelingSuperman = 13,
15338 LatPullDownWithRow = 14,
15339 MedicineBallDeadliftToReach = 15,
15340 OneArmOneLegRow = 16,
15341 OneArmRowWithBand = 17,
15342 OverheadLungeWithMedicineBall = 18,
15343 PlankKneeTucks = 19,
15344 WeightedPlankKneeTucks = 20,
15345 SideStep = 21,
15346 WeightedSideStep = 22,
15347 SingleLegBackExtension = 23,
15348 WeightedSingleLegBackExtension = 24,
15349 SpineExtension = 25,
15350 WeightedSpineExtension = 26,
15351 StaticBackExtension = 27,
15352 WeightedStaticBackExtension = 28,
15353 SupermanFromFloor = 29,
15354 WeightedSupermanFromFloor = 30,
15355 SwissBallBackExtension = 31,
15356 WeightedSwissBallBackExtension = 32,
15357 SwissBallHyperextension = 33,
15358 WeightedSwissBallHyperextension = 34,
15359 SwissBallOppositeArmAndLegLift = 35,
15360 WeightedSwissBallOppositeArmAndLegLift = 36,
15361 SupermanOnSwissBall = 37,
15362 Cobra = 38,
15363 SupineFloorBarre = 39,
15364}
15365
15366impl HyperextensionExerciseName {
15367 pub fn as_str(&self) -> &'static str {
15369 match self {
15370 HyperextensionExerciseName::BackExtensionWithOppositeArmAndLegReach => {
15371 "back_extension_with_opposite_arm_and_leg_reach"
15372 }
15373 HyperextensionExerciseName::WeightedBackExtensionWithOppositeArmAndLegReach => {
15374 "weighted_back_extension_with_opposite_arm_and_leg_reach"
15375 }
15376 HyperextensionExerciseName::BaseRotations => "base_rotations",
15377 HyperextensionExerciseName::WeightedBaseRotations => "weighted_base_rotations",
15378 HyperextensionExerciseName::BentKneeReverseHyperextension => {
15379 "bent_knee_reverse_hyperextension"
15380 }
15381 HyperextensionExerciseName::WeightedBentKneeReverseHyperextension => {
15382 "weighted_bent_knee_reverse_hyperextension"
15383 }
15384 HyperextensionExerciseName::HollowHoldAndRoll => "hollow_hold_and_roll",
15385 HyperextensionExerciseName::WeightedHollowHoldAndRoll => {
15386 "weighted_hollow_hold_and_roll"
15387 }
15388 HyperextensionExerciseName::Kicks => "kicks",
15389 HyperextensionExerciseName::WeightedKicks => "weighted_kicks",
15390 HyperextensionExerciseName::KneeRaises => "knee_raises",
15391 HyperextensionExerciseName::WeightedKneeRaises => "weighted_knee_raises",
15392 HyperextensionExerciseName::KneelingSuperman => "kneeling_superman",
15393 HyperextensionExerciseName::WeightedKneelingSuperman => "weighted_kneeling_superman",
15394 HyperextensionExerciseName::LatPullDownWithRow => "lat_pull_down_with_row",
15395 HyperextensionExerciseName::MedicineBallDeadliftToReach => {
15396 "medicine_ball_deadlift_to_reach"
15397 }
15398 HyperextensionExerciseName::OneArmOneLegRow => "one_arm_one_leg_row",
15399 HyperextensionExerciseName::OneArmRowWithBand => "one_arm_row_with_band",
15400 HyperextensionExerciseName::OverheadLungeWithMedicineBall => {
15401 "overhead_lunge_with_medicine_ball"
15402 }
15403 HyperextensionExerciseName::PlankKneeTucks => "plank_knee_tucks",
15404 HyperextensionExerciseName::WeightedPlankKneeTucks => "weighted_plank_knee_tucks",
15405 HyperextensionExerciseName::SideStep => "side_step",
15406 HyperextensionExerciseName::WeightedSideStep => "weighted_side_step",
15407 HyperextensionExerciseName::SingleLegBackExtension => "single_leg_back_extension",
15408 HyperextensionExerciseName::WeightedSingleLegBackExtension => {
15409 "weighted_single_leg_back_extension"
15410 }
15411 HyperextensionExerciseName::SpineExtension => "spine_extension",
15412 HyperextensionExerciseName::WeightedSpineExtension => "weighted_spine_extension",
15413 HyperextensionExerciseName::StaticBackExtension => "static_back_extension",
15414 HyperextensionExerciseName::WeightedStaticBackExtension => {
15415 "weighted_static_back_extension"
15416 }
15417 HyperextensionExerciseName::SupermanFromFloor => "superman_from_floor",
15418 HyperextensionExerciseName::WeightedSupermanFromFloor => "weighted_superman_from_floor",
15419 HyperextensionExerciseName::SwissBallBackExtension => "swiss_ball_back_extension",
15420 HyperextensionExerciseName::WeightedSwissBallBackExtension => {
15421 "weighted_swiss_ball_back_extension"
15422 }
15423 HyperextensionExerciseName::SwissBallHyperextension => "swiss_ball_hyperextension",
15424 HyperextensionExerciseName::WeightedSwissBallHyperextension => {
15425 "weighted_swiss_ball_hyperextension"
15426 }
15427 HyperextensionExerciseName::SwissBallOppositeArmAndLegLift => {
15428 "swiss_ball_opposite_arm_and_leg_lift"
15429 }
15430 HyperextensionExerciseName::WeightedSwissBallOppositeArmAndLegLift => {
15431 "weighted_swiss_ball_opposite_arm_and_leg_lift"
15432 }
15433 HyperextensionExerciseName::SupermanOnSwissBall => "superman_on_swiss_ball",
15434 HyperextensionExerciseName::Cobra => "cobra",
15435 HyperextensionExerciseName::SupineFloorBarre => "supine_floor_barre",
15436 }
15437 }
15438
15439 pub fn from_value(value: u16) -> Option<Self> {
15441 match value {
15442 0 => Some(HyperextensionExerciseName::BackExtensionWithOppositeArmAndLegReach),
15443 1 => Some(HyperextensionExerciseName::WeightedBackExtensionWithOppositeArmAndLegReach),
15444 2 => Some(HyperextensionExerciseName::BaseRotations),
15445 3 => Some(HyperextensionExerciseName::WeightedBaseRotations),
15446 4 => Some(HyperextensionExerciseName::BentKneeReverseHyperextension),
15447 5 => Some(HyperextensionExerciseName::WeightedBentKneeReverseHyperextension),
15448 6 => Some(HyperextensionExerciseName::HollowHoldAndRoll),
15449 7 => Some(HyperextensionExerciseName::WeightedHollowHoldAndRoll),
15450 8 => Some(HyperextensionExerciseName::Kicks),
15451 9 => Some(HyperextensionExerciseName::WeightedKicks),
15452 10 => Some(HyperextensionExerciseName::KneeRaises),
15453 11 => Some(HyperextensionExerciseName::WeightedKneeRaises),
15454 12 => Some(HyperextensionExerciseName::KneelingSuperman),
15455 13 => Some(HyperextensionExerciseName::WeightedKneelingSuperman),
15456 14 => Some(HyperextensionExerciseName::LatPullDownWithRow),
15457 15 => Some(HyperextensionExerciseName::MedicineBallDeadliftToReach),
15458 16 => Some(HyperextensionExerciseName::OneArmOneLegRow),
15459 17 => Some(HyperextensionExerciseName::OneArmRowWithBand),
15460 18 => Some(HyperextensionExerciseName::OverheadLungeWithMedicineBall),
15461 19 => Some(HyperextensionExerciseName::PlankKneeTucks),
15462 20 => Some(HyperextensionExerciseName::WeightedPlankKneeTucks),
15463 21 => Some(HyperextensionExerciseName::SideStep),
15464 22 => Some(HyperextensionExerciseName::WeightedSideStep),
15465 23 => Some(HyperextensionExerciseName::SingleLegBackExtension),
15466 24 => Some(HyperextensionExerciseName::WeightedSingleLegBackExtension),
15467 25 => Some(HyperextensionExerciseName::SpineExtension),
15468 26 => Some(HyperextensionExerciseName::WeightedSpineExtension),
15469 27 => Some(HyperextensionExerciseName::StaticBackExtension),
15470 28 => Some(HyperextensionExerciseName::WeightedStaticBackExtension),
15471 29 => Some(HyperextensionExerciseName::SupermanFromFloor),
15472 30 => Some(HyperextensionExerciseName::WeightedSupermanFromFloor),
15473 31 => Some(HyperextensionExerciseName::SwissBallBackExtension),
15474 32 => Some(HyperextensionExerciseName::WeightedSwissBallBackExtension),
15475 33 => Some(HyperextensionExerciseName::SwissBallHyperextension),
15476 34 => Some(HyperextensionExerciseName::WeightedSwissBallHyperextension),
15477 35 => Some(HyperextensionExerciseName::SwissBallOppositeArmAndLegLift),
15478 36 => Some(HyperextensionExerciseName::WeightedSwissBallOppositeArmAndLegLift),
15479 37 => Some(HyperextensionExerciseName::SupermanOnSwissBall),
15480 38 => Some(HyperextensionExerciseName::Cobra),
15481 39 => Some(HyperextensionExerciseName::SupineFloorBarre),
15482 _ => None,
15483 }
15484 }
15485
15486 pub fn from_str(name: &str) -> Option<Self> {
15488 match name {
15489 "back_extension_with_opposite_arm_and_leg_reach" => {
15490 Some(HyperextensionExerciseName::BackExtensionWithOppositeArmAndLegReach)
15491 }
15492 "weighted_back_extension_with_opposite_arm_and_leg_reach" => {
15493 Some(HyperextensionExerciseName::WeightedBackExtensionWithOppositeArmAndLegReach)
15494 }
15495 "base_rotations" => Some(HyperextensionExerciseName::BaseRotations),
15496 "weighted_base_rotations" => Some(HyperextensionExerciseName::WeightedBaseRotations),
15497 "bent_knee_reverse_hyperextension" => {
15498 Some(HyperextensionExerciseName::BentKneeReverseHyperextension)
15499 }
15500 "weighted_bent_knee_reverse_hyperextension" => {
15501 Some(HyperextensionExerciseName::WeightedBentKneeReverseHyperextension)
15502 }
15503 "hollow_hold_and_roll" => Some(HyperextensionExerciseName::HollowHoldAndRoll),
15504 "weighted_hollow_hold_and_roll" => {
15505 Some(HyperextensionExerciseName::WeightedHollowHoldAndRoll)
15506 }
15507 "kicks" => Some(HyperextensionExerciseName::Kicks),
15508 "weighted_kicks" => Some(HyperextensionExerciseName::WeightedKicks),
15509 "knee_raises" => Some(HyperextensionExerciseName::KneeRaises),
15510 "weighted_knee_raises" => Some(HyperextensionExerciseName::WeightedKneeRaises),
15511 "kneeling_superman" => Some(HyperextensionExerciseName::KneelingSuperman),
15512 "weighted_kneeling_superman" => {
15513 Some(HyperextensionExerciseName::WeightedKneelingSuperman)
15514 }
15515 "lat_pull_down_with_row" => Some(HyperextensionExerciseName::LatPullDownWithRow),
15516 "medicine_ball_deadlift_to_reach" => {
15517 Some(HyperextensionExerciseName::MedicineBallDeadliftToReach)
15518 }
15519 "one_arm_one_leg_row" => Some(HyperextensionExerciseName::OneArmOneLegRow),
15520 "one_arm_row_with_band" => Some(HyperextensionExerciseName::OneArmRowWithBand),
15521 "overhead_lunge_with_medicine_ball" => {
15522 Some(HyperextensionExerciseName::OverheadLungeWithMedicineBall)
15523 }
15524 "plank_knee_tucks" => Some(HyperextensionExerciseName::PlankKneeTucks),
15525 "weighted_plank_knee_tucks" => Some(HyperextensionExerciseName::WeightedPlankKneeTucks),
15526 "side_step" => Some(HyperextensionExerciseName::SideStep),
15527 "weighted_side_step" => Some(HyperextensionExerciseName::WeightedSideStep),
15528 "single_leg_back_extension" => Some(HyperextensionExerciseName::SingleLegBackExtension),
15529 "weighted_single_leg_back_extension" => {
15530 Some(HyperextensionExerciseName::WeightedSingleLegBackExtension)
15531 }
15532 "spine_extension" => Some(HyperextensionExerciseName::SpineExtension),
15533 "weighted_spine_extension" => Some(HyperextensionExerciseName::WeightedSpineExtension),
15534 "static_back_extension" => Some(HyperextensionExerciseName::StaticBackExtension),
15535 "weighted_static_back_extension" => {
15536 Some(HyperextensionExerciseName::WeightedStaticBackExtension)
15537 }
15538 "superman_from_floor" => Some(HyperextensionExerciseName::SupermanFromFloor),
15539 "weighted_superman_from_floor" => {
15540 Some(HyperextensionExerciseName::WeightedSupermanFromFloor)
15541 }
15542 "swiss_ball_back_extension" => Some(HyperextensionExerciseName::SwissBallBackExtension),
15543 "weighted_swiss_ball_back_extension" => {
15544 Some(HyperextensionExerciseName::WeightedSwissBallBackExtension)
15545 }
15546 "swiss_ball_hyperextension" => {
15547 Some(HyperextensionExerciseName::SwissBallHyperextension)
15548 }
15549 "weighted_swiss_ball_hyperextension" => {
15550 Some(HyperextensionExerciseName::WeightedSwissBallHyperextension)
15551 }
15552 "swiss_ball_opposite_arm_and_leg_lift" => {
15553 Some(HyperextensionExerciseName::SwissBallOppositeArmAndLegLift)
15554 }
15555 "weighted_swiss_ball_opposite_arm_and_leg_lift" => {
15556 Some(HyperextensionExerciseName::WeightedSwissBallOppositeArmAndLegLift)
15557 }
15558 "superman_on_swiss_ball" => Some(HyperextensionExerciseName::SupermanOnSwissBall),
15559 "cobra" => Some(HyperextensionExerciseName::Cobra),
15560 "supine_floor_barre" => Some(HyperextensionExerciseName::SupineFloorBarre),
15561 _ => None,
15562 }
15563 }
15564}
15565
15566#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
15567#[repr(u16)]
15568#[non_exhaustive]
15569pub enum LateralRaiseExerciseName {
15570 _45DegreeCableExternalRotation = 0,
15571 AlternatingLateralRaiseWithStaticHold = 1,
15572 BarMuscleUp = 2,
15573 BentOverLateralRaise = 3,
15574 CableDiagonalRaise = 4,
15575 CableFrontRaise = 5,
15576 CalorieRow = 6,
15577 ComboShoulderRaise = 7,
15578 DumbbellDiagonalRaise = 8,
15579 DumbbellVRaise = 9,
15580 FrontRaise = 10,
15581 LeaningDumbbellLateralRaise = 11,
15582 LyingDumbbellRaise = 12,
15583 MuscleUp = 13,
15584 OneArmCableLateralRaise = 14,
15585 OverhandGripRearLateralRaise = 15,
15586 PlateRaises = 16,
15587 RingDip = 17,
15588 WeightedRingDip = 18,
15589 RingMuscleUp = 19,
15590 WeightedRingMuscleUp = 20,
15591 RopeClimb = 21,
15592 WeightedRopeClimb = 22,
15593 Scaption = 23,
15594 SeatedLateralRaise = 24,
15595 SeatedRearLateralRaise = 25,
15596 SideLyingLateralRaise = 26,
15597 StandingLift = 27,
15598 SuspendedRow = 28,
15599 UnderhandGripRearLateralRaise = 29,
15600 WallSlide = 30,
15601 WeightedWallSlide = 31,
15602 ArmCircles = 32,
15603 ShavingTheHead = 33,
15604 DumbbellLateralRaise = 34,
15605 RingDipKipping = 36,
15606 WallWalk = 37,
15607 DumbbellFrontRaiseWheelchair = 38,
15608 DumbbellLateralRaiseWheelchair = 39,
15609 PoleDoubleArmOverheadAndForwardWheelchair = 40,
15610 PoleStraightArmOverheadWheelchair = 41,
15611}
15612
15613impl LateralRaiseExerciseName {
15614 pub fn as_str(&self) -> &'static str {
15616 match self {
15617 LateralRaiseExerciseName::_45DegreeCableExternalRotation => {
15618 "45_degree_cable_external_rotation"
15619 }
15620 LateralRaiseExerciseName::AlternatingLateralRaiseWithStaticHold => {
15621 "alternating_lateral_raise_with_static_hold"
15622 }
15623 LateralRaiseExerciseName::BarMuscleUp => "bar_muscle_up",
15624 LateralRaiseExerciseName::BentOverLateralRaise => "bent_over_lateral_raise",
15625 LateralRaiseExerciseName::CableDiagonalRaise => "cable_diagonal_raise",
15626 LateralRaiseExerciseName::CableFrontRaise => "cable_front_raise",
15627 LateralRaiseExerciseName::CalorieRow => "calorie_row",
15628 LateralRaiseExerciseName::ComboShoulderRaise => "combo_shoulder_raise",
15629 LateralRaiseExerciseName::DumbbellDiagonalRaise => "dumbbell_diagonal_raise",
15630 LateralRaiseExerciseName::DumbbellVRaise => "dumbbell_v_raise",
15631 LateralRaiseExerciseName::FrontRaise => "front_raise",
15632 LateralRaiseExerciseName::LeaningDumbbellLateralRaise => {
15633 "leaning_dumbbell_lateral_raise"
15634 }
15635 LateralRaiseExerciseName::LyingDumbbellRaise => "lying_dumbbell_raise",
15636 LateralRaiseExerciseName::MuscleUp => "muscle_up",
15637 LateralRaiseExerciseName::OneArmCableLateralRaise => "one_arm_cable_lateral_raise",
15638 LateralRaiseExerciseName::OverhandGripRearLateralRaise => {
15639 "overhand_grip_rear_lateral_raise"
15640 }
15641 LateralRaiseExerciseName::PlateRaises => "plate_raises",
15642 LateralRaiseExerciseName::RingDip => "ring_dip",
15643 LateralRaiseExerciseName::WeightedRingDip => "weighted_ring_dip",
15644 LateralRaiseExerciseName::RingMuscleUp => "ring_muscle_up",
15645 LateralRaiseExerciseName::WeightedRingMuscleUp => "weighted_ring_muscle_up",
15646 LateralRaiseExerciseName::RopeClimb => "rope_climb",
15647 LateralRaiseExerciseName::WeightedRopeClimb => "weighted_rope_climb",
15648 LateralRaiseExerciseName::Scaption => "scaption",
15649 LateralRaiseExerciseName::SeatedLateralRaise => "seated_lateral_raise",
15650 LateralRaiseExerciseName::SeatedRearLateralRaise => "seated_rear_lateral_raise",
15651 LateralRaiseExerciseName::SideLyingLateralRaise => "side_lying_lateral_raise",
15652 LateralRaiseExerciseName::StandingLift => "standing_lift",
15653 LateralRaiseExerciseName::SuspendedRow => "suspended_row",
15654 LateralRaiseExerciseName::UnderhandGripRearLateralRaise => {
15655 "underhand_grip_rear_lateral_raise"
15656 }
15657 LateralRaiseExerciseName::WallSlide => "wall_slide",
15658 LateralRaiseExerciseName::WeightedWallSlide => "weighted_wall_slide",
15659 LateralRaiseExerciseName::ArmCircles => "arm_circles",
15660 LateralRaiseExerciseName::ShavingTheHead => "shaving_the_head",
15661 LateralRaiseExerciseName::DumbbellLateralRaise => "dumbbell_lateral_raise",
15662 LateralRaiseExerciseName::RingDipKipping => "ring_dip_kipping",
15663 LateralRaiseExerciseName::WallWalk => "wall_walk",
15664 LateralRaiseExerciseName::DumbbellFrontRaiseWheelchair => {
15665 "dumbbell_front_raise_wheelchair"
15666 }
15667 LateralRaiseExerciseName::DumbbellLateralRaiseWheelchair => {
15668 "dumbbell_lateral_raise_wheelchair"
15669 }
15670 LateralRaiseExerciseName::PoleDoubleArmOverheadAndForwardWheelchair => {
15671 "pole_double_arm_overhead_and_forward_wheelchair"
15672 }
15673 LateralRaiseExerciseName::PoleStraightArmOverheadWheelchair => {
15674 "pole_straight_arm_overhead_wheelchair"
15675 }
15676 }
15677 }
15678
15679 pub fn from_value(value: u16) -> Option<Self> {
15681 match value {
15682 0 => Some(LateralRaiseExerciseName::_45DegreeCableExternalRotation),
15683 1 => Some(LateralRaiseExerciseName::AlternatingLateralRaiseWithStaticHold),
15684 2 => Some(LateralRaiseExerciseName::BarMuscleUp),
15685 3 => Some(LateralRaiseExerciseName::BentOverLateralRaise),
15686 4 => Some(LateralRaiseExerciseName::CableDiagonalRaise),
15687 5 => Some(LateralRaiseExerciseName::CableFrontRaise),
15688 6 => Some(LateralRaiseExerciseName::CalorieRow),
15689 7 => Some(LateralRaiseExerciseName::ComboShoulderRaise),
15690 8 => Some(LateralRaiseExerciseName::DumbbellDiagonalRaise),
15691 9 => Some(LateralRaiseExerciseName::DumbbellVRaise),
15692 10 => Some(LateralRaiseExerciseName::FrontRaise),
15693 11 => Some(LateralRaiseExerciseName::LeaningDumbbellLateralRaise),
15694 12 => Some(LateralRaiseExerciseName::LyingDumbbellRaise),
15695 13 => Some(LateralRaiseExerciseName::MuscleUp),
15696 14 => Some(LateralRaiseExerciseName::OneArmCableLateralRaise),
15697 15 => Some(LateralRaiseExerciseName::OverhandGripRearLateralRaise),
15698 16 => Some(LateralRaiseExerciseName::PlateRaises),
15699 17 => Some(LateralRaiseExerciseName::RingDip),
15700 18 => Some(LateralRaiseExerciseName::WeightedRingDip),
15701 19 => Some(LateralRaiseExerciseName::RingMuscleUp),
15702 20 => Some(LateralRaiseExerciseName::WeightedRingMuscleUp),
15703 21 => Some(LateralRaiseExerciseName::RopeClimb),
15704 22 => Some(LateralRaiseExerciseName::WeightedRopeClimb),
15705 23 => Some(LateralRaiseExerciseName::Scaption),
15706 24 => Some(LateralRaiseExerciseName::SeatedLateralRaise),
15707 25 => Some(LateralRaiseExerciseName::SeatedRearLateralRaise),
15708 26 => Some(LateralRaiseExerciseName::SideLyingLateralRaise),
15709 27 => Some(LateralRaiseExerciseName::StandingLift),
15710 28 => Some(LateralRaiseExerciseName::SuspendedRow),
15711 29 => Some(LateralRaiseExerciseName::UnderhandGripRearLateralRaise),
15712 30 => Some(LateralRaiseExerciseName::WallSlide),
15713 31 => Some(LateralRaiseExerciseName::WeightedWallSlide),
15714 32 => Some(LateralRaiseExerciseName::ArmCircles),
15715 33 => Some(LateralRaiseExerciseName::ShavingTheHead),
15716 34 => Some(LateralRaiseExerciseName::DumbbellLateralRaise),
15717 36 => Some(LateralRaiseExerciseName::RingDipKipping),
15718 37 => Some(LateralRaiseExerciseName::WallWalk),
15719 38 => Some(LateralRaiseExerciseName::DumbbellFrontRaiseWheelchair),
15720 39 => Some(LateralRaiseExerciseName::DumbbellLateralRaiseWheelchair),
15721 40 => Some(LateralRaiseExerciseName::PoleDoubleArmOverheadAndForwardWheelchair),
15722 41 => Some(LateralRaiseExerciseName::PoleStraightArmOverheadWheelchair),
15723 _ => None,
15724 }
15725 }
15726
15727 pub fn from_str(name: &str) -> Option<Self> {
15729 match name {
15730 "45_degree_cable_external_rotation" => {
15731 Some(LateralRaiseExerciseName::_45DegreeCableExternalRotation)
15732 }
15733 "alternating_lateral_raise_with_static_hold" => {
15734 Some(LateralRaiseExerciseName::AlternatingLateralRaiseWithStaticHold)
15735 }
15736 "bar_muscle_up" => Some(LateralRaiseExerciseName::BarMuscleUp),
15737 "bent_over_lateral_raise" => Some(LateralRaiseExerciseName::BentOverLateralRaise),
15738 "cable_diagonal_raise" => Some(LateralRaiseExerciseName::CableDiagonalRaise),
15739 "cable_front_raise" => Some(LateralRaiseExerciseName::CableFrontRaise),
15740 "calorie_row" => Some(LateralRaiseExerciseName::CalorieRow),
15741 "combo_shoulder_raise" => Some(LateralRaiseExerciseName::ComboShoulderRaise),
15742 "dumbbell_diagonal_raise" => Some(LateralRaiseExerciseName::DumbbellDiagonalRaise),
15743 "dumbbell_v_raise" => Some(LateralRaiseExerciseName::DumbbellVRaise),
15744 "front_raise" => Some(LateralRaiseExerciseName::FrontRaise),
15745 "leaning_dumbbell_lateral_raise" => {
15746 Some(LateralRaiseExerciseName::LeaningDumbbellLateralRaise)
15747 }
15748 "lying_dumbbell_raise" => Some(LateralRaiseExerciseName::LyingDumbbellRaise),
15749 "muscle_up" => Some(LateralRaiseExerciseName::MuscleUp),
15750 "one_arm_cable_lateral_raise" => {
15751 Some(LateralRaiseExerciseName::OneArmCableLateralRaise)
15752 }
15753 "overhand_grip_rear_lateral_raise" => {
15754 Some(LateralRaiseExerciseName::OverhandGripRearLateralRaise)
15755 }
15756 "plate_raises" => Some(LateralRaiseExerciseName::PlateRaises),
15757 "ring_dip" => Some(LateralRaiseExerciseName::RingDip),
15758 "weighted_ring_dip" => Some(LateralRaiseExerciseName::WeightedRingDip),
15759 "ring_muscle_up" => Some(LateralRaiseExerciseName::RingMuscleUp),
15760 "weighted_ring_muscle_up" => Some(LateralRaiseExerciseName::WeightedRingMuscleUp),
15761 "rope_climb" => Some(LateralRaiseExerciseName::RopeClimb),
15762 "weighted_rope_climb" => Some(LateralRaiseExerciseName::WeightedRopeClimb),
15763 "scaption" => Some(LateralRaiseExerciseName::Scaption),
15764 "seated_lateral_raise" => Some(LateralRaiseExerciseName::SeatedLateralRaise),
15765 "seated_rear_lateral_raise" => Some(LateralRaiseExerciseName::SeatedRearLateralRaise),
15766 "side_lying_lateral_raise" => Some(LateralRaiseExerciseName::SideLyingLateralRaise),
15767 "standing_lift" => Some(LateralRaiseExerciseName::StandingLift),
15768 "suspended_row" => Some(LateralRaiseExerciseName::SuspendedRow),
15769 "underhand_grip_rear_lateral_raise" => {
15770 Some(LateralRaiseExerciseName::UnderhandGripRearLateralRaise)
15771 }
15772 "wall_slide" => Some(LateralRaiseExerciseName::WallSlide),
15773 "weighted_wall_slide" => Some(LateralRaiseExerciseName::WeightedWallSlide),
15774 "arm_circles" => Some(LateralRaiseExerciseName::ArmCircles),
15775 "shaving_the_head" => Some(LateralRaiseExerciseName::ShavingTheHead),
15776 "dumbbell_lateral_raise" => Some(LateralRaiseExerciseName::DumbbellLateralRaise),
15777 "ring_dip_kipping" => Some(LateralRaiseExerciseName::RingDipKipping),
15778 "wall_walk" => Some(LateralRaiseExerciseName::WallWalk),
15779 "dumbbell_front_raise_wheelchair" => {
15780 Some(LateralRaiseExerciseName::DumbbellFrontRaiseWheelchair)
15781 }
15782 "dumbbell_lateral_raise_wheelchair" => {
15783 Some(LateralRaiseExerciseName::DumbbellLateralRaiseWheelchair)
15784 }
15785 "pole_double_arm_overhead_and_forward_wheelchair" => {
15786 Some(LateralRaiseExerciseName::PoleDoubleArmOverheadAndForwardWheelchair)
15787 }
15788 "pole_straight_arm_overhead_wheelchair" => {
15789 Some(LateralRaiseExerciseName::PoleStraightArmOverheadWheelchair)
15790 }
15791 _ => None,
15792 }
15793 }
15794}
15795
15796#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
15797#[repr(u16)]
15798#[non_exhaustive]
15799pub enum LegCurlExerciseName {
15800 LegCurl = 0,
15801 WeightedLegCurl = 1,
15802 GoodMorning = 2,
15803 SeatedBarbellGoodMorning = 3,
15804 SingleLegBarbellGoodMorning = 4,
15805 SingleLegSlidingLegCurl = 5,
15806 SlidingLegCurl = 6,
15807 SplitBarbellGoodMorning = 7,
15808 SplitStanceExtension = 8,
15809 StaggeredStanceGoodMorning = 9,
15810 SwissBallHipRaiseAndLegCurl = 10,
15811 ZercherGoodMorning = 11,
15812 BandGoodMorning = 12,
15813 BarGoodMorning = 13,
15814}
15815
15816impl LegCurlExerciseName {
15817 pub fn as_str(&self) -> &'static str {
15819 match self {
15820 LegCurlExerciseName::LegCurl => "leg_curl",
15821 LegCurlExerciseName::WeightedLegCurl => "weighted_leg_curl",
15822 LegCurlExerciseName::GoodMorning => "good_morning",
15823 LegCurlExerciseName::SeatedBarbellGoodMorning => "seated_barbell_good_morning",
15824 LegCurlExerciseName::SingleLegBarbellGoodMorning => "single_leg_barbell_good_morning",
15825 LegCurlExerciseName::SingleLegSlidingLegCurl => "single_leg_sliding_leg_curl",
15826 LegCurlExerciseName::SlidingLegCurl => "sliding_leg_curl",
15827 LegCurlExerciseName::SplitBarbellGoodMorning => "split_barbell_good_morning",
15828 LegCurlExerciseName::SplitStanceExtension => "split_stance_extension",
15829 LegCurlExerciseName::StaggeredStanceGoodMorning => "staggered_stance_good_morning",
15830 LegCurlExerciseName::SwissBallHipRaiseAndLegCurl => "swiss_ball_hip_raise_and_leg_curl",
15831 LegCurlExerciseName::ZercherGoodMorning => "zercher_good_morning",
15832 LegCurlExerciseName::BandGoodMorning => "band_good_morning",
15833 LegCurlExerciseName::BarGoodMorning => "bar_good_morning",
15834 }
15835 }
15836
15837 pub fn from_value(value: u16) -> Option<Self> {
15839 match value {
15840 0 => Some(LegCurlExerciseName::LegCurl),
15841 1 => Some(LegCurlExerciseName::WeightedLegCurl),
15842 2 => Some(LegCurlExerciseName::GoodMorning),
15843 3 => Some(LegCurlExerciseName::SeatedBarbellGoodMorning),
15844 4 => Some(LegCurlExerciseName::SingleLegBarbellGoodMorning),
15845 5 => Some(LegCurlExerciseName::SingleLegSlidingLegCurl),
15846 6 => Some(LegCurlExerciseName::SlidingLegCurl),
15847 7 => Some(LegCurlExerciseName::SplitBarbellGoodMorning),
15848 8 => Some(LegCurlExerciseName::SplitStanceExtension),
15849 9 => Some(LegCurlExerciseName::StaggeredStanceGoodMorning),
15850 10 => Some(LegCurlExerciseName::SwissBallHipRaiseAndLegCurl),
15851 11 => Some(LegCurlExerciseName::ZercherGoodMorning),
15852 12 => Some(LegCurlExerciseName::BandGoodMorning),
15853 13 => Some(LegCurlExerciseName::BarGoodMorning),
15854 _ => None,
15855 }
15856 }
15857
15858 pub fn from_str(name: &str) -> Option<Self> {
15860 match name {
15861 "leg_curl" => Some(LegCurlExerciseName::LegCurl),
15862 "weighted_leg_curl" => Some(LegCurlExerciseName::WeightedLegCurl),
15863 "good_morning" => Some(LegCurlExerciseName::GoodMorning),
15864 "seated_barbell_good_morning" => Some(LegCurlExerciseName::SeatedBarbellGoodMorning),
15865 "single_leg_barbell_good_morning" => {
15866 Some(LegCurlExerciseName::SingleLegBarbellGoodMorning)
15867 }
15868 "single_leg_sliding_leg_curl" => Some(LegCurlExerciseName::SingleLegSlidingLegCurl),
15869 "sliding_leg_curl" => Some(LegCurlExerciseName::SlidingLegCurl),
15870 "split_barbell_good_morning" => Some(LegCurlExerciseName::SplitBarbellGoodMorning),
15871 "split_stance_extension" => Some(LegCurlExerciseName::SplitStanceExtension),
15872 "staggered_stance_good_morning" => {
15873 Some(LegCurlExerciseName::StaggeredStanceGoodMorning)
15874 }
15875 "swiss_ball_hip_raise_and_leg_curl" => {
15876 Some(LegCurlExerciseName::SwissBallHipRaiseAndLegCurl)
15877 }
15878 "zercher_good_morning" => Some(LegCurlExerciseName::ZercherGoodMorning),
15879 "band_good_morning" => Some(LegCurlExerciseName::BandGoodMorning),
15880 "bar_good_morning" => Some(LegCurlExerciseName::BarGoodMorning),
15881 _ => None,
15882 }
15883 }
15884}
15885
15886#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
15887#[repr(u16)]
15888#[non_exhaustive]
15889pub enum LegRaiseExerciseName {
15890 HangingKneeRaise = 0,
15891 HangingLegRaise = 1,
15892 WeightedHangingLegRaise = 2,
15893 HangingSingleLegRaise = 3,
15894 WeightedHangingSingleLegRaise = 4,
15895 KettlebellLegRaises = 5,
15896 LegLoweringDrill = 6,
15897 WeightedLegLoweringDrill = 7,
15898 LyingStraightLegRaise = 8,
15899 WeightedLyingStraightLegRaise = 9,
15900 MedicineBallLegDrops = 10,
15901 QuadrupedLegRaise = 11,
15902 WeightedQuadrupedLegRaise = 12,
15903 ReverseLegRaise = 13,
15904 WeightedReverseLegRaise = 14,
15905 ReverseLegRaiseOnSwissBall = 15,
15906 WeightedReverseLegRaiseOnSwissBall = 16,
15907 SingleLegLoweringDrill = 17,
15908 WeightedSingleLegLoweringDrill = 18,
15909 WeightedHangingKneeRaise = 19,
15910 LateralStepover = 20,
15911 WeightedLateralStepover = 21,
15912}
15913
15914impl LegRaiseExerciseName {
15915 pub fn as_str(&self) -> &'static str {
15917 match self {
15918 LegRaiseExerciseName::HangingKneeRaise => "hanging_knee_raise",
15919 LegRaiseExerciseName::HangingLegRaise => "hanging_leg_raise",
15920 LegRaiseExerciseName::WeightedHangingLegRaise => "weighted_hanging_leg_raise",
15921 LegRaiseExerciseName::HangingSingleLegRaise => "hanging_single_leg_raise",
15922 LegRaiseExerciseName::WeightedHangingSingleLegRaise => {
15923 "weighted_hanging_single_leg_raise"
15924 }
15925 LegRaiseExerciseName::KettlebellLegRaises => "kettlebell_leg_raises",
15926 LegRaiseExerciseName::LegLoweringDrill => "leg_lowering_drill",
15927 LegRaiseExerciseName::WeightedLegLoweringDrill => "weighted_leg_lowering_drill",
15928 LegRaiseExerciseName::LyingStraightLegRaise => "lying_straight_leg_raise",
15929 LegRaiseExerciseName::WeightedLyingStraightLegRaise => {
15930 "weighted_lying_straight_leg_raise"
15931 }
15932 LegRaiseExerciseName::MedicineBallLegDrops => "medicine_ball_leg_drops",
15933 LegRaiseExerciseName::QuadrupedLegRaise => "quadruped_leg_raise",
15934 LegRaiseExerciseName::WeightedQuadrupedLegRaise => "weighted_quadruped_leg_raise",
15935 LegRaiseExerciseName::ReverseLegRaise => "reverse_leg_raise",
15936 LegRaiseExerciseName::WeightedReverseLegRaise => "weighted_reverse_leg_raise",
15937 LegRaiseExerciseName::ReverseLegRaiseOnSwissBall => "reverse_leg_raise_on_swiss_ball",
15938 LegRaiseExerciseName::WeightedReverseLegRaiseOnSwissBall => {
15939 "weighted_reverse_leg_raise_on_swiss_ball"
15940 }
15941 LegRaiseExerciseName::SingleLegLoweringDrill => "single_leg_lowering_drill",
15942 LegRaiseExerciseName::WeightedSingleLegLoweringDrill => {
15943 "weighted_single_leg_lowering_drill"
15944 }
15945 LegRaiseExerciseName::WeightedHangingKneeRaise => "weighted_hanging_knee_raise",
15946 LegRaiseExerciseName::LateralStepover => "lateral_stepover",
15947 LegRaiseExerciseName::WeightedLateralStepover => "weighted_lateral_stepover",
15948 }
15949 }
15950
15951 pub fn from_value(value: u16) -> Option<Self> {
15953 match value {
15954 0 => Some(LegRaiseExerciseName::HangingKneeRaise),
15955 1 => Some(LegRaiseExerciseName::HangingLegRaise),
15956 2 => Some(LegRaiseExerciseName::WeightedHangingLegRaise),
15957 3 => Some(LegRaiseExerciseName::HangingSingleLegRaise),
15958 4 => Some(LegRaiseExerciseName::WeightedHangingSingleLegRaise),
15959 5 => Some(LegRaiseExerciseName::KettlebellLegRaises),
15960 6 => Some(LegRaiseExerciseName::LegLoweringDrill),
15961 7 => Some(LegRaiseExerciseName::WeightedLegLoweringDrill),
15962 8 => Some(LegRaiseExerciseName::LyingStraightLegRaise),
15963 9 => Some(LegRaiseExerciseName::WeightedLyingStraightLegRaise),
15964 10 => Some(LegRaiseExerciseName::MedicineBallLegDrops),
15965 11 => Some(LegRaiseExerciseName::QuadrupedLegRaise),
15966 12 => Some(LegRaiseExerciseName::WeightedQuadrupedLegRaise),
15967 13 => Some(LegRaiseExerciseName::ReverseLegRaise),
15968 14 => Some(LegRaiseExerciseName::WeightedReverseLegRaise),
15969 15 => Some(LegRaiseExerciseName::ReverseLegRaiseOnSwissBall),
15970 16 => Some(LegRaiseExerciseName::WeightedReverseLegRaiseOnSwissBall),
15971 17 => Some(LegRaiseExerciseName::SingleLegLoweringDrill),
15972 18 => Some(LegRaiseExerciseName::WeightedSingleLegLoweringDrill),
15973 19 => Some(LegRaiseExerciseName::WeightedHangingKneeRaise),
15974 20 => Some(LegRaiseExerciseName::LateralStepover),
15975 21 => Some(LegRaiseExerciseName::WeightedLateralStepover),
15976 _ => None,
15977 }
15978 }
15979
15980 pub fn from_str(name: &str) -> Option<Self> {
15982 match name {
15983 "hanging_knee_raise" => Some(LegRaiseExerciseName::HangingKneeRaise),
15984 "hanging_leg_raise" => Some(LegRaiseExerciseName::HangingLegRaise),
15985 "weighted_hanging_leg_raise" => Some(LegRaiseExerciseName::WeightedHangingLegRaise),
15986 "hanging_single_leg_raise" => Some(LegRaiseExerciseName::HangingSingleLegRaise),
15987 "weighted_hanging_single_leg_raise" => {
15988 Some(LegRaiseExerciseName::WeightedHangingSingleLegRaise)
15989 }
15990 "kettlebell_leg_raises" => Some(LegRaiseExerciseName::KettlebellLegRaises),
15991 "leg_lowering_drill" => Some(LegRaiseExerciseName::LegLoweringDrill),
15992 "weighted_leg_lowering_drill" => Some(LegRaiseExerciseName::WeightedLegLoweringDrill),
15993 "lying_straight_leg_raise" => Some(LegRaiseExerciseName::LyingStraightLegRaise),
15994 "weighted_lying_straight_leg_raise" => {
15995 Some(LegRaiseExerciseName::WeightedLyingStraightLegRaise)
15996 }
15997 "medicine_ball_leg_drops" => Some(LegRaiseExerciseName::MedicineBallLegDrops),
15998 "quadruped_leg_raise" => Some(LegRaiseExerciseName::QuadrupedLegRaise),
15999 "weighted_quadruped_leg_raise" => Some(LegRaiseExerciseName::WeightedQuadrupedLegRaise),
16000 "reverse_leg_raise" => Some(LegRaiseExerciseName::ReverseLegRaise),
16001 "weighted_reverse_leg_raise" => Some(LegRaiseExerciseName::WeightedReverseLegRaise),
16002 "reverse_leg_raise_on_swiss_ball" => {
16003 Some(LegRaiseExerciseName::ReverseLegRaiseOnSwissBall)
16004 }
16005 "weighted_reverse_leg_raise_on_swiss_ball" => {
16006 Some(LegRaiseExerciseName::WeightedReverseLegRaiseOnSwissBall)
16007 }
16008 "single_leg_lowering_drill" => Some(LegRaiseExerciseName::SingleLegLoweringDrill),
16009 "weighted_single_leg_lowering_drill" => {
16010 Some(LegRaiseExerciseName::WeightedSingleLegLoweringDrill)
16011 }
16012 "weighted_hanging_knee_raise" => Some(LegRaiseExerciseName::WeightedHangingKneeRaise),
16013 "lateral_stepover" => Some(LegRaiseExerciseName::LateralStepover),
16014 "weighted_lateral_stepover" => Some(LegRaiseExerciseName::WeightedLateralStepover),
16015 _ => None,
16016 }
16017 }
16018}
16019
16020#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
16021#[repr(u16)]
16022#[non_exhaustive]
16023pub enum LungeExerciseName {
16024 OverheadLunge = 0,
16025 LungeMatrix = 1,
16026 WeightedLungeMatrix = 2,
16027 AlternatingBarbellForwardLunge = 3,
16028 AlternatingDumbbellLungeWithReach = 4,
16029 BackFootElevatedDumbbellSplitSquat = 5,
16030 BarbellBoxLunge = 6,
16031 BarbellBulgarianSplitSquat = 7,
16032 BarbellCrossoverLunge = 8,
16033 BarbellFrontSplitSquat = 9,
16034 BarbellLunge = 10,
16035 BarbellReverseLunge = 11,
16036 BarbellSideLunge = 12,
16037 BarbellSplitSquat = 13,
16038 CoreControlRearLunge = 14,
16039 DiagonalLunge = 15,
16040 DropLunge = 16,
16041 DumbbellBoxLunge = 17,
16042 DumbbellBulgarianSplitSquat = 18,
16043 DumbbellCrossoverLunge = 19,
16044 DumbbellDiagonalLunge = 20,
16045 DumbbellLunge = 21,
16046 DumbbellLungeAndRotation = 22,
16047 DumbbellOverheadBulgarianSplitSquat = 23,
16048 DumbbellReverseLungeToHighKneeAndPress = 24,
16049 DumbbellSideLunge = 25,
16050 ElevatedFrontFootBarbellSplitSquat = 26,
16051 FrontFootElevatedDumbbellSplitSquat = 27,
16052 GunslingerLunge = 28,
16053 LawnmowerLunge = 29,
16054 LowLungeWithIsometricAdduction = 30,
16055 LowSideToSideLunge = 31,
16056 Lunge = 32,
16057 WeightedLunge = 33,
16058 LungeWithArmReach = 34,
16059 LungeWithDiagonalReach = 35,
16060 LungeWithSideBend = 36,
16061 OffsetDumbbellLunge = 37,
16062 OffsetDumbbellReverseLunge = 38,
16063 OverheadBulgarianSplitSquat = 39,
16064 OverheadDumbbellReverseLunge = 40,
16065 OverheadDumbbellSplitSquat = 41,
16066 OverheadLungeWithRotation = 42,
16067 ReverseBarbellBoxLunge = 43,
16068 ReverseBoxLunge = 44,
16069 ReverseDumbbellBoxLunge = 45,
16070 ReverseDumbbellCrossoverLunge = 46,
16071 ReverseDumbbellDiagonalLunge = 47,
16072 ReverseLungeWithReachBack = 48,
16073 WeightedReverseLungeWithReachBack = 49,
16074 ReverseLungeWithTwistAndOverheadReach = 50,
16075 WeightedReverseLungeWithTwistAndOverheadReach = 51,
16076 ReverseSlidingBoxLunge = 52,
16077 WeightedReverseSlidingBoxLunge = 53,
16078 ReverseSlidingLunge = 54,
16079 WeightedReverseSlidingLunge = 55,
16080 RunnersLungeToBalance = 56,
16081 WeightedRunnersLungeToBalance = 57,
16082 ShiftingSideLunge = 58,
16083 SideAndCrossoverLunge = 59,
16084 WeightedSideAndCrossoverLunge = 60,
16085 SideLunge = 61,
16086 WeightedSideLunge = 62,
16087 SideLungeAndPress = 63,
16088 SideLungeJumpOff = 64,
16089 SideLungeSweep = 65,
16090 WeightedSideLungeSweep = 66,
16091 SideLungeToCrossoverTap = 67,
16092 WeightedSideLungeToCrossoverTap = 68,
16093 SideToSideLungeChops = 69,
16094 WeightedSideToSideLungeChops = 70,
16095 SiffJumpLunge = 71,
16096 WeightedSiffJumpLunge = 72,
16097 SingleArmReverseLungeAndPress = 73,
16098 SlidingLateralLunge = 74,
16099 WeightedSlidingLateralLunge = 75,
16100 WalkingBarbellLunge = 76,
16101 WalkingDumbbellLunge = 77,
16102 WalkingLunge = 78,
16103 WeightedWalkingLunge = 79,
16104 WideGripOverheadBarbellSplitSquat = 80,
16105 AlternatingDumbbellLunge = 81,
16106 DumbbellReverseLunge = 82,
16107 OverheadDumbbellLunge = 83,
16108 ScissorPowerSwitch = 84,
16109 DumbbellOverheadWalkingLunge = 85,
16110 CurtsyLunge = 86,
16111 WeightedCurtsyLunge = 87,
16112 WeightedShiftingSideLunge = 88,
16113 WeightedSideLungeAndPress = 89,
16114 WeightedSideLungeJumpOff = 90,
16115}
16116
16117impl LungeExerciseName {
16118 pub fn as_str(&self) -> &'static str {
16120 match self {
16121 LungeExerciseName::OverheadLunge => "overhead_lunge",
16122 LungeExerciseName::LungeMatrix => "lunge_matrix",
16123 LungeExerciseName::WeightedLungeMatrix => "weighted_lunge_matrix",
16124 LungeExerciseName::AlternatingBarbellForwardLunge => {
16125 "alternating_barbell_forward_lunge"
16126 }
16127 LungeExerciseName::AlternatingDumbbellLungeWithReach => {
16128 "alternating_dumbbell_lunge_with_reach"
16129 }
16130 LungeExerciseName::BackFootElevatedDumbbellSplitSquat => {
16131 "back_foot_elevated_dumbbell_split_squat"
16132 }
16133 LungeExerciseName::BarbellBoxLunge => "barbell_box_lunge",
16134 LungeExerciseName::BarbellBulgarianSplitSquat => "barbell_bulgarian_split_squat",
16135 LungeExerciseName::BarbellCrossoverLunge => "barbell_crossover_lunge",
16136 LungeExerciseName::BarbellFrontSplitSquat => "barbell_front_split_squat",
16137 LungeExerciseName::BarbellLunge => "barbell_lunge",
16138 LungeExerciseName::BarbellReverseLunge => "barbell_reverse_lunge",
16139 LungeExerciseName::BarbellSideLunge => "barbell_side_lunge",
16140 LungeExerciseName::BarbellSplitSquat => "barbell_split_squat",
16141 LungeExerciseName::CoreControlRearLunge => "core_control_rear_lunge",
16142 LungeExerciseName::DiagonalLunge => "diagonal_lunge",
16143 LungeExerciseName::DropLunge => "drop_lunge",
16144 LungeExerciseName::DumbbellBoxLunge => "dumbbell_box_lunge",
16145 LungeExerciseName::DumbbellBulgarianSplitSquat => "dumbbell_bulgarian_split_squat",
16146 LungeExerciseName::DumbbellCrossoverLunge => "dumbbell_crossover_lunge",
16147 LungeExerciseName::DumbbellDiagonalLunge => "dumbbell_diagonal_lunge",
16148 LungeExerciseName::DumbbellLunge => "dumbbell_lunge",
16149 LungeExerciseName::DumbbellLungeAndRotation => "dumbbell_lunge_and_rotation",
16150 LungeExerciseName::DumbbellOverheadBulgarianSplitSquat => {
16151 "dumbbell_overhead_bulgarian_split_squat"
16152 }
16153 LungeExerciseName::DumbbellReverseLungeToHighKneeAndPress => {
16154 "dumbbell_reverse_lunge_to_high_knee_and_press"
16155 }
16156 LungeExerciseName::DumbbellSideLunge => "dumbbell_side_lunge",
16157 LungeExerciseName::ElevatedFrontFootBarbellSplitSquat => {
16158 "elevated_front_foot_barbell_split_squat"
16159 }
16160 LungeExerciseName::FrontFootElevatedDumbbellSplitSquat => {
16161 "front_foot_elevated_dumbbell_split_squat"
16162 }
16163 LungeExerciseName::GunslingerLunge => "gunslinger_lunge",
16164 LungeExerciseName::LawnmowerLunge => "lawnmower_lunge",
16165 LungeExerciseName::LowLungeWithIsometricAdduction => {
16166 "low_lunge_with_isometric_adduction"
16167 }
16168 LungeExerciseName::LowSideToSideLunge => "low_side_to_side_lunge",
16169 LungeExerciseName::Lunge => "lunge",
16170 LungeExerciseName::WeightedLunge => "weighted_lunge",
16171 LungeExerciseName::LungeWithArmReach => "lunge_with_arm_reach",
16172 LungeExerciseName::LungeWithDiagonalReach => "lunge_with_diagonal_reach",
16173 LungeExerciseName::LungeWithSideBend => "lunge_with_side_bend",
16174 LungeExerciseName::OffsetDumbbellLunge => "offset_dumbbell_lunge",
16175 LungeExerciseName::OffsetDumbbellReverseLunge => "offset_dumbbell_reverse_lunge",
16176 LungeExerciseName::OverheadBulgarianSplitSquat => "overhead_bulgarian_split_squat",
16177 LungeExerciseName::OverheadDumbbellReverseLunge => "overhead_dumbbell_reverse_lunge",
16178 LungeExerciseName::OverheadDumbbellSplitSquat => "overhead_dumbbell_split_squat",
16179 LungeExerciseName::OverheadLungeWithRotation => "overhead_lunge_with_rotation",
16180 LungeExerciseName::ReverseBarbellBoxLunge => "reverse_barbell_box_lunge",
16181 LungeExerciseName::ReverseBoxLunge => "reverse_box_lunge",
16182 LungeExerciseName::ReverseDumbbellBoxLunge => "reverse_dumbbell_box_lunge",
16183 LungeExerciseName::ReverseDumbbellCrossoverLunge => "reverse_dumbbell_crossover_lunge",
16184 LungeExerciseName::ReverseDumbbellDiagonalLunge => "reverse_dumbbell_diagonal_lunge",
16185 LungeExerciseName::ReverseLungeWithReachBack => "reverse_lunge_with_reach_back",
16186 LungeExerciseName::WeightedReverseLungeWithReachBack => {
16187 "weighted_reverse_lunge_with_reach_back"
16188 }
16189 LungeExerciseName::ReverseLungeWithTwistAndOverheadReach => {
16190 "reverse_lunge_with_twist_and_overhead_reach"
16191 }
16192 LungeExerciseName::WeightedReverseLungeWithTwistAndOverheadReach => {
16193 "weighted_reverse_lunge_with_twist_and_overhead_reach"
16194 }
16195 LungeExerciseName::ReverseSlidingBoxLunge => "reverse_sliding_box_lunge",
16196 LungeExerciseName::WeightedReverseSlidingBoxLunge => {
16197 "weighted_reverse_sliding_box_lunge"
16198 }
16199 LungeExerciseName::ReverseSlidingLunge => "reverse_sliding_lunge",
16200 LungeExerciseName::WeightedReverseSlidingLunge => "weighted_reverse_sliding_lunge",
16201 LungeExerciseName::RunnersLungeToBalance => "runners_lunge_to_balance",
16202 LungeExerciseName::WeightedRunnersLungeToBalance => "weighted_runners_lunge_to_balance",
16203 LungeExerciseName::ShiftingSideLunge => "shifting_side_lunge",
16204 LungeExerciseName::SideAndCrossoverLunge => "side_and_crossover_lunge",
16205 LungeExerciseName::WeightedSideAndCrossoverLunge => "weighted_side_and_crossover_lunge",
16206 LungeExerciseName::SideLunge => "side_lunge",
16207 LungeExerciseName::WeightedSideLunge => "weighted_side_lunge",
16208 LungeExerciseName::SideLungeAndPress => "side_lunge_and_press",
16209 LungeExerciseName::SideLungeJumpOff => "side_lunge_jump_off",
16210 LungeExerciseName::SideLungeSweep => "side_lunge_sweep",
16211 LungeExerciseName::WeightedSideLungeSweep => "weighted_side_lunge_sweep",
16212 LungeExerciseName::SideLungeToCrossoverTap => "side_lunge_to_crossover_tap",
16213 LungeExerciseName::WeightedSideLungeToCrossoverTap => {
16214 "weighted_side_lunge_to_crossover_tap"
16215 }
16216 LungeExerciseName::SideToSideLungeChops => "side_to_side_lunge_chops",
16217 LungeExerciseName::WeightedSideToSideLungeChops => "weighted_side_to_side_lunge_chops",
16218 LungeExerciseName::SiffJumpLunge => "siff_jump_lunge",
16219 LungeExerciseName::WeightedSiffJumpLunge => "weighted_siff_jump_lunge",
16220 LungeExerciseName::SingleArmReverseLungeAndPress => {
16221 "single_arm_reverse_lunge_and_press"
16222 }
16223 LungeExerciseName::SlidingLateralLunge => "sliding_lateral_lunge",
16224 LungeExerciseName::WeightedSlidingLateralLunge => "weighted_sliding_lateral_lunge",
16225 LungeExerciseName::WalkingBarbellLunge => "walking_barbell_lunge",
16226 LungeExerciseName::WalkingDumbbellLunge => "walking_dumbbell_lunge",
16227 LungeExerciseName::WalkingLunge => "walking_lunge",
16228 LungeExerciseName::WeightedWalkingLunge => "weighted_walking_lunge",
16229 LungeExerciseName::WideGripOverheadBarbellSplitSquat => {
16230 "wide_grip_overhead_barbell_split_squat"
16231 }
16232 LungeExerciseName::AlternatingDumbbellLunge => "alternating_dumbbell_lunge",
16233 LungeExerciseName::DumbbellReverseLunge => "dumbbell_reverse_lunge",
16234 LungeExerciseName::OverheadDumbbellLunge => "overhead_dumbbell_lunge",
16235 LungeExerciseName::ScissorPowerSwitch => "scissor_power_switch",
16236 LungeExerciseName::DumbbellOverheadWalkingLunge => "dumbbell_overhead_walking_lunge",
16237 LungeExerciseName::CurtsyLunge => "curtsy_lunge",
16238 LungeExerciseName::WeightedCurtsyLunge => "weighted_curtsy_lunge",
16239 LungeExerciseName::WeightedShiftingSideLunge => "weighted_shifting_side_lunge",
16240 LungeExerciseName::WeightedSideLungeAndPress => "weighted_side_lunge_and_press",
16241 LungeExerciseName::WeightedSideLungeJumpOff => "weighted_side_lunge_jump_off",
16242 }
16243 }
16244
16245 pub fn from_value(value: u16) -> Option<Self> {
16247 match value {
16248 0 => Some(LungeExerciseName::OverheadLunge),
16249 1 => Some(LungeExerciseName::LungeMatrix),
16250 2 => Some(LungeExerciseName::WeightedLungeMatrix),
16251 3 => Some(LungeExerciseName::AlternatingBarbellForwardLunge),
16252 4 => Some(LungeExerciseName::AlternatingDumbbellLungeWithReach),
16253 5 => Some(LungeExerciseName::BackFootElevatedDumbbellSplitSquat),
16254 6 => Some(LungeExerciseName::BarbellBoxLunge),
16255 7 => Some(LungeExerciseName::BarbellBulgarianSplitSquat),
16256 8 => Some(LungeExerciseName::BarbellCrossoverLunge),
16257 9 => Some(LungeExerciseName::BarbellFrontSplitSquat),
16258 10 => Some(LungeExerciseName::BarbellLunge),
16259 11 => Some(LungeExerciseName::BarbellReverseLunge),
16260 12 => Some(LungeExerciseName::BarbellSideLunge),
16261 13 => Some(LungeExerciseName::BarbellSplitSquat),
16262 14 => Some(LungeExerciseName::CoreControlRearLunge),
16263 15 => Some(LungeExerciseName::DiagonalLunge),
16264 16 => Some(LungeExerciseName::DropLunge),
16265 17 => Some(LungeExerciseName::DumbbellBoxLunge),
16266 18 => Some(LungeExerciseName::DumbbellBulgarianSplitSquat),
16267 19 => Some(LungeExerciseName::DumbbellCrossoverLunge),
16268 20 => Some(LungeExerciseName::DumbbellDiagonalLunge),
16269 21 => Some(LungeExerciseName::DumbbellLunge),
16270 22 => Some(LungeExerciseName::DumbbellLungeAndRotation),
16271 23 => Some(LungeExerciseName::DumbbellOverheadBulgarianSplitSquat),
16272 24 => Some(LungeExerciseName::DumbbellReverseLungeToHighKneeAndPress),
16273 25 => Some(LungeExerciseName::DumbbellSideLunge),
16274 26 => Some(LungeExerciseName::ElevatedFrontFootBarbellSplitSquat),
16275 27 => Some(LungeExerciseName::FrontFootElevatedDumbbellSplitSquat),
16276 28 => Some(LungeExerciseName::GunslingerLunge),
16277 29 => Some(LungeExerciseName::LawnmowerLunge),
16278 30 => Some(LungeExerciseName::LowLungeWithIsometricAdduction),
16279 31 => Some(LungeExerciseName::LowSideToSideLunge),
16280 32 => Some(LungeExerciseName::Lunge),
16281 33 => Some(LungeExerciseName::WeightedLunge),
16282 34 => Some(LungeExerciseName::LungeWithArmReach),
16283 35 => Some(LungeExerciseName::LungeWithDiagonalReach),
16284 36 => Some(LungeExerciseName::LungeWithSideBend),
16285 37 => Some(LungeExerciseName::OffsetDumbbellLunge),
16286 38 => Some(LungeExerciseName::OffsetDumbbellReverseLunge),
16287 39 => Some(LungeExerciseName::OverheadBulgarianSplitSquat),
16288 40 => Some(LungeExerciseName::OverheadDumbbellReverseLunge),
16289 41 => Some(LungeExerciseName::OverheadDumbbellSplitSquat),
16290 42 => Some(LungeExerciseName::OverheadLungeWithRotation),
16291 43 => Some(LungeExerciseName::ReverseBarbellBoxLunge),
16292 44 => Some(LungeExerciseName::ReverseBoxLunge),
16293 45 => Some(LungeExerciseName::ReverseDumbbellBoxLunge),
16294 46 => Some(LungeExerciseName::ReverseDumbbellCrossoverLunge),
16295 47 => Some(LungeExerciseName::ReverseDumbbellDiagonalLunge),
16296 48 => Some(LungeExerciseName::ReverseLungeWithReachBack),
16297 49 => Some(LungeExerciseName::WeightedReverseLungeWithReachBack),
16298 50 => Some(LungeExerciseName::ReverseLungeWithTwistAndOverheadReach),
16299 51 => Some(LungeExerciseName::WeightedReverseLungeWithTwistAndOverheadReach),
16300 52 => Some(LungeExerciseName::ReverseSlidingBoxLunge),
16301 53 => Some(LungeExerciseName::WeightedReverseSlidingBoxLunge),
16302 54 => Some(LungeExerciseName::ReverseSlidingLunge),
16303 55 => Some(LungeExerciseName::WeightedReverseSlidingLunge),
16304 56 => Some(LungeExerciseName::RunnersLungeToBalance),
16305 57 => Some(LungeExerciseName::WeightedRunnersLungeToBalance),
16306 58 => Some(LungeExerciseName::ShiftingSideLunge),
16307 59 => Some(LungeExerciseName::SideAndCrossoverLunge),
16308 60 => Some(LungeExerciseName::WeightedSideAndCrossoverLunge),
16309 61 => Some(LungeExerciseName::SideLunge),
16310 62 => Some(LungeExerciseName::WeightedSideLunge),
16311 63 => Some(LungeExerciseName::SideLungeAndPress),
16312 64 => Some(LungeExerciseName::SideLungeJumpOff),
16313 65 => Some(LungeExerciseName::SideLungeSweep),
16314 66 => Some(LungeExerciseName::WeightedSideLungeSweep),
16315 67 => Some(LungeExerciseName::SideLungeToCrossoverTap),
16316 68 => Some(LungeExerciseName::WeightedSideLungeToCrossoverTap),
16317 69 => Some(LungeExerciseName::SideToSideLungeChops),
16318 70 => Some(LungeExerciseName::WeightedSideToSideLungeChops),
16319 71 => Some(LungeExerciseName::SiffJumpLunge),
16320 72 => Some(LungeExerciseName::WeightedSiffJumpLunge),
16321 73 => Some(LungeExerciseName::SingleArmReverseLungeAndPress),
16322 74 => Some(LungeExerciseName::SlidingLateralLunge),
16323 75 => Some(LungeExerciseName::WeightedSlidingLateralLunge),
16324 76 => Some(LungeExerciseName::WalkingBarbellLunge),
16325 77 => Some(LungeExerciseName::WalkingDumbbellLunge),
16326 78 => Some(LungeExerciseName::WalkingLunge),
16327 79 => Some(LungeExerciseName::WeightedWalkingLunge),
16328 80 => Some(LungeExerciseName::WideGripOverheadBarbellSplitSquat),
16329 81 => Some(LungeExerciseName::AlternatingDumbbellLunge),
16330 82 => Some(LungeExerciseName::DumbbellReverseLunge),
16331 83 => Some(LungeExerciseName::OverheadDumbbellLunge),
16332 84 => Some(LungeExerciseName::ScissorPowerSwitch),
16333 85 => Some(LungeExerciseName::DumbbellOverheadWalkingLunge),
16334 86 => Some(LungeExerciseName::CurtsyLunge),
16335 87 => Some(LungeExerciseName::WeightedCurtsyLunge),
16336 88 => Some(LungeExerciseName::WeightedShiftingSideLunge),
16337 89 => Some(LungeExerciseName::WeightedSideLungeAndPress),
16338 90 => Some(LungeExerciseName::WeightedSideLungeJumpOff),
16339 _ => None,
16340 }
16341 }
16342
16343 pub fn from_str(name: &str) -> Option<Self> {
16345 match name {
16346 "overhead_lunge" => Some(LungeExerciseName::OverheadLunge),
16347 "lunge_matrix" => Some(LungeExerciseName::LungeMatrix),
16348 "weighted_lunge_matrix" => Some(LungeExerciseName::WeightedLungeMatrix),
16349 "alternating_barbell_forward_lunge" => {
16350 Some(LungeExerciseName::AlternatingBarbellForwardLunge)
16351 }
16352 "alternating_dumbbell_lunge_with_reach" => {
16353 Some(LungeExerciseName::AlternatingDumbbellLungeWithReach)
16354 }
16355 "back_foot_elevated_dumbbell_split_squat" => {
16356 Some(LungeExerciseName::BackFootElevatedDumbbellSplitSquat)
16357 }
16358 "barbell_box_lunge" => Some(LungeExerciseName::BarbellBoxLunge),
16359 "barbell_bulgarian_split_squat" => Some(LungeExerciseName::BarbellBulgarianSplitSquat),
16360 "barbell_crossover_lunge" => Some(LungeExerciseName::BarbellCrossoverLunge),
16361 "barbell_front_split_squat" => Some(LungeExerciseName::BarbellFrontSplitSquat),
16362 "barbell_lunge" => Some(LungeExerciseName::BarbellLunge),
16363 "barbell_reverse_lunge" => Some(LungeExerciseName::BarbellReverseLunge),
16364 "barbell_side_lunge" => Some(LungeExerciseName::BarbellSideLunge),
16365 "barbell_split_squat" => Some(LungeExerciseName::BarbellSplitSquat),
16366 "core_control_rear_lunge" => Some(LungeExerciseName::CoreControlRearLunge),
16367 "diagonal_lunge" => Some(LungeExerciseName::DiagonalLunge),
16368 "drop_lunge" => Some(LungeExerciseName::DropLunge),
16369 "dumbbell_box_lunge" => Some(LungeExerciseName::DumbbellBoxLunge),
16370 "dumbbell_bulgarian_split_squat" => {
16371 Some(LungeExerciseName::DumbbellBulgarianSplitSquat)
16372 }
16373 "dumbbell_crossover_lunge" => Some(LungeExerciseName::DumbbellCrossoverLunge),
16374 "dumbbell_diagonal_lunge" => Some(LungeExerciseName::DumbbellDiagonalLunge),
16375 "dumbbell_lunge" => Some(LungeExerciseName::DumbbellLunge),
16376 "dumbbell_lunge_and_rotation" => Some(LungeExerciseName::DumbbellLungeAndRotation),
16377 "dumbbell_overhead_bulgarian_split_squat" => {
16378 Some(LungeExerciseName::DumbbellOverheadBulgarianSplitSquat)
16379 }
16380 "dumbbell_reverse_lunge_to_high_knee_and_press" => {
16381 Some(LungeExerciseName::DumbbellReverseLungeToHighKneeAndPress)
16382 }
16383 "dumbbell_side_lunge" => Some(LungeExerciseName::DumbbellSideLunge),
16384 "elevated_front_foot_barbell_split_squat" => {
16385 Some(LungeExerciseName::ElevatedFrontFootBarbellSplitSquat)
16386 }
16387 "front_foot_elevated_dumbbell_split_squat" => {
16388 Some(LungeExerciseName::FrontFootElevatedDumbbellSplitSquat)
16389 }
16390 "gunslinger_lunge" => Some(LungeExerciseName::GunslingerLunge),
16391 "lawnmower_lunge" => Some(LungeExerciseName::LawnmowerLunge),
16392 "low_lunge_with_isometric_adduction" => {
16393 Some(LungeExerciseName::LowLungeWithIsometricAdduction)
16394 }
16395 "low_side_to_side_lunge" => Some(LungeExerciseName::LowSideToSideLunge),
16396 "lunge" => Some(LungeExerciseName::Lunge),
16397 "weighted_lunge" => Some(LungeExerciseName::WeightedLunge),
16398 "lunge_with_arm_reach" => Some(LungeExerciseName::LungeWithArmReach),
16399 "lunge_with_diagonal_reach" => Some(LungeExerciseName::LungeWithDiagonalReach),
16400 "lunge_with_side_bend" => Some(LungeExerciseName::LungeWithSideBend),
16401 "offset_dumbbell_lunge" => Some(LungeExerciseName::OffsetDumbbellLunge),
16402 "offset_dumbbell_reverse_lunge" => Some(LungeExerciseName::OffsetDumbbellReverseLunge),
16403 "overhead_bulgarian_split_squat" => {
16404 Some(LungeExerciseName::OverheadBulgarianSplitSquat)
16405 }
16406 "overhead_dumbbell_reverse_lunge" => {
16407 Some(LungeExerciseName::OverheadDumbbellReverseLunge)
16408 }
16409 "overhead_dumbbell_split_squat" => Some(LungeExerciseName::OverheadDumbbellSplitSquat),
16410 "overhead_lunge_with_rotation" => Some(LungeExerciseName::OverheadLungeWithRotation),
16411 "reverse_barbell_box_lunge" => Some(LungeExerciseName::ReverseBarbellBoxLunge),
16412 "reverse_box_lunge" => Some(LungeExerciseName::ReverseBoxLunge),
16413 "reverse_dumbbell_box_lunge" => Some(LungeExerciseName::ReverseDumbbellBoxLunge),
16414 "reverse_dumbbell_crossover_lunge" => {
16415 Some(LungeExerciseName::ReverseDumbbellCrossoverLunge)
16416 }
16417 "reverse_dumbbell_diagonal_lunge" => {
16418 Some(LungeExerciseName::ReverseDumbbellDiagonalLunge)
16419 }
16420 "reverse_lunge_with_reach_back" => Some(LungeExerciseName::ReverseLungeWithReachBack),
16421 "weighted_reverse_lunge_with_reach_back" => {
16422 Some(LungeExerciseName::WeightedReverseLungeWithReachBack)
16423 }
16424 "reverse_lunge_with_twist_and_overhead_reach" => {
16425 Some(LungeExerciseName::ReverseLungeWithTwistAndOverheadReach)
16426 }
16427 "weighted_reverse_lunge_with_twist_and_overhead_reach" => {
16428 Some(LungeExerciseName::WeightedReverseLungeWithTwistAndOverheadReach)
16429 }
16430 "reverse_sliding_box_lunge" => Some(LungeExerciseName::ReverseSlidingBoxLunge),
16431 "weighted_reverse_sliding_box_lunge" => {
16432 Some(LungeExerciseName::WeightedReverseSlidingBoxLunge)
16433 }
16434 "reverse_sliding_lunge" => Some(LungeExerciseName::ReverseSlidingLunge),
16435 "weighted_reverse_sliding_lunge" => {
16436 Some(LungeExerciseName::WeightedReverseSlidingLunge)
16437 }
16438 "runners_lunge_to_balance" => Some(LungeExerciseName::RunnersLungeToBalance),
16439 "weighted_runners_lunge_to_balance" => {
16440 Some(LungeExerciseName::WeightedRunnersLungeToBalance)
16441 }
16442 "shifting_side_lunge" => Some(LungeExerciseName::ShiftingSideLunge),
16443 "side_and_crossover_lunge" => Some(LungeExerciseName::SideAndCrossoverLunge),
16444 "weighted_side_and_crossover_lunge" => {
16445 Some(LungeExerciseName::WeightedSideAndCrossoverLunge)
16446 }
16447 "side_lunge" => Some(LungeExerciseName::SideLunge),
16448 "weighted_side_lunge" => Some(LungeExerciseName::WeightedSideLunge),
16449 "side_lunge_and_press" => Some(LungeExerciseName::SideLungeAndPress),
16450 "side_lunge_jump_off" => Some(LungeExerciseName::SideLungeJumpOff),
16451 "side_lunge_sweep" => Some(LungeExerciseName::SideLungeSweep),
16452 "weighted_side_lunge_sweep" => Some(LungeExerciseName::WeightedSideLungeSweep),
16453 "side_lunge_to_crossover_tap" => Some(LungeExerciseName::SideLungeToCrossoverTap),
16454 "weighted_side_lunge_to_crossover_tap" => {
16455 Some(LungeExerciseName::WeightedSideLungeToCrossoverTap)
16456 }
16457 "side_to_side_lunge_chops" => Some(LungeExerciseName::SideToSideLungeChops),
16458 "weighted_side_to_side_lunge_chops" => {
16459 Some(LungeExerciseName::WeightedSideToSideLungeChops)
16460 }
16461 "siff_jump_lunge" => Some(LungeExerciseName::SiffJumpLunge),
16462 "weighted_siff_jump_lunge" => Some(LungeExerciseName::WeightedSiffJumpLunge),
16463 "single_arm_reverse_lunge_and_press" => {
16464 Some(LungeExerciseName::SingleArmReverseLungeAndPress)
16465 }
16466 "sliding_lateral_lunge" => Some(LungeExerciseName::SlidingLateralLunge),
16467 "weighted_sliding_lateral_lunge" => {
16468 Some(LungeExerciseName::WeightedSlidingLateralLunge)
16469 }
16470 "walking_barbell_lunge" => Some(LungeExerciseName::WalkingBarbellLunge),
16471 "walking_dumbbell_lunge" => Some(LungeExerciseName::WalkingDumbbellLunge),
16472 "walking_lunge" => Some(LungeExerciseName::WalkingLunge),
16473 "weighted_walking_lunge" => Some(LungeExerciseName::WeightedWalkingLunge),
16474 "wide_grip_overhead_barbell_split_squat" => {
16475 Some(LungeExerciseName::WideGripOverheadBarbellSplitSquat)
16476 }
16477 "alternating_dumbbell_lunge" => Some(LungeExerciseName::AlternatingDumbbellLunge),
16478 "dumbbell_reverse_lunge" => Some(LungeExerciseName::DumbbellReverseLunge),
16479 "overhead_dumbbell_lunge" => Some(LungeExerciseName::OverheadDumbbellLunge),
16480 "scissor_power_switch" => Some(LungeExerciseName::ScissorPowerSwitch),
16481 "dumbbell_overhead_walking_lunge" => {
16482 Some(LungeExerciseName::DumbbellOverheadWalkingLunge)
16483 }
16484 "curtsy_lunge" => Some(LungeExerciseName::CurtsyLunge),
16485 "weighted_curtsy_lunge" => Some(LungeExerciseName::WeightedCurtsyLunge),
16486 "weighted_shifting_side_lunge" => Some(LungeExerciseName::WeightedShiftingSideLunge),
16487 "weighted_side_lunge_and_press" => Some(LungeExerciseName::WeightedSideLungeAndPress),
16488 "weighted_side_lunge_jump_off" => Some(LungeExerciseName::WeightedSideLungeJumpOff),
16489 _ => None,
16490 }
16491 }
16492}
16493
16494#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
16495#[repr(u16)]
16496#[non_exhaustive]
16497pub enum OlympicLiftExerciseName {
16498 BarbellHangPowerClean = 0,
16499 BarbellHangSquatClean = 1,
16500 BarbellPowerClean = 2,
16501 BarbellPowerSnatch = 3,
16502 BarbellSquatClean = 4,
16503 CleanAndJerk = 5,
16504 BarbellHangPowerSnatch = 6,
16505 BarbellHangPull = 7,
16506 BarbellHighPull = 8,
16507 BarbellSnatch = 9,
16508 BarbellSplitJerk = 10,
16509 Clean = 11,
16510 DumbbellClean = 12,
16511 DumbbellHangPull = 13,
16512 OneHandDumbbellSplitSnatch = 14,
16513 PushJerk = 15,
16514 SingleArmDumbbellSnatch = 16,
16515 SingleArmHangSnatch = 17,
16516 SingleArmKettlebellSnatch = 18,
16517 SplitJerk = 19,
16518 SquatCleanAndJerk = 20,
16519 DumbbellHangSnatch = 21,
16520 DumbbellPowerCleanAndJerk = 22,
16521 DumbbellPowerCleanAndPushPress = 23,
16522 DumbbellPowerCleanAndStrictPress = 24,
16523 DumbbellSnatch = 25,
16524 MedicineBallClean = 26,
16525 CleanAndPress = 27,
16526 Snatch = 28,
16527}
16528
16529impl OlympicLiftExerciseName {
16530 pub fn as_str(&self) -> &'static str {
16532 match self {
16533 OlympicLiftExerciseName::BarbellHangPowerClean => "barbell_hang_power_clean",
16534 OlympicLiftExerciseName::BarbellHangSquatClean => "barbell_hang_squat_clean",
16535 OlympicLiftExerciseName::BarbellPowerClean => "barbell_power_clean",
16536 OlympicLiftExerciseName::BarbellPowerSnatch => "barbell_power_snatch",
16537 OlympicLiftExerciseName::BarbellSquatClean => "barbell_squat_clean",
16538 OlympicLiftExerciseName::CleanAndJerk => "clean_and_jerk",
16539 OlympicLiftExerciseName::BarbellHangPowerSnatch => "barbell_hang_power_snatch",
16540 OlympicLiftExerciseName::BarbellHangPull => "barbell_hang_pull",
16541 OlympicLiftExerciseName::BarbellHighPull => "barbell_high_pull",
16542 OlympicLiftExerciseName::BarbellSnatch => "barbell_snatch",
16543 OlympicLiftExerciseName::BarbellSplitJerk => "barbell_split_jerk",
16544 OlympicLiftExerciseName::Clean => "clean",
16545 OlympicLiftExerciseName::DumbbellClean => "dumbbell_clean",
16546 OlympicLiftExerciseName::DumbbellHangPull => "dumbbell_hang_pull",
16547 OlympicLiftExerciseName::OneHandDumbbellSplitSnatch => "one_hand_dumbbell_split_snatch",
16548 OlympicLiftExerciseName::PushJerk => "push_jerk",
16549 OlympicLiftExerciseName::SingleArmDumbbellSnatch => "single_arm_dumbbell_snatch",
16550 OlympicLiftExerciseName::SingleArmHangSnatch => "single_arm_hang_snatch",
16551 OlympicLiftExerciseName::SingleArmKettlebellSnatch => "single_arm_kettlebell_snatch",
16552 OlympicLiftExerciseName::SplitJerk => "split_jerk",
16553 OlympicLiftExerciseName::SquatCleanAndJerk => "squat_clean_and_jerk",
16554 OlympicLiftExerciseName::DumbbellHangSnatch => "dumbbell_hang_snatch",
16555 OlympicLiftExerciseName::DumbbellPowerCleanAndJerk => "dumbbell_power_clean_and_jerk",
16556 OlympicLiftExerciseName::DumbbellPowerCleanAndPushPress => {
16557 "dumbbell_power_clean_and_push_press"
16558 }
16559 OlympicLiftExerciseName::DumbbellPowerCleanAndStrictPress => {
16560 "dumbbell_power_clean_and_strict_press"
16561 }
16562 OlympicLiftExerciseName::DumbbellSnatch => "dumbbell_snatch",
16563 OlympicLiftExerciseName::MedicineBallClean => "medicine_ball_clean",
16564 OlympicLiftExerciseName::CleanAndPress => "clean_and_press",
16565 OlympicLiftExerciseName::Snatch => "snatch",
16566 }
16567 }
16568
16569 pub fn from_value(value: u16) -> Option<Self> {
16571 match value {
16572 0 => Some(OlympicLiftExerciseName::BarbellHangPowerClean),
16573 1 => Some(OlympicLiftExerciseName::BarbellHangSquatClean),
16574 2 => Some(OlympicLiftExerciseName::BarbellPowerClean),
16575 3 => Some(OlympicLiftExerciseName::BarbellPowerSnatch),
16576 4 => Some(OlympicLiftExerciseName::BarbellSquatClean),
16577 5 => Some(OlympicLiftExerciseName::CleanAndJerk),
16578 6 => Some(OlympicLiftExerciseName::BarbellHangPowerSnatch),
16579 7 => Some(OlympicLiftExerciseName::BarbellHangPull),
16580 8 => Some(OlympicLiftExerciseName::BarbellHighPull),
16581 9 => Some(OlympicLiftExerciseName::BarbellSnatch),
16582 10 => Some(OlympicLiftExerciseName::BarbellSplitJerk),
16583 11 => Some(OlympicLiftExerciseName::Clean),
16584 12 => Some(OlympicLiftExerciseName::DumbbellClean),
16585 13 => Some(OlympicLiftExerciseName::DumbbellHangPull),
16586 14 => Some(OlympicLiftExerciseName::OneHandDumbbellSplitSnatch),
16587 15 => Some(OlympicLiftExerciseName::PushJerk),
16588 16 => Some(OlympicLiftExerciseName::SingleArmDumbbellSnatch),
16589 17 => Some(OlympicLiftExerciseName::SingleArmHangSnatch),
16590 18 => Some(OlympicLiftExerciseName::SingleArmKettlebellSnatch),
16591 19 => Some(OlympicLiftExerciseName::SplitJerk),
16592 20 => Some(OlympicLiftExerciseName::SquatCleanAndJerk),
16593 21 => Some(OlympicLiftExerciseName::DumbbellHangSnatch),
16594 22 => Some(OlympicLiftExerciseName::DumbbellPowerCleanAndJerk),
16595 23 => Some(OlympicLiftExerciseName::DumbbellPowerCleanAndPushPress),
16596 24 => Some(OlympicLiftExerciseName::DumbbellPowerCleanAndStrictPress),
16597 25 => Some(OlympicLiftExerciseName::DumbbellSnatch),
16598 26 => Some(OlympicLiftExerciseName::MedicineBallClean),
16599 27 => Some(OlympicLiftExerciseName::CleanAndPress),
16600 28 => Some(OlympicLiftExerciseName::Snatch),
16601 _ => None,
16602 }
16603 }
16604
16605 pub fn from_str(name: &str) -> Option<Self> {
16607 match name {
16608 "barbell_hang_power_clean" => Some(OlympicLiftExerciseName::BarbellHangPowerClean),
16609 "barbell_hang_squat_clean" => Some(OlympicLiftExerciseName::BarbellHangSquatClean),
16610 "barbell_power_clean" => Some(OlympicLiftExerciseName::BarbellPowerClean),
16611 "barbell_power_snatch" => Some(OlympicLiftExerciseName::BarbellPowerSnatch),
16612 "barbell_squat_clean" => Some(OlympicLiftExerciseName::BarbellSquatClean),
16613 "clean_and_jerk" => Some(OlympicLiftExerciseName::CleanAndJerk),
16614 "barbell_hang_power_snatch" => Some(OlympicLiftExerciseName::BarbellHangPowerSnatch),
16615 "barbell_hang_pull" => Some(OlympicLiftExerciseName::BarbellHangPull),
16616 "barbell_high_pull" => Some(OlympicLiftExerciseName::BarbellHighPull),
16617 "barbell_snatch" => Some(OlympicLiftExerciseName::BarbellSnatch),
16618 "barbell_split_jerk" => Some(OlympicLiftExerciseName::BarbellSplitJerk),
16619 "clean" => Some(OlympicLiftExerciseName::Clean),
16620 "dumbbell_clean" => Some(OlympicLiftExerciseName::DumbbellClean),
16621 "dumbbell_hang_pull" => Some(OlympicLiftExerciseName::DumbbellHangPull),
16622 "one_hand_dumbbell_split_snatch" => {
16623 Some(OlympicLiftExerciseName::OneHandDumbbellSplitSnatch)
16624 }
16625 "push_jerk" => Some(OlympicLiftExerciseName::PushJerk),
16626 "single_arm_dumbbell_snatch" => Some(OlympicLiftExerciseName::SingleArmDumbbellSnatch),
16627 "single_arm_hang_snatch" => Some(OlympicLiftExerciseName::SingleArmHangSnatch),
16628 "single_arm_kettlebell_snatch" => {
16629 Some(OlympicLiftExerciseName::SingleArmKettlebellSnatch)
16630 }
16631 "split_jerk" => Some(OlympicLiftExerciseName::SplitJerk),
16632 "squat_clean_and_jerk" => Some(OlympicLiftExerciseName::SquatCleanAndJerk),
16633 "dumbbell_hang_snatch" => Some(OlympicLiftExerciseName::DumbbellHangSnatch),
16634 "dumbbell_power_clean_and_jerk" => {
16635 Some(OlympicLiftExerciseName::DumbbellPowerCleanAndJerk)
16636 }
16637 "dumbbell_power_clean_and_push_press" => {
16638 Some(OlympicLiftExerciseName::DumbbellPowerCleanAndPushPress)
16639 }
16640 "dumbbell_power_clean_and_strict_press" => {
16641 Some(OlympicLiftExerciseName::DumbbellPowerCleanAndStrictPress)
16642 }
16643 "dumbbell_snatch" => Some(OlympicLiftExerciseName::DumbbellSnatch),
16644 "medicine_ball_clean" => Some(OlympicLiftExerciseName::MedicineBallClean),
16645 "clean_and_press" => Some(OlympicLiftExerciseName::CleanAndPress),
16646 "snatch" => Some(OlympicLiftExerciseName::Snatch),
16647 _ => None,
16648 }
16649 }
16650}
16651
16652#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
16653#[repr(u16)]
16654#[non_exhaustive]
16655pub enum PlankExerciseName {
16656 _45DegreePlank = 0,
16657 Weighted45DegreePlank = 1,
16658 _90DegreeStaticHold = 2,
16659 Weighted90DegreeStaticHold = 3,
16660 BearCrawl = 4,
16661 WeightedBearCrawl = 5,
16662 CrossBodyMountainClimber = 6,
16663 WeightedCrossBodyMountainClimber = 7,
16664 ElbowPlankPikeJacks = 8,
16665 WeightedElbowPlankPikeJacks = 9,
16666 ElevatedFeetPlank = 10,
16667 WeightedElevatedFeetPlank = 11,
16668 ElevatorAbs = 12,
16669 WeightedElevatorAbs = 13,
16670 ExtendedPlank = 14,
16671 WeightedExtendedPlank = 15,
16672 FullPlankPasseTwist = 16,
16673 WeightedFullPlankPasseTwist = 17,
16674 InchingElbowPlank = 18,
16675 WeightedInchingElbowPlank = 19,
16676 InchwormToSidePlank = 20,
16677 WeightedInchwormToSidePlank = 21,
16678 KneelingPlank = 22,
16679 WeightedKneelingPlank = 23,
16680 KneelingSidePlankWithLegLift = 24,
16681 WeightedKneelingSidePlankWithLegLift = 25,
16682 LateralRoll = 26,
16683 WeightedLateralRoll = 27,
16684 LyingReversePlank = 28,
16685 WeightedLyingReversePlank = 29,
16686 MedicineBallMountainClimber = 30,
16687 WeightedMedicineBallMountainClimber = 31,
16688 ModifiedMountainClimberAndExtension = 32,
16689 WeightedModifiedMountainClimberAndExtension = 33,
16690 MountainClimber = 34,
16691 WeightedMountainClimber = 35,
16692 MountainClimberOnSlidingDiscs = 36,
16693 WeightedMountainClimberOnSlidingDiscs = 37,
16694 MountainClimberWithFeetOnBosuBall = 38,
16695 WeightedMountainClimberWithFeetOnBosuBall = 39,
16696 MountainClimberWithHandsOnBench = 40,
16697 MountainClimberWithHandsOnSwissBall = 41,
16698 WeightedMountainClimberWithHandsOnSwissBall = 42,
16699 Plank = 43,
16700 PlankJacksWithFeetOnSlidingDiscs = 44,
16701 WeightedPlankJacksWithFeetOnSlidingDiscs = 45,
16702 PlankKneeTwist = 46,
16703 WeightedPlankKneeTwist = 47,
16704 PlankPikeJumps = 48,
16705 WeightedPlankPikeJumps = 49,
16706 PlankPikes = 50,
16707 WeightedPlankPikes = 51,
16708 PlankToStandUp = 52,
16709 WeightedPlankToStandUp = 53,
16710 PlankWithArmRaise = 54,
16711 WeightedPlankWithArmRaise = 55,
16712 PlankWithKneeToElbow = 56,
16713 WeightedPlankWithKneeToElbow = 57,
16714 PlankWithObliqueCrunch = 58,
16715 WeightedPlankWithObliqueCrunch = 59,
16716 PlyometricSidePlank = 60,
16717 WeightedPlyometricSidePlank = 61,
16718 RollingSidePlank = 62,
16719 WeightedRollingSidePlank = 63,
16720 SideKickPlank = 64,
16721 WeightedSideKickPlank = 65,
16722 SidePlank = 66,
16723 WeightedSidePlank = 67,
16724 SidePlankAndRow = 68,
16725 WeightedSidePlankAndRow = 69,
16726 SidePlankLift = 70,
16727 WeightedSidePlankLift = 71,
16728 SidePlankWithElbowOnBosuBall = 72,
16729 WeightedSidePlankWithElbowOnBosuBall = 73,
16730 SidePlankWithFeetOnBench = 74,
16731 WeightedSidePlankWithFeetOnBench = 75,
16732 SidePlankWithKneeCircle = 76,
16733 WeightedSidePlankWithKneeCircle = 77,
16734 SidePlankWithKneeTuck = 78,
16735 WeightedSidePlankWithKneeTuck = 79,
16736 SidePlankWithLegLift = 80,
16737 WeightedSidePlankWithLegLift = 81,
16738 SidePlankWithReachUnder = 82,
16739 WeightedSidePlankWithReachUnder = 83,
16740 SingleLegElevatedFeetPlank = 84,
16741 WeightedSingleLegElevatedFeetPlank = 85,
16742 SingleLegFlexAndExtend = 86,
16743 WeightedSingleLegFlexAndExtend = 87,
16744 SingleLegSidePlank = 88,
16745 WeightedSingleLegSidePlank = 89,
16746 SpidermanPlank = 90,
16747 WeightedSpidermanPlank = 91,
16748 StraightArmPlank = 92,
16749 WeightedStraightArmPlank = 93,
16750 StraightArmPlankWithShoulderTouch = 94,
16751 WeightedStraightArmPlankWithShoulderTouch = 95,
16752 SwissBallPlank = 96,
16753 WeightedSwissBallPlank = 97,
16754 SwissBallPlankLegLift = 98,
16755 WeightedSwissBallPlankLegLift = 99,
16756 SwissBallPlankLegLiftAndHold = 100,
16757 SwissBallPlankWithFeetOnBench = 101,
16758 WeightedSwissBallPlankWithFeetOnBench = 102,
16759 SwissBallProneJackknife = 103,
16760 WeightedSwissBallProneJackknife = 104,
16761 SwissBallSidePlank = 105,
16762 WeightedSwissBallSidePlank = 106,
16763 ThreeWayPlank = 107,
16764 WeightedThreeWayPlank = 108,
16765 TowelPlankAndKneeIn = 109,
16766 WeightedTowelPlankAndKneeIn = 110,
16767 TStabilization = 111,
16768 WeightedTStabilization = 112,
16769 TurkishGetUpToSidePlank = 113,
16770 WeightedTurkishGetUpToSidePlank = 114,
16771 TwoPointPlank = 115,
16772 WeightedTwoPointPlank = 116,
16773 WeightedPlank = 117,
16774 WideStancePlankWithDiagonalArmLift = 118,
16775 WeightedWideStancePlankWithDiagonalArmLift = 119,
16776 WideStancePlankWithDiagonalLegLift = 120,
16777 WeightedWideStancePlankWithDiagonalLegLift = 121,
16778 WideStancePlankWithLegLift = 122,
16779 WeightedWideStancePlankWithLegLift = 123,
16780 WideStancePlankWithOppositeArmAndLegLift = 124,
16781 WeightedMountainClimberWithHandsOnBench = 125,
16782 WeightedSwissBallPlankLegLiftAndHold = 126,
16783 WeightedWideStancePlankWithOppositeArmAndLegLift = 127,
16784 PlankWithFeetOnSwissBall = 128,
16785 SidePlankToPlankWithReachUnder = 129,
16786 BridgeWithGluteLowerLift = 130,
16787 BridgeOneLegBridge = 131,
16788 PlankWithArmVariations = 132,
16789 PlankWithLegLift = 133,
16790 ReversePlankWithLegPull = 134,
16791 RingPlankSprawls = 135,
16792}
16793
16794impl PlankExerciseName {
16795 pub fn as_str(&self) -> &'static str {
16797 match self {
16798 PlankExerciseName::_45DegreePlank => "45_degree_plank",
16799 PlankExerciseName::Weighted45DegreePlank => "weighted_45_degree_plank",
16800 PlankExerciseName::_90DegreeStaticHold => "90_degree_static_hold",
16801 PlankExerciseName::Weighted90DegreeStaticHold => "weighted_90_degree_static_hold",
16802 PlankExerciseName::BearCrawl => "bear_crawl",
16803 PlankExerciseName::WeightedBearCrawl => "weighted_bear_crawl",
16804 PlankExerciseName::CrossBodyMountainClimber => "cross_body_mountain_climber",
16805 PlankExerciseName::WeightedCrossBodyMountainClimber => {
16806 "weighted_cross_body_mountain_climber"
16807 }
16808 PlankExerciseName::ElbowPlankPikeJacks => "elbow_plank_pike_jacks",
16809 PlankExerciseName::WeightedElbowPlankPikeJacks => "weighted_elbow_plank_pike_jacks",
16810 PlankExerciseName::ElevatedFeetPlank => "elevated_feet_plank",
16811 PlankExerciseName::WeightedElevatedFeetPlank => "weighted_elevated_feet_plank",
16812 PlankExerciseName::ElevatorAbs => "elevator_abs",
16813 PlankExerciseName::WeightedElevatorAbs => "weighted_elevator_abs",
16814 PlankExerciseName::ExtendedPlank => "extended_plank",
16815 PlankExerciseName::WeightedExtendedPlank => "weighted_extended_plank",
16816 PlankExerciseName::FullPlankPasseTwist => "full_plank_passe_twist",
16817 PlankExerciseName::WeightedFullPlankPasseTwist => "weighted_full_plank_passe_twist",
16818 PlankExerciseName::InchingElbowPlank => "inching_elbow_plank",
16819 PlankExerciseName::WeightedInchingElbowPlank => "weighted_inching_elbow_plank",
16820 PlankExerciseName::InchwormToSidePlank => "inchworm_to_side_plank",
16821 PlankExerciseName::WeightedInchwormToSidePlank => "weighted_inchworm_to_side_plank",
16822 PlankExerciseName::KneelingPlank => "kneeling_plank",
16823 PlankExerciseName::WeightedKneelingPlank => "weighted_kneeling_plank",
16824 PlankExerciseName::KneelingSidePlankWithLegLift => "kneeling_side_plank_with_leg_lift",
16825 PlankExerciseName::WeightedKneelingSidePlankWithLegLift => {
16826 "weighted_kneeling_side_plank_with_leg_lift"
16827 }
16828 PlankExerciseName::LateralRoll => "lateral_roll",
16829 PlankExerciseName::WeightedLateralRoll => "weighted_lateral_roll",
16830 PlankExerciseName::LyingReversePlank => "lying_reverse_plank",
16831 PlankExerciseName::WeightedLyingReversePlank => "weighted_lying_reverse_plank",
16832 PlankExerciseName::MedicineBallMountainClimber => "medicine_ball_mountain_climber",
16833 PlankExerciseName::WeightedMedicineBallMountainClimber => {
16834 "weighted_medicine_ball_mountain_climber"
16835 }
16836 PlankExerciseName::ModifiedMountainClimberAndExtension => {
16837 "modified_mountain_climber_and_extension"
16838 }
16839 PlankExerciseName::WeightedModifiedMountainClimberAndExtension => {
16840 "weighted_modified_mountain_climber_and_extension"
16841 }
16842 PlankExerciseName::MountainClimber => "mountain_climber",
16843 PlankExerciseName::WeightedMountainClimber => "weighted_mountain_climber",
16844 PlankExerciseName::MountainClimberOnSlidingDiscs => "mountain_climber_on_sliding_discs",
16845 PlankExerciseName::WeightedMountainClimberOnSlidingDiscs => {
16846 "weighted_mountain_climber_on_sliding_discs"
16847 }
16848 PlankExerciseName::MountainClimberWithFeetOnBosuBall => {
16849 "mountain_climber_with_feet_on_bosu_ball"
16850 }
16851 PlankExerciseName::WeightedMountainClimberWithFeetOnBosuBall => {
16852 "weighted_mountain_climber_with_feet_on_bosu_ball"
16853 }
16854 PlankExerciseName::MountainClimberWithHandsOnBench => {
16855 "mountain_climber_with_hands_on_bench"
16856 }
16857 PlankExerciseName::MountainClimberWithHandsOnSwissBall => {
16858 "mountain_climber_with_hands_on_swiss_ball"
16859 }
16860 PlankExerciseName::WeightedMountainClimberWithHandsOnSwissBall => {
16861 "weighted_mountain_climber_with_hands_on_swiss_ball"
16862 }
16863 PlankExerciseName::Plank => "plank",
16864 PlankExerciseName::PlankJacksWithFeetOnSlidingDiscs => {
16865 "plank_jacks_with_feet_on_sliding_discs"
16866 }
16867 PlankExerciseName::WeightedPlankJacksWithFeetOnSlidingDiscs => {
16868 "weighted_plank_jacks_with_feet_on_sliding_discs"
16869 }
16870 PlankExerciseName::PlankKneeTwist => "plank_knee_twist",
16871 PlankExerciseName::WeightedPlankKneeTwist => "weighted_plank_knee_twist",
16872 PlankExerciseName::PlankPikeJumps => "plank_pike_jumps",
16873 PlankExerciseName::WeightedPlankPikeJumps => "weighted_plank_pike_jumps",
16874 PlankExerciseName::PlankPikes => "plank_pikes",
16875 PlankExerciseName::WeightedPlankPikes => "weighted_plank_pikes",
16876 PlankExerciseName::PlankToStandUp => "plank_to_stand_up",
16877 PlankExerciseName::WeightedPlankToStandUp => "weighted_plank_to_stand_up",
16878 PlankExerciseName::PlankWithArmRaise => "plank_with_arm_raise",
16879 PlankExerciseName::WeightedPlankWithArmRaise => "weighted_plank_with_arm_raise",
16880 PlankExerciseName::PlankWithKneeToElbow => "plank_with_knee_to_elbow",
16881 PlankExerciseName::WeightedPlankWithKneeToElbow => "weighted_plank_with_knee_to_elbow",
16882 PlankExerciseName::PlankWithObliqueCrunch => "plank_with_oblique_crunch",
16883 PlankExerciseName::WeightedPlankWithObliqueCrunch => {
16884 "weighted_plank_with_oblique_crunch"
16885 }
16886 PlankExerciseName::PlyometricSidePlank => "plyometric_side_plank",
16887 PlankExerciseName::WeightedPlyometricSidePlank => "weighted_plyometric_side_plank",
16888 PlankExerciseName::RollingSidePlank => "rolling_side_plank",
16889 PlankExerciseName::WeightedRollingSidePlank => "weighted_rolling_side_plank",
16890 PlankExerciseName::SideKickPlank => "side_kick_plank",
16891 PlankExerciseName::WeightedSideKickPlank => "weighted_side_kick_plank",
16892 PlankExerciseName::SidePlank => "side_plank",
16893 PlankExerciseName::WeightedSidePlank => "weighted_side_plank",
16894 PlankExerciseName::SidePlankAndRow => "side_plank_and_row",
16895 PlankExerciseName::WeightedSidePlankAndRow => "weighted_side_plank_and_row",
16896 PlankExerciseName::SidePlankLift => "side_plank_lift",
16897 PlankExerciseName::WeightedSidePlankLift => "weighted_side_plank_lift",
16898 PlankExerciseName::SidePlankWithElbowOnBosuBall => "side_plank_with_elbow_on_bosu_ball",
16899 PlankExerciseName::WeightedSidePlankWithElbowOnBosuBall => {
16900 "weighted_side_plank_with_elbow_on_bosu_ball"
16901 }
16902 PlankExerciseName::SidePlankWithFeetOnBench => "side_plank_with_feet_on_bench",
16903 PlankExerciseName::WeightedSidePlankWithFeetOnBench => {
16904 "weighted_side_plank_with_feet_on_bench"
16905 }
16906 PlankExerciseName::SidePlankWithKneeCircle => "side_plank_with_knee_circle",
16907 PlankExerciseName::WeightedSidePlankWithKneeCircle => {
16908 "weighted_side_plank_with_knee_circle"
16909 }
16910 PlankExerciseName::SidePlankWithKneeTuck => "side_plank_with_knee_tuck",
16911 PlankExerciseName::WeightedSidePlankWithKneeTuck => {
16912 "weighted_side_plank_with_knee_tuck"
16913 }
16914 PlankExerciseName::SidePlankWithLegLift => "side_plank_with_leg_lift",
16915 PlankExerciseName::WeightedSidePlankWithLegLift => "weighted_side_plank_with_leg_lift",
16916 PlankExerciseName::SidePlankWithReachUnder => "side_plank_with_reach_under",
16917 PlankExerciseName::WeightedSidePlankWithReachUnder => {
16918 "weighted_side_plank_with_reach_under"
16919 }
16920 PlankExerciseName::SingleLegElevatedFeetPlank => "single_leg_elevated_feet_plank",
16921 PlankExerciseName::WeightedSingleLegElevatedFeetPlank => {
16922 "weighted_single_leg_elevated_feet_plank"
16923 }
16924 PlankExerciseName::SingleLegFlexAndExtend => "single_leg_flex_and_extend",
16925 PlankExerciseName::WeightedSingleLegFlexAndExtend => {
16926 "weighted_single_leg_flex_and_extend"
16927 }
16928 PlankExerciseName::SingleLegSidePlank => "single_leg_side_plank",
16929 PlankExerciseName::WeightedSingleLegSidePlank => "weighted_single_leg_side_plank",
16930 PlankExerciseName::SpidermanPlank => "spiderman_plank",
16931 PlankExerciseName::WeightedSpidermanPlank => "weighted_spiderman_plank",
16932 PlankExerciseName::StraightArmPlank => "straight_arm_plank",
16933 PlankExerciseName::WeightedStraightArmPlank => "weighted_straight_arm_plank",
16934 PlankExerciseName::StraightArmPlankWithShoulderTouch => {
16935 "straight_arm_plank_with_shoulder_touch"
16936 }
16937 PlankExerciseName::WeightedStraightArmPlankWithShoulderTouch => {
16938 "weighted_straight_arm_plank_with_shoulder_touch"
16939 }
16940 PlankExerciseName::SwissBallPlank => "swiss_ball_plank",
16941 PlankExerciseName::WeightedSwissBallPlank => "weighted_swiss_ball_plank",
16942 PlankExerciseName::SwissBallPlankLegLift => "swiss_ball_plank_leg_lift",
16943 PlankExerciseName::WeightedSwissBallPlankLegLift => {
16944 "weighted_swiss_ball_plank_leg_lift"
16945 }
16946 PlankExerciseName::SwissBallPlankLegLiftAndHold => "swiss_ball_plank_leg_lift_and_hold",
16947 PlankExerciseName::SwissBallPlankWithFeetOnBench => {
16948 "swiss_ball_plank_with_feet_on_bench"
16949 }
16950 PlankExerciseName::WeightedSwissBallPlankWithFeetOnBench => {
16951 "weighted_swiss_ball_plank_with_feet_on_bench"
16952 }
16953 PlankExerciseName::SwissBallProneJackknife => "swiss_ball_prone_jackknife",
16954 PlankExerciseName::WeightedSwissBallProneJackknife => {
16955 "weighted_swiss_ball_prone_jackknife"
16956 }
16957 PlankExerciseName::SwissBallSidePlank => "swiss_ball_side_plank",
16958 PlankExerciseName::WeightedSwissBallSidePlank => "weighted_swiss_ball_side_plank",
16959 PlankExerciseName::ThreeWayPlank => "three_way_plank",
16960 PlankExerciseName::WeightedThreeWayPlank => "weighted_three_way_plank",
16961 PlankExerciseName::TowelPlankAndKneeIn => "towel_plank_and_knee_in",
16962 PlankExerciseName::WeightedTowelPlankAndKneeIn => "weighted_towel_plank_and_knee_in",
16963 PlankExerciseName::TStabilization => "t_stabilization",
16964 PlankExerciseName::WeightedTStabilization => "weighted_t_stabilization",
16965 PlankExerciseName::TurkishGetUpToSidePlank => "turkish_get_up_to_side_plank",
16966 PlankExerciseName::WeightedTurkishGetUpToSidePlank => {
16967 "weighted_turkish_get_up_to_side_plank"
16968 }
16969 PlankExerciseName::TwoPointPlank => "two_point_plank",
16970 PlankExerciseName::WeightedTwoPointPlank => "weighted_two_point_plank",
16971 PlankExerciseName::WeightedPlank => "weighted_plank",
16972 PlankExerciseName::WideStancePlankWithDiagonalArmLift => {
16973 "wide_stance_plank_with_diagonal_arm_lift"
16974 }
16975 PlankExerciseName::WeightedWideStancePlankWithDiagonalArmLift => {
16976 "weighted_wide_stance_plank_with_diagonal_arm_lift"
16977 }
16978 PlankExerciseName::WideStancePlankWithDiagonalLegLift => {
16979 "wide_stance_plank_with_diagonal_leg_lift"
16980 }
16981 PlankExerciseName::WeightedWideStancePlankWithDiagonalLegLift => {
16982 "weighted_wide_stance_plank_with_diagonal_leg_lift"
16983 }
16984 PlankExerciseName::WideStancePlankWithLegLift => "wide_stance_plank_with_leg_lift",
16985 PlankExerciseName::WeightedWideStancePlankWithLegLift => {
16986 "weighted_wide_stance_plank_with_leg_lift"
16987 }
16988 PlankExerciseName::WideStancePlankWithOppositeArmAndLegLift => {
16989 "wide_stance_plank_with_opposite_arm_and_leg_lift"
16990 }
16991 PlankExerciseName::WeightedMountainClimberWithHandsOnBench => {
16992 "weighted_mountain_climber_with_hands_on_bench"
16993 }
16994 PlankExerciseName::WeightedSwissBallPlankLegLiftAndHold => {
16995 "weighted_swiss_ball_plank_leg_lift_and_hold"
16996 }
16997 PlankExerciseName::WeightedWideStancePlankWithOppositeArmAndLegLift => {
16998 "weighted_wide_stance_plank_with_opposite_arm_and_leg_lift"
16999 }
17000 PlankExerciseName::PlankWithFeetOnSwissBall => "plank_with_feet_on_swiss_ball",
17001 PlankExerciseName::SidePlankToPlankWithReachUnder => {
17002 "side_plank_to_plank_with_reach_under"
17003 }
17004 PlankExerciseName::BridgeWithGluteLowerLift => "bridge_with_glute_lower_lift",
17005 PlankExerciseName::BridgeOneLegBridge => "bridge_one_leg_bridge",
17006 PlankExerciseName::PlankWithArmVariations => "plank_with_arm_variations",
17007 PlankExerciseName::PlankWithLegLift => "plank_with_leg_lift",
17008 PlankExerciseName::ReversePlankWithLegPull => "reverse_plank_with_leg_pull",
17009 PlankExerciseName::RingPlankSprawls => "ring_plank_sprawls",
17010 }
17011 }
17012
17013 pub fn from_value(value: u16) -> Option<Self> {
17015 match value {
17016 0 => Some(PlankExerciseName::_45DegreePlank),
17017 1 => Some(PlankExerciseName::Weighted45DegreePlank),
17018 2 => Some(PlankExerciseName::_90DegreeStaticHold),
17019 3 => Some(PlankExerciseName::Weighted90DegreeStaticHold),
17020 4 => Some(PlankExerciseName::BearCrawl),
17021 5 => Some(PlankExerciseName::WeightedBearCrawl),
17022 6 => Some(PlankExerciseName::CrossBodyMountainClimber),
17023 7 => Some(PlankExerciseName::WeightedCrossBodyMountainClimber),
17024 8 => Some(PlankExerciseName::ElbowPlankPikeJacks),
17025 9 => Some(PlankExerciseName::WeightedElbowPlankPikeJacks),
17026 10 => Some(PlankExerciseName::ElevatedFeetPlank),
17027 11 => Some(PlankExerciseName::WeightedElevatedFeetPlank),
17028 12 => Some(PlankExerciseName::ElevatorAbs),
17029 13 => Some(PlankExerciseName::WeightedElevatorAbs),
17030 14 => Some(PlankExerciseName::ExtendedPlank),
17031 15 => Some(PlankExerciseName::WeightedExtendedPlank),
17032 16 => Some(PlankExerciseName::FullPlankPasseTwist),
17033 17 => Some(PlankExerciseName::WeightedFullPlankPasseTwist),
17034 18 => Some(PlankExerciseName::InchingElbowPlank),
17035 19 => Some(PlankExerciseName::WeightedInchingElbowPlank),
17036 20 => Some(PlankExerciseName::InchwormToSidePlank),
17037 21 => Some(PlankExerciseName::WeightedInchwormToSidePlank),
17038 22 => Some(PlankExerciseName::KneelingPlank),
17039 23 => Some(PlankExerciseName::WeightedKneelingPlank),
17040 24 => Some(PlankExerciseName::KneelingSidePlankWithLegLift),
17041 25 => Some(PlankExerciseName::WeightedKneelingSidePlankWithLegLift),
17042 26 => Some(PlankExerciseName::LateralRoll),
17043 27 => Some(PlankExerciseName::WeightedLateralRoll),
17044 28 => Some(PlankExerciseName::LyingReversePlank),
17045 29 => Some(PlankExerciseName::WeightedLyingReversePlank),
17046 30 => Some(PlankExerciseName::MedicineBallMountainClimber),
17047 31 => Some(PlankExerciseName::WeightedMedicineBallMountainClimber),
17048 32 => Some(PlankExerciseName::ModifiedMountainClimberAndExtension),
17049 33 => Some(PlankExerciseName::WeightedModifiedMountainClimberAndExtension),
17050 34 => Some(PlankExerciseName::MountainClimber),
17051 35 => Some(PlankExerciseName::WeightedMountainClimber),
17052 36 => Some(PlankExerciseName::MountainClimberOnSlidingDiscs),
17053 37 => Some(PlankExerciseName::WeightedMountainClimberOnSlidingDiscs),
17054 38 => Some(PlankExerciseName::MountainClimberWithFeetOnBosuBall),
17055 39 => Some(PlankExerciseName::WeightedMountainClimberWithFeetOnBosuBall),
17056 40 => Some(PlankExerciseName::MountainClimberWithHandsOnBench),
17057 41 => Some(PlankExerciseName::MountainClimberWithHandsOnSwissBall),
17058 42 => Some(PlankExerciseName::WeightedMountainClimberWithHandsOnSwissBall),
17059 43 => Some(PlankExerciseName::Plank),
17060 44 => Some(PlankExerciseName::PlankJacksWithFeetOnSlidingDiscs),
17061 45 => Some(PlankExerciseName::WeightedPlankJacksWithFeetOnSlidingDiscs),
17062 46 => Some(PlankExerciseName::PlankKneeTwist),
17063 47 => Some(PlankExerciseName::WeightedPlankKneeTwist),
17064 48 => Some(PlankExerciseName::PlankPikeJumps),
17065 49 => Some(PlankExerciseName::WeightedPlankPikeJumps),
17066 50 => Some(PlankExerciseName::PlankPikes),
17067 51 => Some(PlankExerciseName::WeightedPlankPikes),
17068 52 => Some(PlankExerciseName::PlankToStandUp),
17069 53 => Some(PlankExerciseName::WeightedPlankToStandUp),
17070 54 => Some(PlankExerciseName::PlankWithArmRaise),
17071 55 => Some(PlankExerciseName::WeightedPlankWithArmRaise),
17072 56 => Some(PlankExerciseName::PlankWithKneeToElbow),
17073 57 => Some(PlankExerciseName::WeightedPlankWithKneeToElbow),
17074 58 => Some(PlankExerciseName::PlankWithObliqueCrunch),
17075 59 => Some(PlankExerciseName::WeightedPlankWithObliqueCrunch),
17076 60 => Some(PlankExerciseName::PlyometricSidePlank),
17077 61 => Some(PlankExerciseName::WeightedPlyometricSidePlank),
17078 62 => Some(PlankExerciseName::RollingSidePlank),
17079 63 => Some(PlankExerciseName::WeightedRollingSidePlank),
17080 64 => Some(PlankExerciseName::SideKickPlank),
17081 65 => Some(PlankExerciseName::WeightedSideKickPlank),
17082 66 => Some(PlankExerciseName::SidePlank),
17083 67 => Some(PlankExerciseName::WeightedSidePlank),
17084 68 => Some(PlankExerciseName::SidePlankAndRow),
17085 69 => Some(PlankExerciseName::WeightedSidePlankAndRow),
17086 70 => Some(PlankExerciseName::SidePlankLift),
17087 71 => Some(PlankExerciseName::WeightedSidePlankLift),
17088 72 => Some(PlankExerciseName::SidePlankWithElbowOnBosuBall),
17089 73 => Some(PlankExerciseName::WeightedSidePlankWithElbowOnBosuBall),
17090 74 => Some(PlankExerciseName::SidePlankWithFeetOnBench),
17091 75 => Some(PlankExerciseName::WeightedSidePlankWithFeetOnBench),
17092 76 => Some(PlankExerciseName::SidePlankWithKneeCircle),
17093 77 => Some(PlankExerciseName::WeightedSidePlankWithKneeCircle),
17094 78 => Some(PlankExerciseName::SidePlankWithKneeTuck),
17095 79 => Some(PlankExerciseName::WeightedSidePlankWithKneeTuck),
17096 80 => Some(PlankExerciseName::SidePlankWithLegLift),
17097 81 => Some(PlankExerciseName::WeightedSidePlankWithLegLift),
17098 82 => Some(PlankExerciseName::SidePlankWithReachUnder),
17099 83 => Some(PlankExerciseName::WeightedSidePlankWithReachUnder),
17100 84 => Some(PlankExerciseName::SingleLegElevatedFeetPlank),
17101 85 => Some(PlankExerciseName::WeightedSingleLegElevatedFeetPlank),
17102 86 => Some(PlankExerciseName::SingleLegFlexAndExtend),
17103 87 => Some(PlankExerciseName::WeightedSingleLegFlexAndExtend),
17104 88 => Some(PlankExerciseName::SingleLegSidePlank),
17105 89 => Some(PlankExerciseName::WeightedSingleLegSidePlank),
17106 90 => Some(PlankExerciseName::SpidermanPlank),
17107 91 => Some(PlankExerciseName::WeightedSpidermanPlank),
17108 92 => Some(PlankExerciseName::StraightArmPlank),
17109 93 => Some(PlankExerciseName::WeightedStraightArmPlank),
17110 94 => Some(PlankExerciseName::StraightArmPlankWithShoulderTouch),
17111 95 => Some(PlankExerciseName::WeightedStraightArmPlankWithShoulderTouch),
17112 96 => Some(PlankExerciseName::SwissBallPlank),
17113 97 => Some(PlankExerciseName::WeightedSwissBallPlank),
17114 98 => Some(PlankExerciseName::SwissBallPlankLegLift),
17115 99 => Some(PlankExerciseName::WeightedSwissBallPlankLegLift),
17116 100 => Some(PlankExerciseName::SwissBallPlankLegLiftAndHold),
17117 101 => Some(PlankExerciseName::SwissBallPlankWithFeetOnBench),
17118 102 => Some(PlankExerciseName::WeightedSwissBallPlankWithFeetOnBench),
17119 103 => Some(PlankExerciseName::SwissBallProneJackknife),
17120 104 => Some(PlankExerciseName::WeightedSwissBallProneJackknife),
17121 105 => Some(PlankExerciseName::SwissBallSidePlank),
17122 106 => Some(PlankExerciseName::WeightedSwissBallSidePlank),
17123 107 => Some(PlankExerciseName::ThreeWayPlank),
17124 108 => Some(PlankExerciseName::WeightedThreeWayPlank),
17125 109 => Some(PlankExerciseName::TowelPlankAndKneeIn),
17126 110 => Some(PlankExerciseName::WeightedTowelPlankAndKneeIn),
17127 111 => Some(PlankExerciseName::TStabilization),
17128 112 => Some(PlankExerciseName::WeightedTStabilization),
17129 113 => Some(PlankExerciseName::TurkishGetUpToSidePlank),
17130 114 => Some(PlankExerciseName::WeightedTurkishGetUpToSidePlank),
17131 115 => Some(PlankExerciseName::TwoPointPlank),
17132 116 => Some(PlankExerciseName::WeightedTwoPointPlank),
17133 117 => Some(PlankExerciseName::WeightedPlank),
17134 118 => Some(PlankExerciseName::WideStancePlankWithDiagonalArmLift),
17135 119 => Some(PlankExerciseName::WeightedWideStancePlankWithDiagonalArmLift),
17136 120 => Some(PlankExerciseName::WideStancePlankWithDiagonalLegLift),
17137 121 => Some(PlankExerciseName::WeightedWideStancePlankWithDiagonalLegLift),
17138 122 => Some(PlankExerciseName::WideStancePlankWithLegLift),
17139 123 => Some(PlankExerciseName::WeightedWideStancePlankWithLegLift),
17140 124 => Some(PlankExerciseName::WideStancePlankWithOppositeArmAndLegLift),
17141 125 => Some(PlankExerciseName::WeightedMountainClimberWithHandsOnBench),
17142 126 => Some(PlankExerciseName::WeightedSwissBallPlankLegLiftAndHold),
17143 127 => Some(PlankExerciseName::WeightedWideStancePlankWithOppositeArmAndLegLift),
17144 128 => Some(PlankExerciseName::PlankWithFeetOnSwissBall),
17145 129 => Some(PlankExerciseName::SidePlankToPlankWithReachUnder),
17146 130 => Some(PlankExerciseName::BridgeWithGluteLowerLift),
17147 131 => Some(PlankExerciseName::BridgeOneLegBridge),
17148 132 => Some(PlankExerciseName::PlankWithArmVariations),
17149 133 => Some(PlankExerciseName::PlankWithLegLift),
17150 134 => Some(PlankExerciseName::ReversePlankWithLegPull),
17151 135 => Some(PlankExerciseName::RingPlankSprawls),
17152 _ => None,
17153 }
17154 }
17155
17156 pub fn from_str(name: &str) -> Option<Self> {
17158 match name {
17159 "45_degree_plank" => Some(PlankExerciseName::_45DegreePlank),
17160 "weighted_45_degree_plank" => Some(PlankExerciseName::Weighted45DegreePlank),
17161 "90_degree_static_hold" => Some(PlankExerciseName::_90DegreeStaticHold),
17162 "weighted_90_degree_static_hold" => Some(PlankExerciseName::Weighted90DegreeStaticHold),
17163 "bear_crawl" => Some(PlankExerciseName::BearCrawl),
17164 "weighted_bear_crawl" => Some(PlankExerciseName::WeightedBearCrawl),
17165 "cross_body_mountain_climber" => Some(PlankExerciseName::CrossBodyMountainClimber),
17166 "weighted_cross_body_mountain_climber" => {
17167 Some(PlankExerciseName::WeightedCrossBodyMountainClimber)
17168 }
17169 "elbow_plank_pike_jacks" => Some(PlankExerciseName::ElbowPlankPikeJacks),
17170 "weighted_elbow_plank_pike_jacks" => {
17171 Some(PlankExerciseName::WeightedElbowPlankPikeJacks)
17172 }
17173 "elevated_feet_plank" => Some(PlankExerciseName::ElevatedFeetPlank),
17174 "weighted_elevated_feet_plank" => Some(PlankExerciseName::WeightedElevatedFeetPlank),
17175 "elevator_abs" => Some(PlankExerciseName::ElevatorAbs),
17176 "weighted_elevator_abs" => Some(PlankExerciseName::WeightedElevatorAbs),
17177 "extended_plank" => Some(PlankExerciseName::ExtendedPlank),
17178 "weighted_extended_plank" => Some(PlankExerciseName::WeightedExtendedPlank),
17179 "full_plank_passe_twist" => Some(PlankExerciseName::FullPlankPasseTwist),
17180 "weighted_full_plank_passe_twist" => {
17181 Some(PlankExerciseName::WeightedFullPlankPasseTwist)
17182 }
17183 "inching_elbow_plank" => Some(PlankExerciseName::InchingElbowPlank),
17184 "weighted_inching_elbow_plank" => Some(PlankExerciseName::WeightedInchingElbowPlank),
17185 "inchworm_to_side_plank" => Some(PlankExerciseName::InchwormToSidePlank),
17186 "weighted_inchworm_to_side_plank" => {
17187 Some(PlankExerciseName::WeightedInchwormToSidePlank)
17188 }
17189 "kneeling_plank" => Some(PlankExerciseName::KneelingPlank),
17190 "weighted_kneeling_plank" => Some(PlankExerciseName::WeightedKneelingPlank),
17191 "kneeling_side_plank_with_leg_lift" => {
17192 Some(PlankExerciseName::KneelingSidePlankWithLegLift)
17193 }
17194 "weighted_kneeling_side_plank_with_leg_lift" => {
17195 Some(PlankExerciseName::WeightedKneelingSidePlankWithLegLift)
17196 }
17197 "lateral_roll" => Some(PlankExerciseName::LateralRoll),
17198 "weighted_lateral_roll" => Some(PlankExerciseName::WeightedLateralRoll),
17199 "lying_reverse_plank" => Some(PlankExerciseName::LyingReversePlank),
17200 "weighted_lying_reverse_plank" => Some(PlankExerciseName::WeightedLyingReversePlank),
17201 "medicine_ball_mountain_climber" => {
17202 Some(PlankExerciseName::MedicineBallMountainClimber)
17203 }
17204 "weighted_medicine_ball_mountain_climber" => {
17205 Some(PlankExerciseName::WeightedMedicineBallMountainClimber)
17206 }
17207 "modified_mountain_climber_and_extension" => {
17208 Some(PlankExerciseName::ModifiedMountainClimberAndExtension)
17209 }
17210 "weighted_modified_mountain_climber_and_extension" => {
17211 Some(PlankExerciseName::WeightedModifiedMountainClimberAndExtension)
17212 }
17213 "mountain_climber" => Some(PlankExerciseName::MountainClimber),
17214 "weighted_mountain_climber" => Some(PlankExerciseName::WeightedMountainClimber),
17215 "mountain_climber_on_sliding_discs" => {
17216 Some(PlankExerciseName::MountainClimberOnSlidingDiscs)
17217 }
17218 "weighted_mountain_climber_on_sliding_discs" => {
17219 Some(PlankExerciseName::WeightedMountainClimberOnSlidingDiscs)
17220 }
17221 "mountain_climber_with_feet_on_bosu_ball" => {
17222 Some(PlankExerciseName::MountainClimberWithFeetOnBosuBall)
17223 }
17224 "weighted_mountain_climber_with_feet_on_bosu_ball" => {
17225 Some(PlankExerciseName::WeightedMountainClimberWithFeetOnBosuBall)
17226 }
17227 "mountain_climber_with_hands_on_bench" => {
17228 Some(PlankExerciseName::MountainClimberWithHandsOnBench)
17229 }
17230 "mountain_climber_with_hands_on_swiss_ball" => {
17231 Some(PlankExerciseName::MountainClimberWithHandsOnSwissBall)
17232 }
17233 "weighted_mountain_climber_with_hands_on_swiss_ball" => {
17234 Some(PlankExerciseName::WeightedMountainClimberWithHandsOnSwissBall)
17235 }
17236 "plank" => Some(PlankExerciseName::Plank),
17237 "plank_jacks_with_feet_on_sliding_discs" => {
17238 Some(PlankExerciseName::PlankJacksWithFeetOnSlidingDiscs)
17239 }
17240 "weighted_plank_jacks_with_feet_on_sliding_discs" => {
17241 Some(PlankExerciseName::WeightedPlankJacksWithFeetOnSlidingDiscs)
17242 }
17243 "plank_knee_twist" => Some(PlankExerciseName::PlankKneeTwist),
17244 "weighted_plank_knee_twist" => Some(PlankExerciseName::WeightedPlankKneeTwist),
17245 "plank_pike_jumps" => Some(PlankExerciseName::PlankPikeJumps),
17246 "weighted_plank_pike_jumps" => Some(PlankExerciseName::WeightedPlankPikeJumps),
17247 "plank_pikes" => Some(PlankExerciseName::PlankPikes),
17248 "weighted_plank_pikes" => Some(PlankExerciseName::WeightedPlankPikes),
17249 "plank_to_stand_up" => Some(PlankExerciseName::PlankToStandUp),
17250 "weighted_plank_to_stand_up" => Some(PlankExerciseName::WeightedPlankToStandUp),
17251 "plank_with_arm_raise" => Some(PlankExerciseName::PlankWithArmRaise),
17252 "weighted_plank_with_arm_raise" => Some(PlankExerciseName::WeightedPlankWithArmRaise),
17253 "plank_with_knee_to_elbow" => Some(PlankExerciseName::PlankWithKneeToElbow),
17254 "weighted_plank_with_knee_to_elbow" => {
17255 Some(PlankExerciseName::WeightedPlankWithKneeToElbow)
17256 }
17257 "plank_with_oblique_crunch" => Some(PlankExerciseName::PlankWithObliqueCrunch),
17258 "weighted_plank_with_oblique_crunch" => {
17259 Some(PlankExerciseName::WeightedPlankWithObliqueCrunch)
17260 }
17261 "plyometric_side_plank" => Some(PlankExerciseName::PlyometricSidePlank),
17262 "weighted_plyometric_side_plank" => {
17263 Some(PlankExerciseName::WeightedPlyometricSidePlank)
17264 }
17265 "rolling_side_plank" => Some(PlankExerciseName::RollingSidePlank),
17266 "weighted_rolling_side_plank" => Some(PlankExerciseName::WeightedRollingSidePlank),
17267 "side_kick_plank" => Some(PlankExerciseName::SideKickPlank),
17268 "weighted_side_kick_plank" => Some(PlankExerciseName::WeightedSideKickPlank),
17269 "side_plank" => Some(PlankExerciseName::SidePlank),
17270 "weighted_side_plank" => Some(PlankExerciseName::WeightedSidePlank),
17271 "side_plank_and_row" => Some(PlankExerciseName::SidePlankAndRow),
17272 "weighted_side_plank_and_row" => Some(PlankExerciseName::WeightedSidePlankAndRow),
17273 "side_plank_lift" => Some(PlankExerciseName::SidePlankLift),
17274 "weighted_side_plank_lift" => Some(PlankExerciseName::WeightedSidePlankLift),
17275 "side_plank_with_elbow_on_bosu_ball" => {
17276 Some(PlankExerciseName::SidePlankWithElbowOnBosuBall)
17277 }
17278 "weighted_side_plank_with_elbow_on_bosu_ball" => {
17279 Some(PlankExerciseName::WeightedSidePlankWithElbowOnBosuBall)
17280 }
17281 "side_plank_with_feet_on_bench" => Some(PlankExerciseName::SidePlankWithFeetOnBench),
17282 "weighted_side_plank_with_feet_on_bench" => {
17283 Some(PlankExerciseName::WeightedSidePlankWithFeetOnBench)
17284 }
17285 "side_plank_with_knee_circle" => Some(PlankExerciseName::SidePlankWithKneeCircle),
17286 "weighted_side_plank_with_knee_circle" => {
17287 Some(PlankExerciseName::WeightedSidePlankWithKneeCircle)
17288 }
17289 "side_plank_with_knee_tuck" => Some(PlankExerciseName::SidePlankWithKneeTuck),
17290 "weighted_side_plank_with_knee_tuck" => {
17291 Some(PlankExerciseName::WeightedSidePlankWithKneeTuck)
17292 }
17293 "side_plank_with_leg_lift" => Some(PlankExerciseName::SidePlankWithLegLift),
17294 "weighted_side_plank_with_leg_lift" => {
17295 Some(PlankExerciseName::WeightedSidePlankWithLegLift)
17296 }
17297 "side_plank_with_reach_under" => Some(PlankExerciseName::SidePlankWithReachUnder),
17298 "weighted_side_plank_with_reach_under" => {
17299 Some(PlankExerciseName::WeightedSidePlankWithReachUnder)
17300 }
17301 "single_leg_elevated_feet_plank" => Some(PlankExerciseName::SingleLegElevatedFeetPlank),
17302 "weighted_single_leg_elevated_feet_plank" => {
17303 Some(PlankExerciseName::WeightedSingleLegElevatedFeetPlank)
17304 }
17305 "single_leg_flex_and_extend" => Some(PlankExerciseName::SingleLegFlexAndExtend),
17306 "weighted_single_leg_flex_and_extend" => {
17307 Some(PlankExerciseName::WeightedSingleLegFlexAndExtend)
17308 }
17309 "single_leg_side_plank" => Some(PlankExerciseName::SingleLegSidePlank),
17310 "weighted_single_leg_side_plank" => Some(PlankExerciseName::WeightedSingleLegSidePlank),
17311 "spiderman_plank" => Some(PlankExerciseName::SpidermanPlank),
17312 "weighted_spiderman_plank" => Some(PlankExerciseName::WeightedSpidermanPlank),
17313 "straight_arm_plank" => Some(PlankExerciseName::StraightArmPlank),
17314 "weighted_straight_arm_plank" => Some(PlankExerciseName::WeightedStraightArmPlank),
17315 "straight_arm_plank_with_shoulder_touch" => {
17316 Some(PlankExerciseName::StraightArmPlankWithShoulderTouch)
17317 }
17318 "weighted_straight_arm_plank_with_shoulder_touch" => {
17319 Some(PlankExerciseName::WeightedStraightArmPlankWithShoulderTouch)
17320 }
17321 "swiss_ball_plank" => Some(PlankExerciseName::SwissBallPlank),
17322 "weighted_swiss_ball_plank" => Some(PlankExerciseName::WeightedSwissBallPlank),
17323 "swiss_ball_plank_leg_lift" => Some(PlankExerciseName::SwissBallPlankLegLift),
17324 "weighted_swiss_ball_plank_leg_lift" => {
17325 Some(PlankExerciseName::WeightedSwissBallPlankLegLift)
17326 }
17327 "swiss_ball_plank_leg_lift_and_hold" => {
17328 Some(PlankExerciseName::SwissBallPlankLegLiftAndHold)
17329 }
17330 "swiss_ball_plank_with_feet_on_bench" => {
17331 Some(PlankExerciseName::SwissBallPlankWithFeetOnBench)
17332 }
17333 "weighted_swiss_ball_plank_with_feet_on_bench" => {
17334 Some(PlankExerciseName::WeightedSwissBallPlankWithFeetOnBench)
17335 }
17336 "swiss_ball_prone_jackknife" => Some(PlankExerciseName::SwissBallProneJackknife),
17337 "weighted_swiss_ball_prone_jackknife" => {
17338 Some(PlankExerciseName::WeightedSwissBallProneJackknife)
17339 }
17340 "swiss_ball_side_plank" => Some(PlankExerciseName::SwissBallSidePlank),
17341 "weighted_swiss_ball_side_plank" => Some(PlankExerciseName::WeightedSwissBallSidePlank),
17342 "three_way_plank" => Some(PlankExerciseName::ThreeWayPlank),
17343 "weighted_three_way_plank" => Some(PlankExerciseName::WeightedThreeWayPlank),
17344 "towel_plank_and_knee_in" => Some(PlankExerciseName::TowelPlankAndKneeIn),
17345 "weighted_towel_plank_and_knee_in" => {
17346 Some(PlankExerciseName::WeightedTowelPlankAndKneeIn)
17347 }
17348 "t_stabilization" => Some(PlankExerciseName::TStabilization),
17349 "weighted_t_stabilization" => Some(PlankExerciseName::WeightedTStabilization),
17350 "turkish_get_up_to_side_plank" => Some(PlankExerciseName::TurkishGetUpToSidePlank),
17351 "weighted_turkish_get_up_to_side_plank" => {
17352 Some(PlankExerciseName::WeightedTurkishGetUpToSidePlank)
17353 }
17354 "two_point_plank" => Some(PlankExerciseName::TwoPointPlank),
17355 "weighted_two_point_plank" => Some(PlankExerciseName::WeightedTwoPointPlank),
17356 "weighted_plank" => Some(PlankExerciseName::WeightedPlank),
17357 "wide_stance_plank_with_diagonal_arm_lift" => {
17358 Some(PlankExerciseName::WideStancePlankWithDiagonalArmLift)
17359 }
17360 "weighted_wide_stance_plank_with_diagonal_arm_lift" => {
17361 Some(PlankExerciseName::WeightedWideStancePlankWithDiagonalArmLift)
17362 }
17363 "wide_stance_plank_with_diagonal_leg_lift" => {
17364 Some(PlankExerciseName::WideStancePlankWithDiagonalLegLift)
17365 }
17366 "weighted_wide_stance_plank_with_diagonal_leg_lift" => {
17367 Some(PlankExerciseName::WeightedWideStancePlankWithDiagonalLegLift)
17368 }
17369 "wide_stance_plank_with_leg_lift" => {
17370 Some(PlankExerciseName::WideStancePlankWithLegLift)
17371 }
17372 "weighted_wide_stance_plank_with_leg_lift" => {
17373 Some(PlankExerciseName::WeightedWideStancePlankWithLegLift)
17374 }
17375 "wide_stance_plank_with_opposite_arm_and_leg_lift" => {
17376 Some(PlankExerciseName::WideStancePlankWithOppositeArmAndLegLift)
17377 }
17378 "weighted_mountain_climber_with_hands_on_bench" => {
17379 Some(PlankExerciseName::WeightedMountainClimberWithHandsOnBench)
17380 }
17381 "weighted_swiss_ball_plank_leg_lift_and_hold" => {
17382 Some(PlankExerciseName::WeightedSwissBallPlankLegLiftAndHold)
17383 }
17384 "weighted_wide_stance_plank_with_opposite_arm_and_leg_lift" => {
17385 Some(PlankExerciseName::WeightedWideStancePlankWithOppositeArmAndLegLift)
17386 }
17387 "plank_with_feet_on_swiss_ball" => Some(PlankExerciseName::PlankWithFeetOnSwissBall),
17388 "side_plank_to_plank_with_reach_under" => {
17389 Some(PlankExerciseName::SidePlankToPlankWithReachUnder)
17390 }
17391 "bridge_with_glute_lower_lift" => Some(PlankExerciseName::BridgeWithGluteLowerLift),
17392 "bridge_one_leg_bridge" => Some(PlankExerciseName::BridgeOneLegBridge),
17393 "plank_with_arm_variations" => Some(PlankExerciseName::PlankWithArmVariations),
17394 "plank_with_leg_lift" => Some(PlankExerciseName::PlankWithLegLift),
17395 "reverse_plank_with_leg_pull" => Some(PlankExerciseName::ReversePlankWithLegPull),
17396 "ring_plank_sprawls" => Some(PlankExerciseName::RingPlankSprawls),
17397 _ => None,
17398 }
17399 }
17400}
17401
17402#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
17403#[repr(u16)]
17404#[non_exhaustive]
17405pub enum PlyoExerciseName {
17406 AlternatingJumpLunge = 0,
17407 WeightedAlternatingJumpLunge = 1,
17408 BarbellJumpSquat = 2,
17409 BodyWeightJumpSquat = 3,
17410 WeightedJumpSquat = 4,
17411 CrossKneeStrike = 5,
17412 WeightedCrossKneeStrike = 6,
17413 DepthJump = 7,
17414 WeightedDepthJump = 8,
17415 DumbbellJumpSquat = 9,
17416 DumbbellSplitJump = 10,
17417 FrontKneeStrike = 11,
17418 WeightedFrontKneeStrike = 12,
17419 HighBoxJump = 13,
17420 WeightedHighBoxJump = 14,
17421 IsometricExplosiveBodyWeightJumpSquat = 15,
17422 WeightedIsometricExplosiveJumpSquat = 16,
17423 LateralLeapAndHop = 17,
17424 WeightedLateralLeapAndHop = 18,
17425 LateralPlyoSquats = 19,
17426 WeightedLateralPlyoSquats = 20,
17427 LateralSlide = 21,
17428 WeightedLateralSlide = 22,
17429 MedicineBallOverheadThrows = 23,
17430 MedicineBallSideThrow = 24,
17431 MedicineBallSlam = 25,
17432 SideToSideMedicineBallThrows = 26,
17433 SideToSideShuffleJump = 27,
17434 WeightedSideToSideShuffleJump = 28,
17435 SquatJumpOntoBox = 29,
17436 WeightedSquatJumpOntoBox = 30,
17437 SquatJumpsInAndOut = 31,
17438 WeightedSquatJumpsInAndOut = 32,
17439 BoxJump = 33,
17440 BoxJumpOvers = 34,
17441 BoxJumpOversOverTheBox = 35,
17442 StarJumpSquats = 36,
17443 JumpSquat = 37,
17444}
17445
17446impl PlyoExerciseName {
17447 pub fn as_str(&self) -> &'static str {
17449 match self {
17450 PlyoExerciseName::AlternatingJumpLunge => "alternating_jump_lunge",
17451 PlyoExerciseName::WeightedAlternatingJumpLunge => "weighted_alternating_jump_lunge",
17452 PlyoExerciseName::BarbellJumpSquat => "barbell_jump_squat",
17453 PlyoExerciseName::BodyWeightJumpSquat => "body_weight_jump_squat",
17454 PlyoExerciseName::WeightedJumpSquat => "weighted_jump_squat",
17455 PlyoExerciseName::CrossKneeStrike => "cross_knee_strike",
17456 PlyoExerciseName::WeightedCrossKneeStrike => "weighted_cross_knee_strike",
17457 PlyoExerciseName::DepthJump => "depth_jump",
17458 PlyoExerciseName::WeightedDepthJump => "weighted_depth_jump",
17459 PlyoExerciseName::DumbbellJumpSquat => "dumbbell_jump_squat",
17460 PlyoExerciseName::DumbbellSplitJump => "dumbbell_split_jump",
17461 PlyoExerciseName::FrontKneeStrike => "front_knee_strike",
17462 PlyoExerciseName::WeightedFrontKneeStrike => "weighted_front_knee_strike",
17463 PlyoExerciseName::HighBoxJump => "high_box_jump",
17464 PlyoExerciseName::WeightedHighBoxJump => "weighted_high_box_jump",
17465 PlyoExerciseName::IsometricExplosiveBodyWeightJumpSquat => {
17466 "isometric_explosive_body_weight_jump_squat"
17467 }
17468 PlyoExerciseName::WeightedIsometricExplosiveJumpSquat => {
17469 "weighted_isometric_explosive_jump_squat"
17470 }
17471 PlyoExerciseName::LateralLeapAndHop => "lateral_leap_and_hop",
17472 PlyoExerciseName::WeightedLateralLeapAndHop => "weighted_lateral_leap_and_hop",
17473 PlyoExerciseName::LateralPlyoSquats => "lateral_plyo_squats",
17474 PlyoExerciseName::WeightedLateralPlyoSquats => "weighted_lateral_plyo_squats",
17475 PlyoExerciseName::LateralSlide => "lateral_slide",
17476 PlyoExerciseName::WeightedLateralSlide => "weighted_lateral_slide",
17477 PlyoExerciseName::MedicineBallOverheadThrows => "medicine_ball_overhead_throws",
17478 PlyoExerciseName::MedicineBallSideThrow => "medicine_ball_side_throw",
17479 PlyoExerciseName::MedicineBallSlam => "medicine_ball_slam",
17480 PlyoExerciseName::SideToSideMedicineBallThrows => "side_to_side_medicine_ball_throws",
17481 PlyoExerciseName::SideToSideShuffleJump => "side_to_side_shuffle_jump",
17482 PlyoExerciseName::WeightedSideToSideShuffleJump => "weighted_side_to_side_shuffle_jump",
17483 PlyoExerciseName::SquatJumpOntoBox => "squat_jump_onto_box",
17484 PlyoExerciseName::WeightedSquatJumpOntoBox => "weighted_squat_jump_onto_box",
17485 PlyoExerciseName::SquatJumpsInAndOut => "squat_jumps_in_and_out",
17486 PlyoExerciseName::WeightedSquatJumpsInAndOut => "weighted_squat_jumps_in_and_out",
17487 PlyoExerciseName::BoxJump => "box_jump",
17488 PlyoExerciseName::BoxJumpOvers => "box_jump_overs",
17489 PlyoExerciseName::BoxJumpOversOverTheBox => "box_jump_overs_over_the_box",
17490 PlyoExerciseName::StarJumpSquats => "star_jump_squats",
17491 PlyoExerciseName::JumpSquat => "jump_squat",
17492 }
17493 }
17494
17495 pub fn from_value(value: u16) -> Option<Self> {
17497 match value {
17498 0 => Some(PlyoExerciseName::AlternatingJumpLunge),
17499 1 => Some(PlyoExerciseName::WeightedAlternatingJumpLunge),
17500 2 => Some(PlyoExerciseName::BarbellJumpSquat),
17501 3 => Some(PlyoExerciseName::BodyWeightJumpSquat),
17502 4 => Some(PlyoExerciseName::WeightedJumpSquat),
17503 5 => Some(PlyoExerciseName::CrossKneeStrike),
17504 6 => Some(PlyoExerciseName::WeightedCrossKneeStrike),
17505 7 => Some(PlyoExerciseName::DepthJump),
17506 8 => Some(PlyoExerciseName::WeightedDepthJump),
17507 9 => Some(PlyoExerciseName::DumbbellJumpSquat),
17508 10 => Some(PlyoExerciseName::DumbbellSplitJump),
17509 11 => Some(PlyoExerciseName::FrontKneeStrike),
17510 12 => Some(PlyoExerciseName::WeightedFrontKneeStrike),
17511 13 => Some(PlyoExerciseName::HighBoxJump),
17512 14 => Some(PlyoExerciseName::WeightedHighBoxJump),
17513 15 => Some(PlyoExerciseName::IsometricExplosiveBodyWeightJumpSquat),
17514 16 => Some(PlyoExerciseName::WeightedIsometricExplosiveJumpSquat),
17515 17 => Some(PlyoExerciseName::LateralLeapAndHop),
17516 18 => Some(PlyoExerciseName::WeightedLateralLeapAndHop),
17517 19 => Some(PlyoExerciseName::LateralPlyoSquats),
17518 20 => Some(PlyoExerciseName::WeightedLateralPlyoSquats),
17519 21 => Some(PlyoExerciseName::LateralSlide),
17520 22 => Some(PlyoExerciseName::WeightedLateralSlide),
17521 23 => Some(PlyoExerciseName::MedicineBallOverheadThrows),
17522 24 => Some(PlyoExerciseName::MedicineBallSideThrow),
17523 25 => Some(PlyoExerciseName::MedicineBallSlam),
17524 26 => Some(PlyoExerciseName::SideToSideMedicineBallThrows),
17525 27 => Some(PlyoExerciseName::SideToSideShuffleJump),
17526 28 => Some(PlyoExerciseName::WeightedSideToSideShuffleJump),
17527 29 => Some(PlyoExerciseName::SquatJumpOntoBox),
17528 30 => Some(PlyoExerciseName::WeightedSquatJumpOntoBox),
17529 31 => Some(PlyoExerciseName::SquatJumpsInAndOut),
17530 32 => Some(PlyoExerciseName::WeightedSquatJumpsInAndOut),
17531 33 => Some(PlyoExerciseName::BoxJump),
17532 34 => Some(PlyoExerciseName::BoxJumpOvers),
17533 35 => Some(PlyoExerciseName::BoxJumpOversOverTheBox),
17534 36 => Some(PlyoExerciseName::StarJumpSquats),
17535 37 => Some(PlyoExerciseName::JumpSquat),
17536 _ => None,
17537 }
17538 }
17539
17540 pub fn from_str(name: &str) -> Option<Self> {
17542 match name {
17543 "alternating_jump_lunge" => Some(PlyoExerciseName::AlternatingJumpLunge),
17544 "weighted_alternating_jump_lunge" => {
17545 Some(PlyoExerciseName::WeightedAlternatingJumpLunge)
17546 }
17547 "barbell_jump_squat" => Some(PlyoExerciseName::BarbellJumpSquat),
17548 "body_weight_jump_squat" => Some(PlyoExerciseName::BodyWeightJumpSquat),
17549 "weighted_jump_squat" => Some(PlyoExerciseName::WeightedJumpSquat),
17550 "cross_knee_strike" => Some(PlyoExerciseName::CrossKneeStrike),
17551 "weighted_cross_knee_strike" => Some(PlyoExerciseName::WeightedCrossKneeStrike),
17552 "depth_jump" => Some(PlyoExerciseName::DepthJump),
17553 "weighted_depth_jump" => Some(PlyoExerciseName::WeightedDepthJump),
17554 "dumbbell_jump_squat" => Some(PlyoExerciseName::DumbbellJumpSquat),
17555 "dumbbell_split_jump" => Some(PlyoExerciseName::DumbbellSplitJump),
17556 "front_knee_strike" => Some(PlyoExerciseName::FrontKneeStrike),
17557 "weighted_front_knee_strike" => Some(PlyoExerciseName::WeightedFrontKneeStrike),
17558 "high_box_jump" => Some(PlyoExerciseName::HighBoxJump),
17559 "weighted_high_box_jump" => Some(PlyoExerciseName::WeightedHighBoxJump),
17560 "isometric_explosive_body_weight_jump_squat" => {
17561 Some(PlyoExerciseName::IsometricExplosiveBodyWeightJumpSquat)
17562 }
17563 "weighted_isometric_explosive_jump_squat" => {
17564 Some(PlyoExerciseName::WeightedIsometricExplosiveJumpSquat)
17565 }
17566 "lateral_leap_and_hop" => Some(PlyoExerciseName::LateralLeapAndHop),
17567 "weighted_lateral_leap_and_hop" => Some(PlyoExerciseName::WeightedLateralLeapAndHop),
17568 "lateral_plyo_squats" => Some(PlyoExerciseName::LateralPlyoSquats),
17569 "weighted_lateral_plyo_squats" => Some(PlyoExerciseName::WeightedLateralPlyoSquats),
17570 "lateral_slide" => Some(PlyoExerciseName::LateralSlide),
17571 "weighted_lateral_slide" => Some(PlyoExerciseName::WeightedLateralSlide),
17572 "medicine_ball_overhead_throws" => Some(PlyoExerciseName::MedicineBallOverheadThrows),
17573 "medicine_ball_side_throw" => Some(PlyoExerciseName::MedicineBallSideThrow),
17574 "medicine_ball_slam" => Some(PlyoExerciseName::MedicineBallSlam),
17575 "side_to_side_medicine_ball_throws" => {
17576 Some(PlyoExerciseName::SideToSideMedicineBallThrows)
17577 }
17578 "side_to_side_shuffle_jump" => Some(PlyoExerciseName::SideToSideShuffleJump),
17579 "weighted_side_to_side_shuffle_jump" => {
17580 Some(PlyoExerciseName::WeightedSideToSideShuffleJump)
17581 }
17582 "squat_jump_onto_box" => Some(PlyoExerciseName::SquatJumpOntoBox),
17583 "weighted_squat_jump_onto_box" => Some(PlyoExerciseName::WeightedSquatJumpOntoBox),
17584 "squat_jumps_in_and_out" => Some(PlyoExerciseName::SquatJumpsInAndOut),
17585 "weighted_squat_jumps_in_and_out" => Some(PlyoExerciseName::WeightedSquatJumpsInAndOut),
17586 "box_jump" => Some(PlyoExerciseName::BoxJump),
17587 "box_jump_overs" => Some(PlyoExerciseName::BoxJumpOvers),
17588 "box_jump_overs_over_the_box" => Some(PlyoExerciseName::BoxJumpOversOverTheBox),
17589 "star_jump_squats" => Some(PlyoExerciseName::StarJumpSquats),
17590 "jump_squat" => Some(PlyoExerciseName::JumpSquat),
17591 _ => None,
17592 }
17593 }
17594}
17595
17596#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
17597#[repr(u16)]
17598#[non_exhaustive]
17599pub enum PullUpExerciseName {
17600 BandedPullUps = 0,
17601 _30DegreeLatPulldown = 1,
17602 BandAssistedChinUp = 2,
17603 CloseGripChinUp = 3,
17604 WeightedCloseGripChinUp = 4,
17605 CloseGripLatPulldown = 5,
17606 CrossoverChinUp = 6,
17607 WeightedCrossoverChinUp = 7,
17608 EzBarPullover = 8,
17609 HangingHurdle = 9,
17610 WeightedHangingHurdle = 10,
17611 KneelingLatPulldown = 11,
17612 KneelingUnderhandGripLatPulldown = 12,
17613 LatPulldown = 13,
17614 MixedGripChinUp = 14,
17615 WeightedMixedGripChinUp = 15,
17616 MixedGripPullUp = 16,
17617 WeightedMixedGripPullUp = 17,
17618 ReverseGripPulldown = 18,
17619 StandingCablePullover = 19,
17620 StraightArmPulldown = 20,
17621 SwissBallEzBarPullover = 21,
17622 TowelPullUp = 22,
17623 WeightedTowelPullUp = 23,
17624 WeightedPullUp = 24,
17625 WideGripLatPulldown = 25,
17626 WideGripPullUp = 26,
17627 WeightedWideGripPullUp = 27,
17628 BurpeePullUp = 28,
17629 WeightedBurpeePullUp = 29,
17630 JumpingPullUps = 30,
17631 WeightedJumpingPullUps = 31,
17632 KippingPullUp = 32,
17633 WeightedKippingPullUp = 33,
17634 LPullUp = 34,
17635 WeightedLPullUp = 35,
17636 SuspendedChinUp = 36,
17637 WeightedSuspendedChinUp = 37,
17638 PullUp = 38,
17639 ChinUp = 39,
17640 NeutralGripChinUp = 40,
17641 WeightedChinUp = 41,
17642 BandAssistedPullUp = 42,
17643 NeutralGripPullUp = 43,
17644 WeightedNeutralGripChinUp = 44,
17645 WeightedNeutralGripPullUp = 45,
17646}
17647
17648impl PullUpExerciseName {
17649 pub fn as_str(&self) -> &'static str {
17651 match self {
17652 PullUpExerciseName::BandedPullUps => "banded_pull_ups",
17653 PullUpExerciseName::_30DegreeLatPulldown => "30_degree_lat_pulldown",
17654 PullUpExerciseName::BandAssistedChinUp => "band_assisted_chin_up",
17655 PullUpExerciseName::CloseGripChinUp => "close_grip_chin_up",
17656 PullUpExerciseName::WeightedCloseGripChinUp => "weighted_close_grip_chin_up",
17657 PullUpExerciseName::CloseGripLatPulldown => "close_grip_lat_pulldown",
17658 PullUpExerciseName::CrossoverChinUp => "crossover_chin_up",
17659 PullUpExerciseName::WeightedCrossoverChinUp => "weighted_crossover_chin_up",
17660 PullUpExerciseName::EzBarPullover => "ez_bar_pullover",
17661 PullUpExerciseName::HangingHurdle => "hanging_hurdle",
17662 PullUpExerciseName::WeightedHangingHurdle => "weighted_hanging_hurdle",
17663 PullUpExerciseName::KneelingLatPulldown => "kneeling_lat_pulldown",
17664 PullUpExerciseName::KneelingUnderhandGripLatPulldown => {
17665 "kneeling_underhand_grip_lat_pulldown"
17666 }
17667 PullUpExerciseName::LatPulldown => "lat_pulldown",
17668 PullUpExerciseName::MixedGripChinUp => "mixed_grip_chin_up",
17669 PullUpExerciseName::WeightedMixedGripChinUp => "weighted_mixed_grip_chin_up",
17670 PullUpExerciseName::MixedGripPullUp => "mixed_grip_pull_up",
17671 PullUpExerciseName::WeightedMixedGripPullUp => "weighted_mixed_grip_pull_up",
17672 PullUpExerciseName::ReverseGripPulldown => "reverse_grip_pulldown",
17673 PullUpExerciseName::StandingCablePullover => "standing_cable_pullover",
17674 PullUpExerciseName::StraightArmPulldown => "straight_arm_pulldown",
17675 PullUpExerciseName::SwissBallEzBarPullover => "swiss_ball_ez_bar_pullover",
17676 PullUpExerciseName::TowelPullUp => "towel_pull_up",
17677 PullUpExerciseName::WeightedTowelPullUp => "weighted_towel_pull_up",
17678 PullUpExerciseName::WeightedPullUp => "weighted_pull_up",
17679 PullUpExerciseName::WideGripLatPulldown => "wide_grip_lat_pulldown",
17680 PullUpExerciseName::WideGripPullUp => "wide_grip_pull_up",
17681 PullUpExerciseName::WeightedWideGripPullUp => "weighted_wide_grip_pull_up",
17682 PullUpExerciseName::BurpeePullUp => "burpee_pull_up",
17683 PullUpExerciseName::WeightedBurpeePullUp => "weighted_burpee_pull_up",
17684 PullUpExerciseName::JumpingPullUps => "jumping_pull_ups",
17685 PullUpExerciseName::WeightedJumpingPullUps => "weighted_jumping_pull_ups",
17686 PullUpExerciseName::KippingPullUp => "kipping_pull_up",
17687 PullUpExerciseName::WeightedKippingPullUp => "weighted_kipping_pull_up",
17688 PullUpExerciseName::LPullUp => "l_pull_up",
17689 PullUpExerciseName::WeightedLPullUp => "weighted_l_pull_up",
17690 PullUpExerciseName::SuspendedChinUp => "suspended_chin_up",
17691 PullUpExerciseName::WeightedSuspendedChinUp => "weighted_suspended_chin_up",
17692 PullUpExerciseName::PullUp => "pull_up",
17693 PullUpExerciseName::ChinUp => "chin_up",
17694 PullUpExerciseName::NeutralGripChinUp => "neutral_grip_chin_up",
17695 PullUpExerciseName::WeightedChinUp => "weighted_chin_up",
17696 PullUpExerciseName::BandAssistedPullUp => "band_assisted_pull_up",
17697 PullUpExerciseName::NeutralGripPullUp => "neutral_grip_pull_up",
17698 PullUpExerciseName::WeightedNeutralGripChinUp => "weighted_neutral_grip_chin_up",
17699 PullUpExerciseName::WeightedNeutralGripPullUp => "weighted_neutral_grip_pull_up",
17700 }
17701 }
17702
17703 pub fn from_value(value: u16) -> Option<Self> {
17705 match value {
17706 0 => Some(PullUpExerciseName::BandedPullUps),
17707 1 => Some(PullUpExerciseName::_30DegreeLatPulldown),
17708 2 => Some(PullUpExerciseName::BandAssistedChinUp),
17709 3 => Some(PullUpExerciseName::CloseGripChinUp),
17710 4 => Some(PullUpExerciseName::WeightedCloseGripChinUp),
17711 5 => Some(PullUpExerciseName::CloseGripLatPulldown),
17712 6 => Some(PullUpExerciseName::CrossoverChinUp),
17713 7 => Some(PullUpExerciseName::WeightedCrossoverChinUp),
17714 8 => Some(PullUpExerciseName::EzBarPullover),
17715 9 => Some(PullUpExerciseName::HangingHurdle),
17716 10 => Some(PullUpExerciseName::WeightedHangingHurdle),
17717 11 => Some(PullUpExerciseName::KneelingLatPulldown),
17718 12 => Some(PullUpExerciseName::KneelingUnderhandGripLatPulldown),
17719 13 => Some(PullUpExerciseName::LatPulldown),
17720 14 => Some(PullUpExerciseName::MixedGripChinUp),
17721 15 => Some(PullUpExerciseName::WeightedMixedGripChinUp),
17722 16 => Some(PullUpExerciseName::MixedGripPullUp),
17723 17 => Some(PullUpExerciseName::WeightedMixedGripPullUp),
17724 18 => Some(PullUpExerciseName::ReverseGripPulldown),
17725 19 => Some(PullUpExerciseName::StandingCablePullover),
17726 20 => Some(PullUpExerciseName::StraightArmPulldown),
17727 21 => Some(PullUpExerciseName::SwissBallEzBarPullover),
17728 22 => Some(PullUpExerciseName::TowelPullUp),
17729 23 => Some(PullUpExerciseName::WeightedTowelPullUp),
17730 24 => Some(PullUpExerciseName::WeightedPullUp),
17731 25 => Some(PullUpExerciseName::WideGripLatPulldown),
17732 26 => Some(PullUpExerciseName::WideGripPullUp),
17733 27 => Some(PullUpExerciseName::WeightedWideGripPullUp),
17734 28 => Some(PullUpExerciseName::BurpeePullUp),
17735 29 => Some(PullUpExerciseName::WeightedBurpeePullUp),
17736 30 => Some(PullUpExerciseName::JumpingPullUps),
17737 31 => Some(PullUpExerciseName::WeightedJumpingPullUps),
17738 32 => Some(PullUpExerciseName::KippingPullUp),
17739 33 => Some(PullUpExerciseName::WeightedKippingPullUp),
17740 34 => Some(PullUpExerciseName::LPullUp),
17741 35 => Some(PullUpExerciseName::WeightedLPullUp),
17742 36 => Some(PullUpExerciseName::SuspendedChinUp),
17743 37 => Some(PullUpExerciseName::WeightedSuspendedChinUp),
17744 38 => Some(PullUpExerciseName::PullUp),
17745 39 => Some(PullUpExerciseName::ChinUp),
17746 40 => Some(PullUpExerciseName::NeutralGripChinUp),
17747 41 => Some(PullUpExerciseName::WeightedChinUp),
17748 42 => Some(PullUpExerciseName::BandAssistedPullUp),
17749 43 => Some(PullUpExerciseName::NeutralGripPullUp),
17750 44 => Some(PullUpExerciseName::WeightedNeutralGripChinUp),
17751 45 => Some(PullUpExerciseName::WeightedNeutralGripPullUp),
17752 _ => None,
17753 }
17754 }
17755
17756 pub fn from_str(name: &str) -> Option<Self> {
17758 match name {
17759 "banded_pull_ups" => Some(PullUpExerciseName::BandedPullUps),
17760 "30_degree_lat_pulldown" => Some(PullUpExerciseName::_30DegreeLatPulldown),
17761 "band_assisted_chin_up" => Some(PullUpExerciseName::BandAssistedChinUp),
17762 "close_grip_chin_up" => Some(PullUpExerciseName::CloseGripChinUp),
17763 "weighted_close_grip_chin_up" => Some(PullUpExerciseName::WeightedCloseGripChinUp),
17764 "close_grip_lat_pulldown" => Some(PullUpExerciseName::CloseGripLatPulldown),
17765 "crossover_chin_up" => Some(PullUpExerciseName::CrossoverChinUp),
17766 "weighted_crossover_chin_up" => Some(PullUpExerciseName::WeightedCrossoverChinUp),
17767 "ez_bar_pullover" => Some(PullUpExerciseName::EzBarPullover),
17768 "hanging_hurdle" => Some(PullUpExerciseName::HangingHurdle),
17769 "weighted_hanging_hurdle" => Some(PullUpExerciseName::WeightedHangingHurdle),
17770 "kneeling_lat_pulldown" => Some(PullUpExerciseName::KneelingLatPulldown),
17771 "kneeling_underhand_grip_lat_pulldown" => {
17772 Some(PullUpExerciseName::KneelingUnderhandGripLatPulldown)
17773 }
17774 "lat_pulldown" => Some(PullUpExerciseName::LatPulldown),
17775 "mixed_grip_chin_up" => Some(PullUpExerciseName::MixedGripChinUp),
17776 "weighted_mixed_grip_chin_up" => Some(PullUpExerciseName::WeightedMixedGripChinUp),
17777 "mixed_grip_pull_up" => Some(PullUpExerciseName::MixedGripPullUp),
17778 "weighted_mixed_grip_pull_up" => Some(PullUpExerciseName::WeightedMixedGripPullUp),
17779 "reverse_grip_pulldown" => Some(PullUpExerciseName::ReverseGripPulldown),
17780 "standing_cable_pullover" => Some(PullUpExerciseName::StandingCablePullover),
17781 "straight_arm_pulldown" => Some(PullUpExerciseName::StraightArmPulldown),
17782 "swiss_ball_ez_bar_pullover" => Some(PullUpExerciseName::SwissBallEzBarPullover),
17783 "towel_pull_up" => Some(PullUpExerciseName::TowelPullUp),
17784 "weighted_towel_pull_up" => Some(PullUpExerciseName::WeightedTowelPullUp),
17785 "weighted_pull_up" => Some(PullUpExerciseName::WeightedPullUp),
17786 "wide_grip_lat_pulldown" => Some(PullUpExerciseName::WideGripLatPulldown),
17787 "wide_grip_pull_up" => Some(PullUpExerciseName::WideGripPullUp),
17788 "weighted_wide_grip_pull_up" => Some(PullUpExerciseName::WeightedWideGripPullUp),
17789 "burpee_pull_up" => Some(PullUpExerciseName::BurpeePullUp),
17790 "weighted_burpee_pull_up" => Some(PullUpExerciseName::WeightedBurpeePullUp),
17791 "jumping_pull_ups" => Some(PullUpExerciseName::JumpingPullUps),
17792 "weighted_jumping_pull_ups" => Some(PullUpExerciseName::WeightedJumpingPullUps),
17793 "kipping_pull_up" => Some(PullUpExerciseName::KippingPullUp),
17794 "weighted_kipping_pull_up" => Some(PullUpExerciseName::WeightedKippingPullUp),
17795 "l_pull_up" => Some(PullUpExerciseName::LPullUp),
17796 "weighted_l_pull_up" => Some(PullUpExerciseName::WeightedLPullUp),
17797 "suspended_chin_up" => Some(PullUpExerciseName::SuspendedChinUp),
17798 "weighted_suspended_chin_up" => Some(PullUpExerciseName::WeightedSuspendedChinUp),
17799 "pull_up" => Some(PullUpExerciseName::PullUp),
17800 "chin_up" => Some(PullUpExerciseName::ChinUp),
17801 "neutral_grip_chin_up" => Some(PullUpExerciseName::NeutralGripChinUp),
17802 "weighted_chin_up" => Some(PullUpExerciseName::WeightedChinUp),
17803 "band_assisted_pull_up" => Some(PullUpExerciseName::BandAssistedPullUp),
17804 "neutral_grip_pull_up" => Some(PullUpExerciseName::NeutralGripPullUp),
17805 "weighted_neutral_grip_chin_up" => Some(PullUpExerciseName::WeightedNeutralGripChinUp),
17806 "weighted_neutral_grip_pull_up" => Some(PullUpExerciseName::WeightedNeutralGripPullUp),
17807 _ => None,
17808 }
17809 }
17810}
17811
17812#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
17813#[repr(u16)]
17814#[non_exhaustive]
17815pub enum PushUpExerciseName {
17816 ChestPressWithBand = 0,
17817 AlternatingStaggeredPushUp = 1,
17818 WeightedAlternatingStaggeredPushUp = 2,
17819 AlternatingHandsMedicineBallPushUp = 3,
17820 WeightedAlternatingHandsMedicineBallPushUp = 4,
17821 BosuBallPushUp = 5,
17822 WeightedBosuBallPushUp = 6,
17823 ClappingPushUp = 7,
17824 WeightedClappingPushUp = 8,
17825 CloseGripMedicineBallPushUp = 9,
17826 WeightedCloseGripMedicineBallPushUp = 10,
17827 CloseHandsPushUp = 11,
17828 WeightedCloseHandsPushUp = 12,
17829 DeclinePushUp = 13,
17830 WeightedDeclinePushUp = 14,
17831 DiamondPushUp = 15,
17832 WeightedDiamondPushUp = 16,
17833 ExplosiveCrossoverPushUp = 17,
17834 WeightedExplosiveCrossoverPushUp = 18,
17835 ExplosivePushUp = 19,
17836 WeightedExplosivePushUp = 20,
17837 FeetElevatedSideToSidePushUp = 21,
17838 WeightedFeetElevatedSideToSidePushUp = 22,
17839 HandReleasePushUp = 23,
17840 WeightedHandReleasePushUp = 24,
17841 HandstandPushUp = 25,
17842 WeightedHandstandPushUp = 26,
17843 InclinePushUp = 27,
17844 WeightedInclinePushUp = 28,
17845 IsometricExplosivePushUp = 29,
17846 WeightedIsometricExplosivePushUp = 30,
17847 JudoPushUp = 31,
17848 WeightedJudoPushUp = 32,
17849 KneelingPushUp = 33,
17850 WeightedKneelingPushUp = 34,
17851 MedicineBallChestPass = 35,
17852 MedicineBallPushUp = 36,
17853 WeightedMedicineBallPushUp = 37,
17854 OneArmPushUp = 38,
17855 WeightedOneArmPushUp = 39,
17856 WeightedPushUp = 40,
17857 PushUpAndRow = 41,
17858 WeightedPushUpAndRow = 42,
17859 PushUpPlus = 43,
17860 WeightedPushUpPlus = 44,
17861 PushUpWithFeetOnSwissBall = 45,
17862 WeightedPushUpWithFeetOnSwissBall = 46,
17863 PushUpWithOneHandOnMedicineBall = 47,
17864 WeightedPushUpWithOneHandOnMedicineBall = 48,
17865 ShoulderPushUp = 49,
17866 WeightedShoulderPushUp = 50,
17867 SingleArmMedicineBallPushUp = 51,
17868 WeightedSingleArmMedicineBallPushUp = 52,
17869 SpidermanPushUp = 53,
17870 WeightedSpidermanPushUp = 54,
17871 StackedFeetPushUp = 55,
17872 WeightedStackedFeetPushUp = 56,
17873 StaggeredHandsPushUp = 57,
17874 WeightedStaggeredHandsPushUp = 58,
17875 SuspendedPushUp = 59,
17876 WeightedSuspendedPushUp = 60,
17877 SwissBallPushUp = 61,
17878 WeightedSwissBallPushUp = 62,
17879 SwissBallPushUpPlus = 63,
17880 WeightedSwissBallPushUpPlus = 64,
17881 TPushUp = 65,
17882 WeightedTPushUp = 66,
17883 TripleStopPushUp = 67,
17884 WeightedTripleStopPushUp = 68,
17885 WideHandsPushUp = 69,
17886 WeightedWideHandsPushUp = 70,
17887 ParalletteHandstandPushUp = 71,
17888 WeightedParalletteHandstandPushUp = 72,
17889 RingHandstandPushUp = 73,
17890 WeightedRingHandstandPushUp = 74,
17891 RingPushUp = 75,
17892 WeightedRingPushUp = 76,
17893 PushUp = 77,
17894 PilatesPushup = 78,
17895 DynamicPushUp = 79,
17896 KippingHandstandPushUp = 80,
17897 ShoulderTappingPushUp = 81,
17898 BicepsPushUp = 82,
17899 HinduPushUp = 83,
17900 PikePushUp = 84,
17901 WideGripPushUp = 85,
17902 WeightedBicepsPushUp = 86,
17903 WeightedHinduPushUp = 87,
17904 WeightedPikePushUp = 88,
17905 KippingParalletteHandstandPushUp = 89,
17906 WallPushUp = 90,
17907}
17908
17909impl PushUpExerciseName {
17910 pub fn as_str(&self) -> &'static str {
17912 match self {
17913 PushUpExerciseName::ChestPressWithBand => "chest_press_with_band",
17914 PushUpExerciseName::AlternatingStaggeredPushUp => "alternating_staggered_push_up",
17915 PushUpExerciseName::WeightedAlternatingStaggeredPushUp => {
17916 "weighted_alternating_staggered_push_up"
17917 }
17918 PushUpExerciseName::AlternatingHandsMedicineBallPushUp => {
17919 "alternating_hands_medicine_ball_push_up"
17920 }
17921 PushUpExerciseName::WeightedAlternatingHandsMedicineBallPushUp => {
17922 "weighted_alternating_hands_medicine_ball_push_up"
17923 }
17924 PushUpExerciseName::BosuBallPushUp => "bosu_ball_push_up",
17925 PushUpExerciseName::WeightedBosuBallPushUp => "weighted_bosu_ball_push_up",
17926 PushUpExerciseName::ClappingPushUp => "clapping_push_up",
17927 PushUpExerciseName::WeightedClappingPushUp => "weighted_clapping_push_up",
17928 PushUpExerciseName::CloseGripMedicineBallPushUp => "close_grip_medicine_ball_push_up",
17929 PushUpExerciseName::WeightedCloseGripMedicineBallPushUp => {
17930 "weighted_close_grip_medicine_ball_push_up"
17931 }
17932 PushUpExerciseName::CloseHandsPushUp => "close_hands_push_up",
17933 PushUpExerciseName::WeightedCloseHandsPushUp => "weighted_close_hands_push_up",
17934 PushUpExerciseName::DeclinePushUp => "decline_push_up",
17935 PushUpExerciseName::WeightedDeclinePushUp => "weighted_decline_push_up",
17936 PushUpExerciseName::DiamondPushUp => "diamond_push_up",
17937 PushUpExerciseName::WeightedDiamondPushUp => "weighted_diamond_push_up",
17938 PushUpExerciseName::ExplosiveCrossoverPushUp => "explosive_crossover_push_up",
17939 PushUpExerciseName::WeightedExplosiveCrossoverPushUp => {
17940 "weighted_explosive_crossover_push_up"
17941 }
17942 PushUpExerciseName::ExplosivePushUp => "explosive_push_up",
17943 PushUpExerciseName::WeightedExplosivePushUp => "weighted_explosive_push_up",
17944 PushUpExerciseName::FeetElevatedSideToSidePushUp => {
17945 "feet_elevated_side_to_side_push_up"
17946 }
17947 PushUpExerciseName::WeightedFeetElevatedSideToSidePushUp => {
17948 "weighted_feet_elevated_side_to_side_push_up"
17949 }
17950 PushUpExerciseName::HandReleasePushUp => "hand_release_push_up",
17951 PushUpExerciseName::WeightedHandReleasePushUp => "weighted_hand_release_push_up",
17952 PushUpExerciseName::HandstandPushUp => "handstand_push_up",
17953 PushUpExerciseName::WeightedHandstandPushUp => "weighted_handstand_push_up",
17954 PushUpExerciseName::InclinePushUp => "incline_push_up",
17955 PushUpExerciseName::WeightedInclinePushUp => "weighted_incline_push_up",
17956 PushUpExerciseName::IsometricExplosivePushUp => "isometric_explosive_push_up",
17957 PushUpExerciseName::WeightedIsometricExplosivePushUp => {
17958 "weighted_isometric_explosive_push_up"
17959 }
17960 PushUpExerciseName::JudoPushUp => "judo_push_up",
17961 PushUpExerciseName::WeightedJudoPushUp => "weighted_judo_push_up",
17962 PushUpExerciseName::KneelingPushUp => "kneeling_push_up",
17963 PushUpExerciseName::WeightedKneelingPushUp => "weighted_kneeling_push_up",
17964 PushUpExerciseName::MedicineBallChestPass => "medicine_ball_chest_pass",
17965 PushUpExerciseName::MedicineBallPushUp => "medicine_ball_push_up",
17966 PushUpExerciseName::WeightedMedicineBallPushUp => "weighted_medicine_ball_push_up",
17967 PushUpExerciseName::OneArmPushUp => "one_arm_push_up",
17968 PushUpExerciseName::WeightedOneArmPushUp => "weighted_one_arm_push_up",
17969 PushUpExerciseName::WeightedPushUp => "weighted_push_up",
17970 PushUpExerciseName::PushUpAndRow => "push_up_and_row",
17971 PushUpExerciseName::WeightedPushUpAndRow => "weighted_push_up_and_row",
17972 PushUpExerciseName::PushUpPlus => "push_up_plus",
17973 PushUpExerciseName::WeightedPushUpPlus => "weighted_push_up_plus",
17974 PushUpExerciseName::PushUpWithFeetOnSwissBall => "push_up_with_feet_on_swiss_ball",
17975 PushUpExerciseName::WeightedPushUpWithFeetOnSwissBall => {
17976 "weighted_push_up_with_feet_on_swiss_ball"
17977 }
17978 PushUpExerciseName::PushUpWithOneHandOnMedicineBall => {
17979 "push_up_with_one_hand_on_medicine_ball"
17980 }
17981 PushUpExerciseName::WeightedPushUpWithOneHandOnMedicineBall => {
17982 "weighted_push_up_with_one_hand_on_medicine_ball"
17983 }
17984 PushUpExerciseName::ShoulderPushUp => "shoulder_push_up",
17985 PushUpExerciseName::WeightedShoulderPushUp => "weighted_shoulder_push_up",
17986 PushUpExerciseName::SingleArmMedicineBallPushUp => "single_arm_medicine_ball_push_up",
17987 PushUpExerciseName::WeightedSingleArmMedicineBallPushUp => {
17988 "weighted_single_arm_medicine_ball_push_up"
17989 }
17990 PushUpExerciseName::SpidermanPushUp => "spiderman_push_up",
17991 PushUpExerciseName::WeightedSpidermanPushUp => "weighted_spiderman_push_up",
17992 PushUpExerciseName::StackedFeetPushUp => "stacked_feet_push_up",
17993 PushUpExerciseName::WeightedStackedFeetPushUp => "weighted_stacked_feet_push_up",
17994 PushUpExerciseName::StaggeredHandsPushUp => "staggered_hands_push_up",
17995 PushUpExerciseName::WeightedStaggeredHandsPushUp => "weighted_staggered_hands_push_up",
17996 PushUpExerciseName::SuspendedPushUp => "suspended_push_up",
17997 PushUpExerciseName::WeightedSuspendedPushUp => "weighted_suspended_push_up",
17998 PushUpExerciseName::SwissBallPushUp => "swiss_ball_push_up",
17999 PushUpExerciseName::WeightedSwissBallPushUp => "weighted_swiss_ball_push_up",
18000 PushUpExerciseName::SwissBallPushUpPlus => "swiss_ball_push_up_plus",
18001 PushUpExerciseName::WeightedSwissBallPushUpPlus => "weighted_swiss_ball_push_up_plus",
18002 PushUpExerciseName::TPushUp => "t_push_up",
18003 PushUpExerciseName::WeightedTPushUp => "weighted_t_push_up",
18004 PushUpExerciseName::TripleStopPushUp => "triple_stop_push_up",
18005 PushUpExerciseName::WeightedTripleStopPushUp => "weighted_triple_stop_push_up",
18006 PushUpExerciseName::WideHandsPushUp => "wide_hands_push_up",
18007 PushUpExerciseName::WeightedWideHandsPushUp => "weighted_wide_hands_push_up",
18008 PushUpExerciseName::ParalletteHandstandPushUp => "parallette_handstand_push_up",
18009 PushUpExerciseName::WeightedParalletteHandstandPushUp => {
18010 "weighted_parallette_handstand_push_up"
18011 }
18012 PushUpExerciseName::RingHandstandPushUp => "ring_handstand_push_up",
18013 PushUpExerciseName::WeightedRingHandstandPushUp => "weighted_ring_handstand_push_up",
18014 PushUpExerciseName::RingPushUp => "ring_push_up",
18015 PushUpExerciseName::WeightedRingPushUp => "weighted_ring_push_up",
18016 PushUpExerciseName::PushUp => "push_up",
18017 PushUpExerciseName::PilatesPushup => "pilates_pushup",
18018 PushUpExerciseName::DynamicPushUp => "dynamic_push_up",
18019 PushUpExerciseName::KippingHandstandPushUp => "kipping_handstand_push_up",
18020 PushUpExerciseName::ShoulderTappingPushUp => "shoulder_tapping_push_up",
18021 PushUpExerciseName::BicepsPushUp => "biceps_push_up",
18022 PushUpExerciseName::HinduPushUp => "hindu_push_up",
18023 PushUpExerciseName::PikePushUp => "pike_push_up",
18024 PushUpExerciseName::WideGripPushUp => "wide_grip_push_up",
18025 PushUpExerciseName::WeightedBicepsPushUp => "weighted_biceps_push_up",
18026 PushUpExerciseName::WeightedHinduPushUp => "weighted_hindu_push_up",
18027 PushUpExerciseName::WeightedPikePushUp => "weighted_pike_push_up",
18028 PushUpExerciseName::KippingParalletteHandstandPushUp => {
18029 "kipping_parallette_handstand_push_up"
18030 }
18031 PushUpExerciseName::WallPushUp => "wall_push_up",
18032 }
18033 }
18034
18035 pub fn from_value(value: u16) -> Option<Self> {
18037 match value {
18038 0 => Some(PushUpExerciseName::ChestPressWithBand),
18039 1 => Some(PushUpExerciseName::AlternatingStaggeredPushUp),
18040 2 => Some(PushUpExerciseName::WeightedAlternatingStaggeredPushUp),
18041 3 => Some(PushUpExerciseName::AlternatingHandsMedicineBallPushUp),
18042 4 => Some(PushUpExerciseName::WeightedAlternatingHandsMedicineBallPushUp),
18043 5 => Some(PushUpExerciseName::BosuBallPushUp),
18044 6 => Some(PushUpExerciseName::WeightedBosuBallPushUp),
18045 7 => Some(PushUpExerciseName::ClappingPushUp),
18046 8 => Some(PushUpExerciseName::WeightedClappingPushUp),
18047 9 => Some(PushUpExerciseName::CloseGripMedicineBallPushUp),
18048 10 => Some(PushUpExerciseName::WeightedCloseGripMedicineBallPushUp),
18049 11 => Some(PushUpExerciseName::CloseHandsPushUp),
18050 12 => Some(PushUpExerciseName::WeightedCloseHandsPushUp),
18051 13 => Some(PushUpExerciseName::DeclinePushUp),
18052 14 => Some(PushUpExerciseName::WeightedDeclinePushUp),
18053 15 => Some(PushUpExerciseName::DiamondPushUp),
18054 16 => Some(PushUpExerciseName::WeightedDiamondPushUp),
18055 17 => Some(PushUpExerciseName::ExplosiveCrossoverPushUp),
18056 18 => Some(PushUpExerciseName::WeightedExplosiveCrossoverPushUp),
18057 19 => Some(PushUpExerciseName::ExplosivePushUp),
18058 20 => Some(PushUpExerciseName::WeightedExplosivePushUp),
18059 21 => Some(PushUpExerciseName::FeetElevatedSideToSidePushUp),
18060 22 => Some(PushUpExerciseName::WeightedFeetElevatedSideToSidePushUp),
18061 23 => Some(PushUpExerciseName::HandReleasePushUp),
18062 24 => Some(PushUpExerciseName::WeightedHandReleasePushUp),
18063 25 => Some(PushUpExerciseName::HandstandPushUp),
18064 26 => Some(PushUpExerciseName::WeightedHandstandPushUp),
18065 27 => Some(PushUpExerciseName::InclinePushUp),
18066 28 => Some(PushUpExerciseName::WeightedInclinePushUp),
18067 29 => Some(PushUpExerciseName::IsometricExplosivePushUp),
18068 30 => Some(PushUpExerciseName::WeightedIsometricExplosivePushUp),
18069 31 => Some(PushUpExerciseName::JudoPushUp),
18070 32 => Some(PushUpExerciseName::WeightedJudoPushUp),
18071 33 => Some(PushUpExerciseName::KneelingPushUp),
18072 34 => Some(PushUpExerciseName::WeightedKneelingPushUp),
18073 35 => Some(PushUpExerciseName::MedicineBallChestPass),
18074 36 => Some(PushUpExerciseName::MedicineBallPushUp),
18075 37 => Some(PushUpExerciseName::WeightedMedicineBallPushUp),
18076 38 => Some(PushUpExerciseName::OneArmPushUp),
18077 39 => Some(PushUpExerciseName::WeightedOneArmPushUp),
18078 40 => Some(PushUpExerciseName::WeightedPushUp),
18079 41 => Some(PushUpExerciseName::PushUpAndRow),
18080 42 => Some(PushUpExerciseName::WeightedPushUpAndRow),
18081 43 => Some(PushUpExerciseName::PushUpPlus),
18082 44 => Some(PushUpExerciseName::WeightedPushUpPlus),
18083 45 => Some(PushUpExerciseName::PushUpWithFeetOnSwissBall),
18084 46 => Some(PushUpExerciseName::WeightedPushUpWithFeetOnSwissBall),
18085 47 => Some(PushUpExerciseName::PushUpWithOneHandOnMedicineBall),
18086 48 => Some(PushUpExerciseName::WeightedPushUpWithOneHandOnMedicineBall),
18087 49 => Some(PushUpExerciseName::ShoulderPushUp),
18088 50 => Some(PushUpExerciseName::WeightedShoulderPushUp),
18089 51 => Some(PushUpExerciseName::SingleArmMedicineBallPushUp),
18090 52 => Some(PushUpExerciseName::WeightedSingleArmMedicineBallPushUp),
18091 53 => Some(PushUpExerciseName::SpidermanPushUp),
18092 54 => Some(PushUpExerciseName::WeightedSpidermanPushUp),
18093 55 => Some(PushUpExerciseName::StackedFeetPushUp),
18094 56 => Some(PushUpExerciseName::WeightedStackedFeetPushUp),
18095 57 => Some(PushUpExerciseName::StaggeredHandsPushUp),
18096 58 => Some(PushUpExerciseName::WeightedStaggeredHandsPushUp),
18097 59 => Some(PushUpExerciseName::SuspendedPushUp),
18098 60 => Some(PushUpExerciseName::WeightedSuspendedPushUp),
18099 61 => Some(PushUpExerciseName::SwissBallPushUp),
18100 62 => Some(PushUpExerciseName::WeightedSwissBallPushUp),
18101 63 => Some(PushUpExerciseName::SwissBallPushUpPlus),
18102 64 => Some(PushUpExerciseName::WeightedSwissBallPushUpPlus),
18103 65 => Some(PushUpExerciseName::TPushUp),
18104 66 => Some(PushUpExerciseName::WeightedTPushUp),
18105 67 => Some(PushUpExerciseName::TripleStopPushUp),
18106 68 => Some(PushUpExerciseName::WeightedTripleStopPushUp),
18107 69 => Some(PushUpExerciseName::WideHandsPushUp),
18108 70 => Some(PushUpExerciseName::WeightedWideHandsPushUp),
18109 71 => Some(PushUpExerciseName::ParalletteHandstandPushUp),
18110 72 => Some(PushUpExerciseName::WeightedParalletteHandstandPushUp),
18111 73 => Some(PushUpExerciseName::RingHandstandPushUp),
18112 74 => Some(PushUpExerciseName::WeightedRingHandstandPushUp),
18113 75 => Some(PushUpExerciseName::RingPushUp),
18114 76 => Some(PushUpExerciseName::WeightedRingPushUp),
18115 77 => Some(PushUpExerciseName::PushUp),
18116 78 => Some(PushUpExerciseName::PilatesPushup),
18117 79 => Some(PushUpExerciseName::DynamicPushUp),
18118 80 => Some(PushUpExerciseName::KippingHandstandPushUp),
18119 81 => Some(PushUpExerciseName::ShoulderTappingPushUp),
18120 82 => Some(PushUpExerciseName::BicepsPushUp),
18121 83 => Some(PushUpExerciseName::HinduPushUp),
18122 84 => Some(PushUpExerciseName::PikePushUp),
18123 85 => Some(PushUpExerciseName::WideGripPushUp),
18124 86 => Some(PushUpExerciseName::WeightedBicepsPushUp),
18125 87 => Some(PushUpExerciseName::WeightedHinduPushUp),
18126 88 => Some(PushUpExerciseName::WeightedPikePushUp),
18127 89 => Some(PushUpExerciseName::KippingParalletteHandstandPushUp),
18128 90 => Some(PushUpExerciseName::WallPushUp),
18129 _ => None,
18130 }
18131 }
18132
18133 pub fn from_str(name: &str) -> Option<Self> {
18135 match name {
18136 "chest_press_with_band" => Some(PushUpExerciseName::ChestPressWithBand),
18137 "alternating_staggered_push_up" => Some(PushUpExerciseName::AlternatingStaggeredPushUp),
18138 "weighted_alternating_staggered_push_up" => {
18139 Some(PushUpExerciseName::WeightedAlternatingStaggeredPushUp)
18140 }
18141 "alternating_hands_medicine_ball_push_up" => {
18142 Some(PushUpExerciseName::AlternatingHandsMedicineBallPushUp)
18143 }
18144 "weighted_alternating_hands_medicine_ball_push_up" => {
18145 Some(PushUpExerciseName::WeightedAlternatingHandsMedicineBallPushUp)
18146 }
18147 "bosu_ball_push_up" => Some(PushUpExerciseName::BosuBallPushUp),
18148 "weighted_bosu_ball_push_up" => Some(PushUpExerciseName::WeightedBosuBallPushUp),
18149 "clapping_push_up" => Some(PushUpExerciseName::ClappingPushUp),
18150 "weighted_clapping_push_up" => Some(PushUpExerciseName::WeightedClappingPushUp),
18151 "close_grip_medicine_ball_push_up" => {
18152 Some(PushUpExerciseName::CloseGripMedicineBallPushUp)
18153 }
18154 "weighted_close_grip_medicine_ball_push_up" => {
18155 Some(PushUpExerciseName::WeightedCloseGripMedicineBallPushUp)
18156 }
18157 "close_hands_push_up" => Some(PushUpExerciseName::CloseHandsPushUp),
18158 "weighted_close_hands_push_up" => Some(PushUpExerciseName::WeightedCloseHandsPushUp),
18159 "decline_push_up" => Some(PushUpExerciseName::DeclinePushUp),
18160 "weighted_decline_push_up" => Some(PushUpExerciseName::WeightedDeclinePushUp),
18161 "diamond_push_up" => Some(PushUpExerciseName::DiamondPushUp),
18162 "weighted_diamond_push_up" => Some(PushUpExerciseName::WeightedDiamondPushUp),
18163 "explosive_crossover_push_up" => Some(PushUpExerciseName::ExplosiveCrossoverPushUp),
18164 "weighted_explosive_crossover_push_up" => {
18165 Some(PushUpExerciseName::WeightedExplosiveCrossoverPushUp)
18166 }
18167 "explosive_push_up" => Some(PushUpExerciseName::ExplosivePushUp),
18168 "weighted_explosive_push_up" => Some(PushUpExerciseName::WeightedExplosivePushUp),
18169 "feet_elevated_side_to_side_push_up" => {
18170 Some(PushUpExerciseName::FeetElevatedSideToSidePushUp)
18171 }
18172 "weighted_feet_elevated_side_to_side_push_up" => {
18173 Some(PushUpExerciseName::WeightedFeetElevatedSideToSidePushUp)
18174 }
18175 "hand_release_push_up" => Some(PushUpExerciseName::HandReleasePushUp),
18176 "weighted_hand_release_push_up" => Some(PushUpExerciseName::WeightedHandReleasePushUp),
18177 "handstand_push_up" => Some(PushUpExerciseName::HandstandPushUp),
18178 "weighted_handstand_push_up" => Some(PushUpExerciseName::WeightedHandstandPushUp),
18179 "incline_push_up" => Some(PushUpExerciseName::InclinePushUp),
18180 "weighted_incline_push_up" => Some(PushUpExerciseName::WeightedInclinePushUp),
18181 "isometric_explosive_push_up" => Some(PushUpExerciseName::IsometricExplosivePushUp),
18182 "weighted_isometric_explosive_push_up" => {
18183 Some(PushUpExerciseName::WeightedIsometricExplosivePushUp)
18184 }
18185 "judo_push_up" => Some(PushUpExerciseName::JudoPushUp),
18186 "weighted_judo_push_up" => Some(PushUpExerciseName::WeightedJudoPushUp),
18187 "kneeling_push_up" => Some(PushUpExerciseName::KneelingPushUp),
18188 "weighted_kneeling_push_up" => Some(PushUpExerciseName::WeightedKneelingPushUp),
18189 "medicine_ball_chest_pass" => Some(PushUpExerciseName::MedicineBallChestPass),
18190 "medicine_ball_push_up" => Some(PushUpExerciseName::MedicineBallPushUp),
18191 "weighted_medicine_ball_push_up" => {
18192 Some(PushUpExerciseName::WeightedMedicineBallPushUp)
18193 }
18194 "one_arm_push_up" => Some(PushUpExerciseName::OneArmPushUp),
18195 "weighted_one_arm_push_up" => Some(PushUpExerciseName::WeightedOneArmPushUp),
18196 "weighted_push_up" => Some(PushUpExerciseName::WeightedPushUp),
18197 "push_up_and_row" => Some(PushUpExerciseName::PushUpAndRow),
18198 "weighted_push_up_and_row" => Some(PushUpExerciseName::WeightedPushUpAndRow),
18199 "push_up_plus" => Some(PushUpExerciseName::PushUpPlus),
18200 "weighted_push_up_plus" => Some(PushUpExerciseName::WeightedPushUpPlus),
18201 "push_up_with_feet_on_swiss_ball" => {
18202 Some(PushUpExerciseName::PushUpWithFeetOnSwissBall)
18203 }
18204 "weighted_push_up_with_feet_on_swiss_ball" => {
18205 Some(PushUpExerciseName::WeightedPushUpWithFeetOnSwissBall)
18206 }
18207 "push_up_with_one_hand_on_medicine_ball" => {
18208 Some(PushUpExerciseName::PushUpWithOneHandOnMedicineBall)
18209 }
18210 "weighted_push_up_with_one_hand_on_medicine_ball" => {
18211 Some(PushUpExerciseName::WeightedPushUpWithOneHandOnMedicineBall)
18212 }
18213 "shoulder_push_up" => Some(PushUpExerciseName::ShoulderPushUp),
18214 "weighted_shoulder_push_up" => Some(PushUpExerciseName::WeightedShoulderPushUp),
18215 "single_arm_medicine_ball_push_up" => {
18216 Some(PushUpExerciseName::SingleArmMedicineBallPushUp)
18217 }
18218 "weighted_single_arm_medicine_ball_push_up" => {
18219 Some(PushUpExerciseName::WeightedSingleArmMedicineBallPushUp)
18220 }
18221 "spiderman_push_up" => Some(PushUpExerciseName::SpidermanPushUp),
18222 "weighted_spiderman_push_up" => Some(PushUpExerciseName::WeightedSpidermanPushUp),
18223 "stacked_feet_push_up" => Some(PushUpExerciseName::StackedFeetPushUp),
18224 "weighted_stacked_feet_push_up" => Some(PushUpExerciseName::WeightedStackedFeetPushUp),
18225 "staggered_hands_push_up" => Some(PushUpExerciseName::StaggeredHandsPushUp),
18226 "weighted_staggered_hands_push_up" => {
18227 Some(PushUpExerciseName::WeightedStaggeredHandsPushUp)
18228 }
18229 "suspended_push_up" => Some(PushUpExerciseName::SuspendedPushUp),
18230 "weighted_suspended_push_up" => Some(PushUpExerciseName::WeightedSuspendedPushUp),
18231 "swiss_ball_push_up" => Some(PushUpExerciseName::SwissBallPushUp),
18232 "weighted_swiss_ball_push_up" => Some(PushUpExerciseName::WeightedSwissBallPushUp),
18233 "swiss_ball_push_up_plus" => Some(PushUpExerciseName::SwissBallPushUpPlus),
18234 "weighted_swiss_ball_push_up_plus" => {
18235 Some(PushUpExerciseName::WeightedSwissBallPushUpPlus)
18236 }
18237 "t_push_up" => Some(PushUpExerciseName::TPushUp),
18238 "weighted_t_push_up" => Some(PushUpExerciseName::WeightedTPushUp),
18239 "triple_stop_push_up" => Some(PushUpExerciseName::TripleStopPushUp),
18240 "weighted_triple_stop_push_up" => Some(PushUpExerciseName::WeightedTripleStopPushUp),
18241 "wide_hands_push_up" => Some(PushUpExerciseName::WideHandsPushUp),
18242 "weighted_wide_hands_push_up" => Some(PushUpExerciseName::WeightedWideHandsPushUp),
18243 "parallette_handstand_push_up" => Some(PushUpExerciseName::ParalletteHandstandPushUp),
18244 "weighted_parallette_handstand_push_up" => {
18245 Some(PushUpExerciseName::WeightedParalletteHandstandPushUp)
18246 }
18247 "ring_handstand_push_up" => Some(PushUpExerciseName::RingHandstandPushUp),
18248 "weighted_ring_handstand_push_up" => {
18249 Some(PushUpExerciseName::WeightedRingHandstandPushUp)
18250 }
18251 "ring_push_up" => Some(PushUpExerciseName::RingPushUp),
18252 "weighted_ring_push_up" => Some(PushUpExerciseName::WeightedRingPushUp),
18253 "push_up" => Some(PushUpExerciseName::PushUp),
18254 "pilates_pushup" => Some(PushUpExerciseName::PilatesPushup),
18255 "dynamic_push_up" => Some(PushUpExerciseName::DynamicPushUp),
18256 "kipping_handstand_push_up" => Some(PushUpExerciseName::KippingHandstandPushUp),
18257 "shoulder_tapping_push_up" => Some(PushUpExerciseName::ShoulderTappingPushUp),
18258 "biceps_push_up" => Some(PushUpExerciseName::BicepsPushUp),
18259 "hindu_push_up" => Some(PushUpExerciseName::HinduPushUp),
18260 "pike_push_up" => Some(PushUpExerciseName::PikePushUp),
18261 "wide_grip_push_up" => Some(PushUpExerciseName::WideGripPushUp),
18262 "weighted_biceps_push_up" => Some(PushUpExerciseName::WeightedBicepsPushUp),
18263 "weighted_hindu_push_up" => Some(PushUpExerciseName::WeightedHinduPushUp),
18264 "weighted_pike_push_up" => Some(PushUpExerciseName::WeightedPikePushUp),
18265 "kipping_parallette_handstand_push_up" => {
18266 Some(PushUpExerciseName::KippingParalletteHandstandPushUp)
18267 }
18268 "wall_push_up" => Some(PushUpExerciseName::WallPushUp),
18269 _ => None,
18270 }
18271 }
18272}
18273
18274#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
18275#[repr(u16)]
18276#[non_exhaustive]
18277pub enum RowExerciseName {
18278 BarbellStraightLegDeadliftToRow = 0,
18279 CableRowStanding = 1,
18280 DumbbellRow = 2,
18281 ElevatedFeetInvertedRow = 3,
18282 WeightedElevatedFeetInvertedRow = 4,
18283 FacePull = 5,
18284 FacePullWithExternalRotation = 6,
18285 InvertedRowWithFeetOnSwissBall = 7,
18286 WeightedInvertedRowWithFeetOnSwissBall = 8,
18287 KettlebellRow = 9,
18288 ModifiedInvertedRow = 10,
18289 WeightedModifiedInvertedRow = 11,
18290 NeutralGripAlternatingDumbbellRow = 12,
18291 OneArmBentOverRow = 13,
18292 OneLeggedDumbbellRow = 14,
18293 RenegadeRow = 15,
18294 ReverseGripBarbellRow = 16,
18295 RopeHandleCableRow = 17,
18296 SeatedCableRow = 18,
18297 SeatedDumbbellRow = 19,
18298 SingleArmCableRow = 20,
18299 SingleArmCableRowAndRotation = 21,
18300 SingleArmInvertedRow = 22,
18301 WeightedSingleArmInvertedRow = 23,
18302 SingleArmNeutralGripDumbbellRow = 24,
18303 SingleArmNeutralGripDumbbellRowAndRotation = 25,
18304 SuspendedInvertedRow = 26,
18305 WeightedSuspendedInvertedRow = 27,
18306 TBarRow = 28,
18307 TowelGripInvertedRow = 29,
18308 WeightedTowelGripInvertedRow = 30,
18309 UnderhandGripCableRow = 31,
18310 VGripCableRow = 32,
18311 WideGripSeatedCableRow = 33,
18312 AlternatingDumbbellRow = 34,
18313 InvertedRow = 35,
18314 Row = 36,
18315 WeightedRow = 37,
18316 IndoorRow = 38,
18317 BandedFacePulls = 39,
18318 ChestSupportedDumbbellRow = 40,
18319 DeclineRingRow = 41,
18320 ElevatedRingRow = 42,
18321 RdlBentOverRowWithBarbellDumbbell = 43,
18322 RingRow = 44,
18323 BarbellRow = 45,
18324 BentOverRowWithBarbell = 46,
18325 BentOverRowWithDumbell = 47,
18326 SeatedUnderhandGripCableRow = 48,
18327 TrxInvertedRow = 49,
18328 WeightedInvertedRow = 50,
18329 WeightedTrxInvertedRow = 51,
18330 DumbbellRowWheelchair = 52,
18331}
18332
18333impl RowExerciseName {
18334 pub fn as_str(&self) -> &'static str {
18336 match self {
18337 RowExerciseName::BarbellStraightLegDeadliftToRow => {
18338 "barbell_straight_leg_deadlift_to_row"
18339 }
18340 RowExerciseName::CableRowStanding => "cable_row_standing",
18341 RowExerciseName::DumbbellRow => "dumbbell_row",
18342 RowExerciseName::ElevatedFeetInvertedRow => "elevated_feet_inverted_row",
18343 RowExerciseName::WeightedElevatedFeetInvertedRow => {
18344 "weighted_elevated_feet_inverted_row"
18345 }
18346 RowExerciseName::FacePull => "face_pull",
18347 RowExerciseName::FacePullWithExternalRotation => "face_pull_with_external_rotation",
18348 RowExerciseName::InvertedRowWithFeetOnSwissBall => {
18349 "inverted_row_with_feet_on_swiss_ball"
18350 }
18351 RowExerciseName::WeightedInvertedRowWithFeetOnSwissBall => {
18352 "weighted_inverted_row_with_feet_on_swiss_ball"
18353 }
18354 RowExerciseName::KettlebellRow => "kettlebell_row",
18355 RowExerciseName::ModifiedInvertedRow => "modified_inverted_row",
18356 RowExerciseName::WeightedModifiedInvertedRow => "weighted_modified_inverted_row",
18357 RowExerciseName::NeutralGripAlternatingDumbbellRow => {
18358 "neutral_grip_alternating_dumbbell_row"
18359 }
18360 RowExerciseName::OneArmBentOverRow => "one_arm_bent_over_row",
18361 RowExerciseName::OneLeggedDumbbellRow => "one_legged_dumbbell_row",
18362 RowExerciseName::RenegadeRow => "renegade_row",
18363 RowExerciseName::ReverseGripBarbellRow => "reverse_grip_barbell_row",
18364 RowExerciseName::RopeHandleCableRow => "rope_handle_cable_row",
18365 RowExerciseName::SeatedCableRow => "seated_cable_row",
18366 RowExerciseName::SeatedDumbbellRow => "seated_dumbbell_row",
18367 RowExerciseName::SingleArmCableRow => "single_arm_cable_row",
18368 RowExerciseName::SingleArmCableRowAndRotation => "single_arm_cable_row_and_rotation",
18369 RowExerciseName::SingleArmInvertedRow => "single_arm_inverted_row",
18370 RowExerciseName::WeightedSingleArmInvertedRow => "weighted_single_arm_inverted_row",
18371 RowExerciseName::SingleArmNeutralGripDumbbellRow => {
18372 "single_arm_neutral_grip_dumbbell_row"
18373 }
18374 RowExerciseName::SingleArmNeutralGripDumbbellRowAndRotation => {
18375 "single_arm_neutral_grip_dumbbell_row_and_rotation"
18376 }
18377 RowExerciseName::SuspendedInvertedRow => "suspended_inverted_row",
18378 RowExerciseName::WeightedSuspendedInvertedRow => "weighted_suspended_inverted_row",
18379 RowExerciseName::TBarRow => "t_bar_row",
18380 RowExerciseName::TowelGripInvertedRow => "towel_grip_inverted_row",
18381 RowExerciseName::WeightedTowelGripInvertedRow => "weighted_towel_grip_inverted_row",
18382 RowExerciseName::UnderhandGripCableRow => "underhand_grip_cable_row",
18383 RowExerciseName::VGripCableRow => "v_grip_cable_row",
18384 RowExerciseName::WideGripSeatedCableRow => "wide_grip_seated_cable_row",
18385 RowExerciseName::AlternatingDumbbellRow => "alternating_dumbbell_row",
18386 RowExerciseName::InvertedRow => "inverted_row",
18387 RowExerciseName::Row => "row",
18388 RowExerciseName::WeightedRow => "weighted_row",
18389 RowExerciseName::IndoorRow => "indoor_row",
18390 RowExerciseName::BandedFacePulls => "banded_face_pulls",
18391 RowExerciseName::ChestSupportedDumbbellRow => "chest_supported_dumbbell_row",
18392 RowExerciseName::DeclineRingRow => "decline_ring_row",
18393 RowExerciseName::ElevatedRingRow => "elevated_ring_row",
18394 RowExerciseName::RdlBentOverRowWithBarbellDumbbell => {
18395 "rdl_bent_over_row_with_barbell_dumbbell"
18396 }
18397 RowExerciseName::RingRow => "ring_row",
18398 RowExerciseName::BarbellRow => "barbell_row",
18399 RowExerciseName::BentOverRowWithBarbell => "bent_over_row_with_barbell",
18400 RowExerciseName::BentOverRowWithDumbell => "bent_over_row_with_dumbell",
18401 RowExerciseName::SeatedUnderhandGripCableRow => "seated_underhand_grip_cable_row",
18402 RowExerciseName::TrxInvertedRow => "trx_inverted_row",
18403 RowExerciseName::WeightedInvertedRow => "weighted_inverted_row",
18404 RowExerciseName::WeightedTrxInvertedRow => "weighted_trx_inverted_row",
18405 RowExerciseName::DumbbellRowWheelchair => "dumbbell_row_wheelchair",
18406 }
18407 }
18408
18409 pub fn from_value(value: u16) -> Option<Self> {
18411 match value {
18412 0 => Some(RowExerciseName::BarbellStraightLegDeadliftToRow),
18413 1 => Some(RowExerciseName::CableRowStanding),
18414 2 => Some(RowExerciseName::DumbbellRow),
18415 3 => Some(RowExerciseName::ElevatedFeetInvertedRow),
18416 4 => Some(RowExerciseName::WeightedElevatedFeetInvertedRow),
18417 5 => Some(RowExerciseName::FacePull),
18418 6 => Some(RowExerciseName::FacePullWithExternalRotation),
18419 7 => Some(RowExerciseName::InvertedRowWithFeetOnSwissBall),
18420 8 => Some(RowExerciseName::WeightedInvertedRowWithFeetOnSwissBall),
18421 9 => Some(RowExerciseName::KettlebellRow),
18422 10 => Some(RowExerciseName::ModifiedInvertedRow),
18423 11 => Some(RowExerciseName::WeightedModifiedInvertedRow),
18424 12 => Some(RowExerciseName::NeutralGripAlternatingDumbbellRow),
18425 13 => Some(RowExerciseName::OneArmBentOverRow),
18426 14 => Some(RowExerciseName::OneLeggedDumbbellRow),
18427 15 => Some(RowExerciseName::RenegadeRow),
18428 16 => Some(RowExerciseName::ReverseGripBarbellRow),
18429 17 => Some(RowExerciseName::RopeHandleCableRow),
18430 18 => Some(RowExerciseName::SeatedCableRow),
18431 19 => Some(RowExerciseName::SeatedDumbbellRow),
18432 20 => Some(RowExerciseName::SingleArmCableRow),
18433 21 => Some(RowExerciseName::SingleArmCableRowAndRotation),
18434 22 => Some(RowExerciseName::SingleArmInvertedRow),
18435 23 => Some(RowExerciseName::WeightedSingleArmInvertedRow),
18436 24 => Some(RowExerciseName::SingleArmNeutralGripDumbbellRow),
18437 25 => Some(RowExerciseName::SingleArmNeutralGripDumbbellRowAndRotation),
18438 26 => Some(RowExerciseName::SuspendedInvertedRow),
18439 27 => Some(RowExerciseName::WeightedSuspendedInvertedRow),
18440 28 => Some(RowExerciseName::TBarRow),
18441 29 => Some(RowExerciseName::TowelGripInvertedRow),
18442 30 => Some(RowExerciseName::WeightedTowelGripInvertedRow),
18443 31 => Some(RowExerciseName::UnderhandGripCableRow),
18444 32 => Some(RowExerciseName::VGripCableRow),
18445 33 => Some(RowExerciseName::WideGripSeatedCableRow),
18446 34 => Some(RowExerciseName::AlternatingDumbbellRow),
18447 35 => Some(RowExerciseName::InvertedRow),
18448 36 => Some(RowExerciseName::Row),
18449 37 => Some(RowExerciseName::WeightedRow),
18450 38 => Some(RowExerciseName::IndoorRow),
18451 39 => Some(RowExerciseName::BandedFacePulls),
18452 40 => Some(RowExerciseName::ChestSupportedDumbbellRow),
18453 41 => Some(RowExerciseName::DeclineRingRow),
18454 42 => Some(RowExerciseName::ElevatedRingRow),
18455 43 => Some(RowExerciseName::RdlBentOverRowWithBarbellDumbbell),
18456 44 => Some(RowExerciseName::RingRow),
18457 45 => Some(RowExerciseName::BarbellRow),
18458 46 => Some(RowExerciseName::BentOverRowWithBarbell),
18459 47 => Some(RowExerciseName::BentOverRowWithDumbell),
18460 48 => Some(RowExerciseName::SeatedUnderhandGripCableRow),
18461 49 => Some(RowExerciseName::TrxInvertedRow),
18462 50 => Some(RowExerciseName::WeightedInvertedRow),
18463 51 => Some(RowExerciseName::WeightedTrxInvertedRow),
18464 52 => Some(RowExerciseName::DumbbellRowWheelchair),
18465 _ => None,
18466 }
18467 }
18468
18469 pub fn from_str(name: &str) -> Option<Self> {
18471 match name {
18472 "barbell_straight_leg_deadlift_to_row" => {
18473 Some(RowExerciseName::BarbellStraightLegDeadliftToRow)
18474 }
18475 "cable_row_standing" => Some(RowExerciseName::CableRowStanding),
18476 "dumbbell_row" => Some(RowExerciseName::DumbbellRow),
18477 "elevated_feet_inverted_row" => Some(RowExerciseName::ElevatedFeetInvertedRow),
18478 "weighted_elevated_feet_inverted_row" => {
18479 Some(RowExerciseName::WeightedElevatedFeetInvertedRow)
18480 }
18481 "face_pull" => Some(RowExerciseName::FacePull),
18482 "face_pull_with_external_rotation" => {
18483 Some(RowExerciseName::FacePullWithExternalRotation)
18484 }
18485 "inverted_row_with_feet_on_swiss_ball" => {
18486 Some(RowExerciseName::InvertedRowWithFeetOnSwissBall)
18487 }
18488 "weighted_inverted_row_with_feet_on_swiss_ball" => {
18489 Some(RowExerciseName::WeightedInvertedRowWithFeetOnSwissBall)
18490 }
18491 "kettlebell_row" => Some(RowExerciseName::KettlebellRow),
18492 "modified_inverted_row" => Some(RowExerciseName::ModifiedInvertedRow),
18493 "weighted_modified_inverted_row" => Some(RowExerciseName::WeightedModifiedInvertedRow),
18494 "neutral_grip_alternating_dumbbell_row" => {
18495 Some(RowExerciseName::NeutralGripAlternatingDumbbellRow)
18496 }
18497 "one_arm_bent_over_row" => Some(RowExerciseName::OneArmBentOverRow),
18498 "one_legged_dumbbell_row" => Some(RowExerciseName::OneLeggedDumbbellRow),
18499 "renegade_row" => Some(RowExerciseName::RenegadeRow),
18500 "reverse_grip_barbell_row" => Some(RowExerciseName::ReverseGripBarbellRow),
18501 "rope_handle_cable_row" => Some(RowExerciseName::RopeHandleCableRow),
18502 "seated_cable_row" => Some(RowExerciseName::SeatedCableRow),
18503 "seated_dumbbell_row" => Some(RowExerciseName::SeatedDumbbellRow),
18504 "single_arm_cable_row" => Some(RowExerciseName::SingleArmCableRow),
18505 "single_arm_cable_row_and_rotation" => {
18506 Some(RowExerciseName::SingleArmCableRowAndRotation)
18507 }
18508 "single_arm_inverted_row" => Some(RowExerciseName::SingleArmInvertedRow),
18509 "weighted_single_arm_inverted_row" => {
18510 Some(RowExerciseName::WeightedSingleArmInvertedRow)
18511 }
18512 "single_arm_neutral_grip_dumbbell_row" => {
18513 Some(RowExerciseName::SingleArmNeutralGripDumbbellRow)
18514 }
18515 "single_arm_neutral_grip_dumbbell_row_and_rotation" => {
18516 Some(RowExerciseName::SingleArmNeutralGripDumbbellRowAndRotation)
18517 }
18518 "suspended_inverted_row" => Some(RowExerciseName::SuspendedInvertedRow),
18519 "weighted_suspended_inverted_row" => {
18520 Some(RowExerciseName::WeightedSuspendedInvertedRow)
18521 }
18522 "t_bar_row" => Some(RowExerciseName::TBarRow),
18523 "towel_grip_inverted_row" => Some(RowExerciseName::TowelGripInvertedRow),
18524 "weighted_towel_grip_inverted_row" => {
18525 Some(RowExerciseName::WeightedTowelGripInvertedRow)
18526 }
18527 "underhand_grip_cable_row" => Some(RowExerciseName::UnderhandGripCableRow),
18528 "v_grip_cable_row" => Some(RowExerciseName::VGripCableRow),
18529 "wide_grip_seated_cable_row" => Some(RowExerciseName::WideGripSeatedCableRow),
18530 "alternating_dumbbell_row" => Some(RowExerciseName::AlternatingDumbbellRow),
18531 "inverted_row" => Some(RowExerciseName::InvertedRow),
18532 "row" => Some(RowExerciseName::Row),
18533 "weighted_row" => Some(RowExerciseName::WeightedRow),
18534 "indoor_row" => Some(RowExerciseName::IndoorRow),
18535 "banded_face_pulls" => Some(RowExerciseName::BandedFacePulls),
18536 "chest_supported_dumbbell_row" => Some(RowExerciseName::ChestSupportedDumbbellRow),
18537 "decline_ring_row" => Some(RowExerciseName::DeclineRingRow),
18538 "elevated_ring_row" => Some(RowExerciseName::ElevatedRingRow),
18539 "rdl_bent_over_row_with_barbell_dumbbell" => {
18540 Some(RowExerciseName::RdlBentOverRowWithBarbellDumbbell)
18541 }
18542 "ring_row" => Some(RowExerciseName::RingRow),
18543 "barbell_row" => Some(RowExerciseName::BarbellRow),
18544 "bent_over_row_with_barbell" => Some(RowExerciseName::BentOverRowWithBarbell),
18545 "bent_over_row_with_dumbell" => Some(RowExerciseName::BentOverRowWithDumbell),
18546 "seated_underhand_grip_cable_row" => Some(RowExerciseName::SeatedUnderhandGripCableRow),
18547 "trx_inverted_row" => Some(RowExerciseName::TrxInvertedRow),
18548 "weighted_inverted_row" => Some(RowExerciseName::WeightedInvertedRow),
18549 "weighted_trx_inverted_row" => Some(RowExerciseName::WeightedTrxInvertedRow),
18550 "dumbbell_row_wheelchair" => Some(RowExerciseName::DumbbellRowWheelchair),
18551 _ => None,
18552 }
18553 }
18554}
18555
18556#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
18557#[repr(u16)]
18558#[non_exhaustive]
18559pub enum ShoulderPressExerciseName {
18560 AlternatingDumbbellShoulderPress = 0,
18561 ArnoldPress = 1,
18562 BarbellFrontSquatToPushPress = 2,
18563 BarbellPushPress = 3,
18564 BarbellShoulderPress = 4,
18565 DeadCurlPress = 5,
18566 DumbbellAlternatingShoulderPressAndTwist = 6,
18567 DumbbellHammerCurlToLungeToPress = 7,
18568 DumbbellPushPress = 8,
18569 FloorInvertedShoulderPress = 9,
18570 WeightedFloorInvertedShoulderPress = 10,
18571 InvertedShoulderPress = 11,
18572 WeightedInvertedShoulderPress = 12,
18573 OneArmPushPress = 13,
18574 OverheadBarbellPress = 14,
18575 OverheadDumbbellPress = 15,
18576 SeatedBarbellShoulderPress = 16,
18577 SeatedDumbbellShoulderPress = 17,
18578 SingleArmDumbbellShoulderPress = 18,
18579 SingleArmStepUpAndPress = 19,
18580 SmithMachineOverheadPress = 20,
18581 SplitStanceHammerCurlToPress = 21,
18582 SwissBallDumbbellShoulderPress = 22,
18583 WeightPlateFrontRaise = 23,
18584 DumbbellShoulderPress = 24,
18585 MilitaryPress = 25,
18586 StrictPress = 27,
18587 DumbbellFrontRaise = 28,
18588 DumbbellCurlToOverheadPressWheelchair = 29,
18589 ArnoldPressWheelchair = 30,
18590 OverheadDumbbellPressWheelchair = 31,
18591}
18592
18593impl ShoulderPressExerciseName {
18594 pub fn as_str(&self) -> &'static str {
18596 match self {
18597 ShoulderPressExerciseName::AlternatingDumbbellShoulderPress => {
18598 "alternating_dumbbell_shoulder_press"
18599 }
18600 ShoulderPressExerciseName::ArnoldPress => "arnold_press",
18601 ShoulderPressExerciseName::BarbellFrontSquatToPushPress => {
18602 "barbell_front_squat_to_push_press"
18603 }
18604 ShoulderPressExerciseName::BarbellPushPress => "barbell_push_press",
18605 ShoulderPressExerciseName::BarbellShoulderPress => "barbell_shoulder_press",
18606 ShoulderPressExerciseName::DeadCurlPress => "dead_curl_press",
18607 ShoulderPressExerciseName::DumbbellAlternatingShoulderPressAndTwist => {
18608 "dumbbell_alternating_shoulder_press_and_twist"
18609 }
18610 ShoulderPressExerciseName::DumbbellHammerCurlToLungeToPress => {
18611 "dumbbell_hammer_curl_to_lunge_to_press"
18612 }
18613 ShoulderPressExerciseName::DumbbellPushPress => "dumbbell_push_press",
18614 ShoulderPressExerciseName::FloorInvertedShoulderPress => {
18615 "floor_inverted_shoulder_press"
18616 }
18617 ShoulderPressExerciseName::WeightedFloorInvertedShoulderPress => {
18618 "weighted_floor_inverted_shoulder_press"
18619 }
18620 ShoulderPressExerciseName::InvertedShoulderPress => "inverted_shoulder_press",
18621 ShoulderPressExerciseName::WeightedInvertedShoulderPress => {
18622 "weighted_inverted_shoulder_press"
18623 }
18624 ShoulderPressExerciseName::OneArmPushPress => "one_arm_push_press",
18625 ShoulderPressExerciseName::OverheadBarbellPress => "overhead_barbell_press",
18626 ShoulderPressExerciseName::OverheadDumbbellPress => "overhead_dumbbell_press",
18627 ShoulderPressExerciseName::SeatedBarbellShoulderPress => {
18628 "seated_barbell_shoulder_press"
18629 }
18630 ShoulderPressExerciseName::SeatedDumbbellShoulderPress => {
18631 "seated_dumbbell_shoulder_press"
18632 }
18633 ShoulderPressExerciseName::SingleArmDumbbellShoulderPress => {
18634 "single_arm_dumbbell_shoulder_press"
18635 }
18636 ShoulderPressExerciseName::SingleArmStepUpAndPress => "single_arm_step_up_and_press",
18637 ShoulderPressExerciseName::SmithMachineOverheadPress => "smith_machine_overhead_press",
18638 ShoulderPressExerciseName::SplitStanceHammerCurlToPress => {
18639 "split_stance_hammer_curl_to_press"
18640 }
18641 ShoulderPressExerciseName::SwissBallDumbbellShoulderPress => {
18642 "swiss_ball_dumbbell_shoulder_press"
18643 }
18644 ShoulderPressExerciseName::WeightPlateFrontRaise => "weight_plate_front_raise",
18645 ShoulderPressExerciseName::DumbbellShoulderPress => "dumbbell_shoulder_press",
18646 ShoulderPressExerciseName::MilitaryPress => "military_press",
18647 ShoulderPressExerciseName::StrictPress => "strict_press",
18648 ShoulderPressExerciseName::DumbbellFrontRaise => "dumbbell_front_raise",
18649 ShoulderPressExerciseName::DumbbellCurlToOverheadPressWheelchair => {
18650 "dumbbell_curl_to_overhead_press_wheelchair"
18651 }
18652 ShoulderPressExerciseName::ArnoldPressWheelchair => "arnold_press_wheelchair",
18653 ShoulderPressExerciseName::OverheadDumbbellPressWheelchair => {
18654 "overhead_dumbbell_press_wheelchair"
18655 }
18656 }
18657 }
18658
18659 pub fn from_value(value: u16) -> Option<Self> {
18661 match value {
18662 0 => Some(ShoulderPressExerciseName::AlternatingDumbbellShoulderPress),
18663 1 => Some(ShoulderPressExerciseName::ArnoldPress),
18664 2 => Some(ShoulderPressExerciseName::BarbellFrontSquatToPushPress),
18665 3 => Some(ShoulderPressExerciseName::BarbellPushPress),
18666 4 => Some(ShoulderPressExerciseName::BarbellShoulderPress),
18667 5 => Some(ShoulderPressExerciseName::DeadCurlPress),
18668 6 => Some(ShoulderPressExerciseName::DumbbellAlternatingShoulderPressAndTwist),
18669 7 => Some(ShoulderPressExerciseName::DumbbellHammerCurlToLungeToPress),
18670 8 => Some(ShoulderPressExerciseName::DumbbellPushPress),
18671 9 => Some(ShoulderPressExerciseName::FloorInvertedShoulderPress),
18672 10 => Some(ShoulderPressExerciseName::WeightedFloorInvertedShoulderPress),
18673 11 => Some(ShoulderPressExerciseName::InvertedShoulderPress),
18674 12 => Some(ShoulderPressExerciseName::WeightedInvertedShoulderPress),
18675 13 => Some(ShoulderPressExerciseName::OneArmPushPress),
18676 14 => Some(ShoulderPressExerciseName::OverheadBarbellPress),
18677 15 => Some(ShoulderPressExerciseName::OverheadDumbbellPress),
18678 16 => Some(ShoulderPressExerciseName::SeatedBarbellShoulderPress),
18679 17 => Some(ShoulderPressExerciseName::SeatedDumbbellShoulderPress),
18680 18 => Some(ShoulderPressExerciseName::SingleArmDumbbellShoulderPress),
18681 19 => Some(ShoulderPressExerciseName::SingleArmStepUpAndPress),
18682 20 => Some(ShoulderPressExerciseName::SmithMachineOverheadPress),
18683 21 => Some(ShoulderPressExerciseName::SplitStanceHammerCurlToPress),
18684 22 => Some(ShoulderPressExerciseName::SwissBallDumbbellShoulderPress),
18685 23 => Some(ShoulderPressExerciseName::WeightPlateFrontRaise),
18686 24 => Some(ShoulderPressExerciseName::DumbbellShoulderPress),
18687 25 => Some(ShoulderPressExerciseName::MilitaryPress),
18688 27 => Some(ShoulderPressExerciseName::StrictPress),
18689 28 => Some(ShoulderPressExerciseName::DumbbellFrontRaise),
18690 29 => Some(ShoulderPressExerciseName::DumbbellCurlToOverheadPressWheelchair),
18691 30 => Some(ShoulderPressExerciseName::ArnoldPressWheelchair),
18692 31 => Some(ShoulderPressExerciseName::OverheadDumbbellPressWheelchair),
18693 _ => None,
18694 }
18695 }
18696
18697 pub fn from_str(name: &str) -> Option<Self> {
18699 match name {
18700 "alternating_dumbbell_shoulder_press" => {
18701 Some(ShoulderPressExerciseName::AlternatingDumbbellShoulderPress)
18702 }
18703 "arnold_press" => Some(ShoulderPressExerciseName::ArnoldPress),
18704 "barbell_front_squat_to_push_press" => {
18705 Some(ShoulderPressExerciseName::BarbellFrontSquatToPushPress)
18706 }
18707 "barbell_push_press" => Some(ShoulderPressExerciseName::BarbellPushPress),
18708 "barbell_shoulder_press" => Some(ShoulderPressExerciseName::BarbellShoulderPress),
18709 "dead_curl_press" => Some(ShoulderPressExerciseName::DeadCurlPress),
18710 "dumbbell_alternating_shoulder_press_and_twist" => {
18711 Some(ShoulderPressExerciseName::DumbbellAlternatingShoulderPressAndTwist)
18712 }
18713 "dumbbell_hammer_curl_to_lunge_to_press" => {
18714 Some(ShoulderPressExerciseName::DumbbellHammerCurlToLungeToPress)
18715 }
18716 "dumbbell_push_press" => Some(ShoulderPressExerciseName::DumbbellPushPress),
18717 "floor_inverted_shoulder_press" => {
18718 Some(ShoulderPressExerciseName::FloorInvertedShoulderPress)
18719 }
18720 "weighted_floor_inverted_shoulder_press" => {
18721 Some(ShoulderPressExerciseName::WeightedFloorInvertedShoulderPress)
18722 }
18723 "inverted_shoulder_press" => Some(ShoulderPressExerciseName::InvertedShoulderPress),
18724 "weighted_inverted_shoulder_press" => {
18725 Some(ShoulderPressExerciseName::WeightedInvertedShoulderPress)
18726 }
18727 "one_arm_push_press" => Some(ShoulderPressExerciseName::OneArmPushPress),
18728 "overhead_barbell_press" => Some(ShoulderPressExerciseName::OverheadBarbellPress),
18729 "overhead_dumbbell_press" => Some(ShoulderPressExerciseName::OverheadDumbbellPress),
18730 "seated_barbell_shoulder_press" => {
18731 Some(ShoulderPressExerciseName::SeatedBarbellShoulderPress)
18732 }
18733 "seated_dumbbell_shoulder_press" => {
18734 Some(ShoulderPressExerciseName::SeatedDumbbellShoulderPress)
18735 }
18736 "single_arm_dumbbell_shoulder_press" => {
18737 Some(ShoulderPressExerciseName::SingleArmDumbbellShoulderPress)
18738 }
18739 "single_arm_step_up_and_press" => {
18740 Some(ShoulderPressExerciseName::SingleArmStepUpAndPress)
18741 }
18742 "smith_machine_overhead_press" => {
18743 Some(ShoulderPressExerciseName::SmithMachineOverheadPress)
18744 }
18745 "split_stance_hammer_curl_to_press" => {
18746 Some(ShoulderPressExerciseName::SplitStanceHammerCurlToPress)
18747 }
18748 "swiss_ball_dumbbell_shoulder_press" => {
18749 Some(ShoulderPressExerciseName::SwissBallDumbbellShoulderPress)
18750 }
18751 "weight_plate_front_raise" => Some(ShoulderPressExerciseName::WeightPlateFrontRaise),
18752 "dumbbell_shoulder_press" => Some(ShoulderPressExerciseName::DumbbellShoulderPress),
18753 "military_press" => Some(ShoulderPressExerciseName::MilitaryPress),
18754 "strict_press" => Some(ShoulderPressExerciseName::StrictPress),
18755 "dumbbell_front_raise" => Some(ShoulderPressExerciseName::DumbbellFrontRaise),
18756 "dumbbell_curl_to_overhead_press_wheelchair" => {
18757 Some(ShoulderPressExerciseName::DumbbellCurlToOverheadPressWheelchair)
18758 }
18759 "arnold_press_wheelchair" => Some(ShoulderPressExerciseName::ArnoldPressWheelchair),
18760 "overhead_dumbbell_press_wheelchair" => {
18761 Some(ShoulderPressExerciseName::OverheadDumbbellPressWheelchair)
18762 }
18763 _ => None,
18764 }
18765 }
18766}
18767
18768#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
18769#[repr(u16)]
18770#[non_exhaustive]
18771pub enum ShoulderStabilityExerciseName {
18772 _90DegreeCableExternalRotation = 0,
18773 BandExternalRotation = 1,
18774 BandInternalRotation = 2,
18775 BentArmLateralRaiseAndExternalRotation = 3,
18776 CableExternalRotation = 4,
18777 DumbbellFacePullWithExternalRotation = 5,
18778 FloorIRaise = 6,
18779 WeightedFloorIRaise = 7,
18780 FloorTRaise = 8,
18781 WeightedFloorTRaise = 9,
18782 FloorYRaise = 10,
18783 WeightedFloorYRaise = 11,
18784 InclineIRaise = 12,
18785 WeightedInclineIRaise = 13,
18786 InclineLRaise = 14,
18787 WeightedInclineLRaise = 15,
18788 InclineTRaise = 16,
18789 WeightedInclineTRaise = 17,
18790 InclineWRaise = 18,
18791 WeightedInclineWRaise = 19,
18792 InclineYRaise = 20,
18793 WeightedInclineYRaise = 21,
18794 LyingExternalRotation = 22,
18795 SeatedDumbbellExternalRotation = 23,
18796 StandingLRaise = 24,
18797 SwissBallIRaise = 25,
18798 WeightedSwissBallIRaise = 26,
18799 SwissBallTRaise = 27,
18800 WeightedSwissBallTRaise = 28,
18801 SwissBallWRaise = 29,
18802 WeightedSwissBallWRaise = 30,
18803 SwissBallYRaise = 31,
18804 WeightedSwissBallYRaise = 32,
18805 CableInternalRotation = 33,
18806 LyingInternalRotation = 34,
18807 SeatedDumbbellInternalRotation = 35,
18808}
18809
18810impl ShoulderStabilityExerciseName {
18811 pub fn as_str(&self) -> &'static str {
18813 match self {
18814 ShoulderStabilityExerciseName::_90DegreeCableExternalRotation => {
18815 "90_degree_cable_external_rotation"
18816 }
18817 ShoulderStabilityExerciseName::BandExternalRotation => "band_external_rotation",
18818 ShoulderStabilityExerciseName::BandInternalRotation => "band_internal_rotation",
18819 ShoulderStabilityExerciseName::BentArmLateralRaiseAndExternalRotation => {
18820 "bent_arm_lateral_raise_and_external_rotation"
18821 }
18822 ShoulderStabilityExerciseName::CableExternalRotation => "cable_external_rotation",
18823 ShoulderStabilityExerciseName::DumbbellFacePullWithExternalRotation => {
18824 "dumbbell_face_pull_with_external_rotation"
18825 }
18826 ShoulderStabilityExerciseName::FloorIRaise => "floor_i_raise",
18827 ShoulderStabilityExerciseName::WeightedFloorIRaise => "weighted_floor_i_raise",
18828 ShoulderStabilityExerciseName::FloorTRaise => "floor_t_raise",
18829 ShoulderStabilityExerciseName::WeightedFloorTRaise => "weighted_floor_t_raise",
18830 ShoulderStabilityExerciseName::FloorYRaise => "floor_y_raise",
18831 ShoulderStabilityExerciseName::WeightedFloorYRaise => "weighted_floor_y_raise",
18832 ShoulderStabilityExerciseName::InclineIRaise => "incline_i_raise",
18833 ShoulderStabilityExerciseName::WeightedInclineIRaise => "weighted_incline_i_raise",
18834 ShoulderStabilityExerciseName::InclineLRaise => "incline_l_raise",
18835 ShoulderStabilityExerciseName::WeightedInclineLRaise => "weighted_incline_l_raise",
18836 ShoulderStabilityExerciseName::InclineTRaise => "incline_t_raise",
18837 ShoulderStabilityExerciseName::WeightedInclineTRaise => "weighted_incline_t_raise",
18838 ShoulderStabilityExerciseName::InclineWRaise => "incline_w_raise",
18839 ShoulderStabilityExerciseName::WeightedInclineWRaise => "weighted_incline_w_raise",
18840 ShoulderStabilityExerciseName::InclineYRaise => "incline_y_raise",
18841 ShoulderStabilityExerciseName::WeightedInclineYRaise => "weighted_incline_y_raise",
18842 ShoulderStabilityExerciseName::LyingExternalRotation => "lying_external_rotation",
18843 ShoulderStabilityExerciseName::SeatedDumbbellExternalRotation => {
18844 "seated_dumbbell_external_rotation"
18845 }
18846 ShoulderStabilityExerciseName::StandingLRaise => "standing_l_raise",
18847 ShoulderStabilityExerciseName::SwissBallIRaise => "swiss_ball_i_raise",
18848 ShoulderStabilityExerciseName::WeightedSwissBallIRaise => "weighted_swiss_ball_i_raise",
18849 ShoulderStabilityExerciseName::SwissBallTRaise => "swiss_ball_t_raise",
18850 ShoulderStabilityExerciseName::WeightedSwissBallTRaise => "weighted_swiss_ball_t_raise",
18851 ShoulderStabilityExerciseName::SwissBallWRaise => "swiss_ball_w_raise",
18852 ShoulderStabilityExerciseName::WeightedSwissBallWRaise => "weighted_swiss_ball_w_raise",
18853 ShoulderStabilityExerciseName::SwissBallYRaise => "swiss_ball_y_raise",
18854 ShoulderStabilityExerciseName::WeightedSwissBallYRaise => "weighted_swiss_ball_y_raise",
18855 ShoulderStabilityExerciseName::CableInternalRotation => "cable_internal_rotation",
18856 ShoulderStabilityExerciseName::LyingInternalRotation => "lying_internal_rotation",
18857 ShoulderStabilityExerciseName::SeatedDumbbellInternalRotation => {
18858 "seated_dumbbell_internal_rotation"
18859 }
18860 }
18861 }
18862
18863 pub fn from_value(value: u16) -> Option<Self> {
18865 match value {
18866 0 => Some(ShoulderStabilityExerciseName::_90DegreeCableExternalRotation),
18867 1 => Some(ShoulderStabilityExerciseName::BandExternalRotation),
18868 2 => Some(ShoulderStabilityExerciseName::BandInternalRotation),
18869 3 => Some(ShoulderStabilityExerciseName::BentArmLateralRaiseAndExternalRotation),
18870 4 => Some(ShoulderStabilityExerciseName::CableExternalRotation),
18871 5 => Some(ShoulderStabilityExerciseName::DumbbellFacePullWithExternalRotation),
18872 6 => Some(ShoulderStabilityExerciseName::FloorIRaise),
18873 7 => Some(ShoulderStabilityExerciseName::WeightedFloorIRaise),
18874 8 => Some(ShoulderStabilityExerciseName::FloorTRaise),
18875 9 => Some(ShoulderStabilityExerciseName::WeightedFloorTRaise),
18876 10 => Some(ShoulderStabilityExerciseName::FloorYRaise),
18877 11 => Some(ShoulderStabilityExerciseName::WeightedFloorYRaise),
18878 12 => Some(ShoulderStabilityExerciseName::InclineIRaise),
18879 13 => Some(ShoulderStabilityExerciseName::WeightedInclineIRaise),
18880 14 => Some(ShoulderStabilityExerciseName::InclineLRaise),
18881 15 => Some(ShoulderStabilityExerciseName::WeightedInclineLRaise),
18882 16 => Some(ShoulderStabilityExerciseName::InclineTRaise),
18883 17 => Some(ShoulderStabilityExerciseName::WeightedInclineTRaise),
18884 18 => Some(ShoulderStabilityExerciseName::InclineWRaise),
18885 19 => Some(ShoulderStabilityExerciseName::WeightedInclineWRaise),
18886 20 => Some(ShoulderStabilityExerciseName::InclineYRaise),
18887 21 => Some(ShoulderStabilityExerciseName::WeightedInclineYRaise),
18888 22 => Some(ShoulderStabilityExerciseName::LyingExternalRotation),
18889 23 => Some(ShoulderStabilityExerciseName::SeatedDumbbellExternalRotation),
18890 24 => Some(ShoulderStabilityExerciseName::StandingLRaise),
18891 25 => Some(ShoulderStabilityExerciseName::SwissBallIRaise),
18892 26 => Some(ShoulderStabilityExerciseName::WeightedSwissBallIRaise),
18893 27 => Some(ShoulderStabilityExerciseName::SwissBallTRaise),
18894 28 => Some(ShoulderStabilityExerciseName::WeightedSwissBallTRaise),
18895 29 => Some(ShoulderStabilityExerciseName::SwissBallWRaise),
18896 30 => Some(ShoulderStabilityExerciseName::WeightedSwissBallWRaise),
18897 31 => Some(ShoulderStabilityExerciseName::SwissBallYRaise),
18898 32 => Some(ShoulderStabilityExerciseName::WeightedSwissBallYRaise),
18899 33 => Some(ShoulderStabilityExerciseName::CableInternalRotation),
18900 34 => Some(ShoulderStabilityExerciseName::LyingInternalRotation),
18901 35 => Some(ShoulderStabilityExerciseName::SeatedDumbbellInternalRotation),
18902 _ => None,
18903 }
18904 }
18905
18906 pub fn from_str(name: &str) -> Option<Self> {
18908 match name {
18909 "90_degree_cable_external_rotation" => {
18910 Some(ShoulderStabilityExerciseName::_90DegreeCableExternalRotation)
18911 }
18912 "band_external_rotation" => Some(ShoulderStabilityExerciseName::BandExternalRotation),
18913 "band_internal_rotation" => Some(ShoulderStabilityExerciseName::BandInternalRotation),
18914 "bent_arm_lateral_raise_and_external_rotation" => {
18915 Some(ShoulderStabilityExerciseName::BentArmLateralRaiseAndExternalRotation)
18916 }
18917 "cable_external_rotation" => Some(ShoulderStabilityExerciseName::CableExternalRotation),
18918 "dumbbell_face_pull_with_external_rotation" => {
18919 Some(ShoulderStabilityExerciseName::DumbbellFacePullWithExternalRotation)
18920 }
18921 "floor_i_raise" => Some(ShoulderStabilityExerciseName::FloorIRaise),
18922 "weighted_floor_i_raise" => Some(ShoulderStabilityExerciseName::WeightedFloorIRaise),
18923 "floor_t_raise" => Some(ShoulderStabilityExerciseName::FloorTRaise),
18924 "weighted_floor_t_raise" => Some(ShoulderStabilityExerciseName::WeightedFloorTRaise),
18925 "floor_y_raise" => Some(ShoulderStabilityExerciseName::FloorYRaise),
18926 "weighted_floor_y_raise" => Some(ShoulderStabilityExerciseName::WeightedFloorYRaise),
18927 "incline_i_raise" => Some(ShoulderStabilityExerciseName::InclineIRaise),
18928 "weighted_incline_i_raise" => {
18929 Some(ShoulderStabilityExerciseName::WeightedInclineIRaise)
18930 }
18931 "incline_l_raise" => Some(ShoulderStabilityExerciseName::InclineLRaise),
18932 "weighted_incline_l_raise" => {
18933 Some(ShoulderStabilityExerciseName::WeightedInclineLRaise)
18934 }
18935 "incline_t_raise" => Some(ShoulderStabilityExerciseName::InclineTRaise),
18936 "weighted_incline_t_raise" => {
18937 Some(ShoulderStabilityExerciseName::WeightedInclineTRaise)
18938 }
18939 "incline_w_raise" => Some(ShoulderStabilityExerciseName::InclineWRaise),
18940 "weighted_incline_w_raise" => {
18941 Some(ShoulderStabilityExerciseName::WeightedInclineWRaise)
18942 }
18943 "incline_y_raise" => Some(ShoulderStabilityExerciseName::InclineYRaise),
18944 "weighted_incline_y_raise" => {
18945 Some(ShoulderStabilityExerciseName::WeightedInclineYRaise)
18946 }
18947 "lying_external_rotation" => Some(ShoulderStabilityExerciseName::LyingExternalRotation),
18948 "seated_dumbbell_external_rotation" => {
18949 Some(ShoulderStabilityExerciseName::SeatedDumbbellExternalRotation)
18950 }
18951 "standing_l_raise" => Some(ShoulderStabilityExerciseName::StandingLRaise),
18952 "swiss_ball_i_raise" => Some(ShoulderStabilityExerciseName::SwissBallIRaise),
18953 "weighted_swiss_ball_i_raise" => {
18954 Some(ShoulderStabilityExerciseName::WeightedSwissBallIRaise)
18955 }
18956 "swiss_ball_t_raise" => Some(ShoulderStabilityExerciseName::SwissBallTRaise),
18957 "weighted_swiss_ball_t_raise" => {
18958 Some(ShoulderStabilityExerciseName::WeightedSwissBallTRaise)
18959 }
18960 "swiss_ball_w_raise" => Some(ShoulderStabilityExerciseName::SwissBallWRaise),
18961 "weighted_swiss_ball_w_raise" => {
18962 Some(ShoulderStabilityExerciseName::WeightedSwissBallWRaise)
18963 }
18964 "swiss_ball_y_raise" => Some(ShoulderStabilityExerciseName::SwissBallYRaise),
18965 "weighted_swiss_ball_y_raise" => {
18966 Some(ShoulderStabilityExerciseName::WeightedSwissBallYRaise)
18967 }
18968 "cable_internal_rotation" => Some(ShoulderStabilityExerciseName::CableInternalRotation),
18969 "lying_internal_rotation" => Some(ShoulderStabilityExerciseName::LyingInternalRotation),
18970 "seated_dumbbell_internal_rotation" => {
18971 Some(ShoulderStabilityExerciseName::SeatedDumbbellInternalRotation)
18972 }
18973 _ => None,
18974 }
18975 }
18976}
18977
18978#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
18979#[repr(u16)]
18980#[non_exhaustive]
18981pub enum ShrugExerciseName {
18982 BarbellJumpShrug = 0,
18983 BarbellShrug = 1,
18984 BarbellUprightRow = 2,
18985 BehindTheBackSmithMachineShrug = 3,
18986 DumbbellJumpShrug = 4,
18987 DumbbellShrug = 5,
18988 DumbbellUprightRow = 6,
18989 InclineDumbbellShrug = 7,
18990 OverheadBarbellShrug = 8,
18991 OverheadDumbbellShrug = 9,
18992 ScaptionAndShrug = 10,
18993 ScapularRetraction = 11,
18994 SerratusChairShrug = 12,
18995 WeightedSerratusChairShrug = 13,
18996 SerratusShrug = 14,
18997 WeightedSerratusShrug = 15,
18998 WideGripJumpShrug = 16,
18999 WideGripBarbellShrug = 17,
19000 BehindTheBackShrug = 18,
19001 DumbbellShrugWheelchair = 19,
19002 ShrugWheelchair = 20,
19003 ShrugArmDownWheelchair = 21,
19004 ShrugArmMidWheelchair = 22,
19005 ShrugArmUpWheelchair = 23,
19006 UprightRow = 24,
19007}
19008
19009impl ShrugExerciseName {
19010 pub fn as_str(&self) -> &'static str {
19012 match self {
19013 ShrugExerciseName::BarbellJumpShrug => "barbell_jump_shrug",
19014 ShrugExerciseName::BarbellShrug => "barbell_shrug",
19015 ShrugExerciseName::BarbellUprightRow => "barbell_upright_row",
19016 ShrugExerciseName::BehindTheBackSmithMachineShrug => {
19017 "behind_the_back_smith_machine_shrug"
19018 }
19019 ShrugExerciseName::DumbbellJumpShrug => "dumbbell_jump_shrug",
19020 ShrugExerciseName::DumbbellShrug => "dumbbell_shrug",
19021 ShrugExerciseName::DumbbellUprightRow => "dumbbell_upright_row",
19022 ShrugExerciseName::InclineDumbbellShrug => "incline_dumbbell_shrug",
19023 ShrugExerciseName::OverheadBarbellShrug => "overhead_barbell_shrug",
19024 ShrugExerciseName::OverheadDumbbellShrug => "overhead_dumbbell_shrug",
19025 ShrugExerciseName::ScaptionAndShrug => "scaption_and_shrug",
19026 ShrugExerciseName::ScapularRetraction => "scapular_retraction",
19027 ShrugExerciseName::SerratusChairShrug => "serratus_chair_shrug",
19028 ShrugExerciseName::WeightedSerratusChairShrug => "weighted_serratus_chair_shrug",
19029 ShrugExerciseName::SerratusShrug => "serratus_shrug",
19030 ShrugExerciseName::WeightedSerratusShrug => "weighted_serratus_shrug",
19031 ShrugExerciseName::WideGripJumpShrug => "wide_grip_jump_shrug",
19032 ShrugExerciseName::WideGripBarbellShrug => "wide_grip_barbell_shrug",
19033 ShrugExerciseName::BehindTheBackShrug => "behind_the_back_shrug",
19034 ShrugExerciseName::DumbbellShrugWheelchair => "dumbbell_shrug_wheelchair",
19035 ShrugExerciseName::ShrugWheelchair => "shrug_wheelchair",
19036 ShrugExerciseName::ShrugArmDownWheelchair => "shrug_arm_down_wheelchair",
19037 ShrugExerciseName::ShrugArmMidWheelchair => "shrug_arm_mid_wheelchair",
19038 ShrugExerciseName::ShrugArmUpWheelchair => "shrug_arm_up_wheelchair",
19039 ShrugExerciseName::UprightRow => "upright_row",
19040 }
19041 }
19042
19043 pub fn from_value(value: u16) -> Option<Self> {
19045 match value {
19046 0 => Some(ShrugExerciseName::BarbellJumpShrug),
19047 1 => Some(ShrugExerciseName::BarbellShrug),
19048 2 => Some(ShrugExerciseName::BarbellUprightRow),
19049 3 => Some(ShrugExerciseName::BehindTheBackSmithMachineShrug),
19050 4 => Some(ShrugExerciseName::DumbbellJumpShrug),
19051 5 => Some(ShrugExerciseName::DumbbellShrug),
19052 6 => Some(ShrugExerciseName::DumbbellUprightRow),
19053 7 => Some(ShrugExerciseName::InclineDumbbellShrug),
19054 8 => Some(ShrugExerciseName::OverheadBarbellShrug),
19055 9 => Some(ShrugExerciseName::OverheadDumbbellShrug),
19056 10 => Some(ShrugExerciseName::ScaptionAndShrug),
19057 11 => Some(ShrugExerciseName::ScapularRetraction),
19058 12 => Some(ShrugExerciseName::SerratusChairShrug),
19059 13 => Some(ShrugExerciseName::WeightedSerratusChairShrug),
19060 14 => Some(ShrugExerciseName::SerratusShrug),
19061 15 => Some(ShrugExerciseName::WeightedSerratusShrug),
19062 16 => Some(ShrugExerciseName::WideGripJumpShrug),
19063 17 => Some(ShrugExerciseName::WideGripBarbellShrug),
19064 18 => Some(ShrugExerciseName::BehindTheBackShrug),
19065 19 => Some(ShrugExerciseName::DumbbellShrugWheelchair),
19066 20 => Some(ShrugExerciseName::ShrugWheelchair),
19067 21 => Some(ShrugExerciseName::ShrugArmDownWheelchair),
19068 22 => Some(ShrugExerciseName::ShrugArmMidWheelchair),
19069 23 => Some(ShrugExerciseName::ShrugArmUpWheelchair),
19070 24 => Some(ShrugExerciseName::UprightRow),
19071 _ => None,
19072 }
19073 }
19074
19075 pub fn from_str(name: &str) -> Option<Self> {
19077 match name {
19078 "barbell_jump_shrug" => Some(ShrugExerciseName::BarbellJumpShrug),
19079 "barbell_shrug" => Some(ShrugExerciseName::BarbellShrug),
19080 "barbell_upright_row" => Some(ShrugExerciseName::BarbellUprightRow),
19081 "behind_the_back_smith_machine_shrug" => {
19082 Some(ShrugExerciseName::BehindTheBackSmithMachineShrug)
19083 }
19084 "dumbbell_jump_shrug" => Some(ShrugExerciseName::DumbbellJumpShrug),
19085 "dumbbell_shrug" => Some(ShrugExerciseName::DumbbellShrug),
19086 "dumbbell_upright_row" => Some(ShrugExerciseName::DumbbellUprightRow),
19087 "incline_dumbbell_shrug" => Some(ShrugExerciseName::InclineDumbbellShrug),
19088 "overhead_barbell_shrug" => Some(ShrugExerciseName::OverheadBarbellShrug),
19089 "overhead_dumbbell_shrug" => Some(ShrugExerciseName::OverheadDumbbellShrug),
19090 "scaption_and_shrug" => Some(ShrugExerciseName::ScaptionAndShrug),
19091 "scapular_retraction" => Some(ShrugExerciseName::ScapularRetraction),
19092 "serratus_chair_shrug" => Some(ShrugExerciseName::SerratusChairShrug),
19093 "weighted_serratus_chair_shrug" => Some(ShrugExerciseName::WeightedSerratusChairShrug),
19094 "serratus_shrug" => Some(ShrugExerciseName::SerratusShrug),
19095 "weighted_serratus_shrug" => Some(ShrugExerciseName::WeightedSerratusShrug),
19096 "wide_grip_jump_shrug" => Some(ShrugExerciseName::WideGripJumpShrug),
19097 "wide_grip_barbell_shrug" => Some(ShrugExerciseName::WideGripBarbellShrug),
19098 "behind_the_back_shrug" => Some(ShrugExerciseName::BehindTheBackShrug),
19099 "dumbbell_shrug_wheelchair" => Some(ShrugExerciseName::DumbbellShrugWheelchair),
19100 "shrug_wheelchair" => Some(ShrugExerciseName::ShrugWheelchair),
19101 "shrug_arm_down_wheelchair" => Some(ShrugExerciseName::ShrugArmDownWheelchair),
19102 "shrug_arm_mid_wheelchair" => Some(ShrugExerciseName::ShrugArmMidWheelchair),
19103 "shrug_arm_up_wheelchair" => Some(ShrugExerciseName::ShrugArmUpWheelchair),
19104 "upright_row" => Some(ShrugExerciseName::UprightRow),
19105 _ => None,
19106 }
19107 }
19108}
19109
19110#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
19111#[repr(u16)]
19112#[non_exhaustive]
19113pub enum SitUpExerciseName {
19114 AlternatingSitUp = 0,
19115 WeightedAlternatingSitUp = 1,
19116 BentKneeVUp = 2,
19117 WeightedBentKneeVUp = 3,
19118 ButterflySitUp = 4,
19119 WeightedButterflySitup = 5,
19120 CrossPunchRollUp = 6,
19121 WeightedCrossPunchRollUp = 7,
19122 CrossedArmsSitUp = 8,
19123 WeightedCrossedArmsSitUp = 9,
19124 GetUpSitUp = 10,
19125 WeightedGetUpSitUp = 11,
19126 HoveringSitUp = 12,
19127 WeightedHoveringSitUp = 13,
19128 KettlebellSitUp = 14,
19129 MedicineBallAlternatingVUp = 15,
19130 MedicineBallSitUp = 16,
19131 MedicineBallVUp = 17,
19132 ModifiedSitUp = 18,
19133 NegativeSitUp = 19,
19134 OneArmFullSitUp = 20,
19135 RecliningCircle = 21,
19136 WeightedRecliningCircle = 22,
19137 ReverseCurlUp = 23,
19138 WeightedReverseCurlUp = 24,
19139 SingleLegSwissBallJackknife = 25,
19140 WeightedSingleLegSwissBallJackknife = 26,
19141 TheTeaser = 27,
19142 TheTeaserWeighted = 28,
19143 ThreePartRollDown = 29,
19144 WeightedThreePartRollDown = 30,
19145 VUp = 31,
19146 WeightedVUp = 32,
19147 WeightedRussianTwistOnSwissBall = 33,
19148 WeightedSitUp = 34,
19149 XAbs = 35,
19150 WeightedXAbs = 36,
19151 SitUp = 37,
19152 GhdSitUps = 38,
19153 SitUpTurkishGetUp = 39,
19154 RussianTwistOnSwissBall = 40,
19155}
19156
19157impl SitUpExerciseName {
19158 pub fn as_str(&self) -> &'static str {
19160 match self {
19161 SitUpExerciseName::AlternatingSitUp => "alternating_sit_up",
19162 SitUpExerciseName::WeightedAlternatingSitUp => "weighted_alternating_sit_up",
19163 SitUpExerciseName::BentKneeVUp => "bent_knee_v_up",
19164 SitUpExerciseName::WeightedBentKneeVUp => "weighted_bent_knee_v_up",
19165 SitUpExerciseName::ButterflySitUp => "butterfly_sit_up",
19166 SitUpExerciseName::WeightedButterflySitup => "weighted_butterfly_situp",
19167 SitUpExerciseName::CrossPunchRollUp => "cross_punch_roll_up",
19168 SitUpExerciseName::WeightedCrossPunchRollUp => "weighted_cross_punch_roll_up",
19169 SitUpExerciseName::CrossedArmsSitUp => "crossed_arms_sit_up",
19170 SitUpExerciseName::WeightedCrossedArmsSitUp => "weighted_crossed_arms_sit_up",
19171 SitUpExerciseName::GetUpSitUp => "get_up_sit_up",
19172 SitUpExerciseName::WeightedGetUpSitUp => "weighted_get_up_sit_up",
19173 SitUpExerciseName::HoveringSitUp => "hovering_sit_up",
19174 SitUpExerciseName::WeightedHoveringSitUp => "weighted_hovering_sit_up",
19175 SitUpExerciseName::KettlebellSitUp => "kettlebell_sit_up",
19176 SitUpExerciseName::MedicineBallAlternatingVUp => "medicine_ball_alternating_v_up",
19177 SitUpExerciseName::MedicineBallSitUp => "medicine_ball_sit_up",
19178 SitUpExerciseName::MedicineBallVUp => "medicine_ball_v_up",
19179 SitUpExerciseName::ModifiedSitUp => "modified_sit_up",
19180 SitUpExerciseName::NegativeSitUp => "negative_sit_up",
19181 SitUpExerciseName::OneArmFullSitUp => "one_arm_full_sit_up",
19182 SitUpExerciseName::RecliningCircle => "reclining_circle",
19183 SitUpExerciseName::WeightedRecliningCircle => "weighted_reclining_circle",
19184 SitUpExerciseName::ReverseCurlUp => "reverse_curl_up",
19185 SitUpExerciseName::WeightedReverseCurlUp => "weighted_reverse_curl_up",
19186 SitUpExerciseName::SingleLegSwissBallJackknife => "single_leg_swiss_ball_jackknife",
19187 SitUpExerciseName::WeightedSingleLegSwissBallJackknife => {
19188 "weighted_single_leg_swiss_ball_jackknife"
19189 }
19190 SitUpExerciseName::TheTeaser => "the_teaser",
19191 SitUpExerciseName::TheTeaserWeighted => "the_teaser_weighted",
19192 SitUpExerciseName::ThreePartRollDown => "three_part_roll_down",
19193 SitUpExerciseName::WeightedThreePartRollDown => "weighted_three_part_roll_down",
19194 SitUpExerciseName::VUp => "v_up",
19195 SitUpExerciseName::WeightedVUp => "weighted_v_up",
19196 SitUpExerciseName::WeightedRussianTwistOnSwissBall => {
19197 "weighted_russian_twist_on_swiss_ball"
19198 }
19199 SitUpExerciseName::WeightedSitUp => "weighted_sit_up",
19200 SitUpExerciseName::XAbs => "x_abs",
19201 SitUpExerciseName::WeightedXAbs => "weighted_x_abs",
19202 SitUpExerciseName::SitUp => "sit_up",
19203 SitUpExerciseName::GhdSitUps => "ghd_sit_ups",
19204 SitUpExerciseName::SitUpTurkishGetUp => "sit_up_turkish_get_up",
19205 SitUpExerciseName::RussianTwistOnSwissBall => "russian_twist_on_swiss_ball",
19206 }
19207 }
19208
19209 pub fn from_value(value: u16) -> Option<Self> {
19211 match value {
19212 0 => Some(SitUpExerciseName::AlternatingSitUp),
19213 1 => Some(SitUpExerciseName::WeightedAlternatingSitUp),
19214 2 => Some(SitUpExerciseName::BentKneeVUp),
19215 3 => Some(SitUpExerciseName::WeightedBentKneeVUp),
19216 4 => Some(SitUpExerciseName::ButterflySitUp),
19217 5 => Some(SitUpExerciseName::WeightedButterflySitup),
19218 6 => Some(SitUpExerciseName::CrossPunchRollUp),
19219 7 => Some(SitUpExerciseName::WeightedCrossPunchRollUp),
19220 8 => Some(SitUpExerciseName::CrossedArmsSitUp),
19221 9 => Some(SitUpExerciseName::WeightedCrossedArmsSitUp),
19222 10 => Some(SitUpExerciseName::GetUpSitUp),
19223 11 => Some(SitUpExerciseName::WeightedGetUpSitUp),
19224 12 => Some(SitUpExerciseName::HoveringSitUp),
19225 13 => Some(SitUpExerciseName::WeightedHoveringSitUp),
19226 14 => Some(SitUpExerciseName::KettlebellSitUp),
19227 15 => Some(SitUpExerciseName::MedicineBallAlternatingVUp),
19228 16 => Some(SitUpExerciseName::MedicineBallSitUp),
19229 17 => Some(SitUpExerciseName::MedicineBallVUp),
19230 18 => Some(SitUpExerciseName::ModifiedSitUp),
19231 19 => Some(SitUpExerciseName::NegativeSitUp),
19232 20 => Some(SitUpExerciseName::OneArmFullSitUp),
19233 21 => Some(SitUpExerciseName::RecliningCircle),
19234 22 => Some(SitUpExerciseName::WeightedRecliningCircle),
19235 23 => Some(SitUpExerciseName::ReverseCurlUp),
19236 24 => Some(SitUpExerciseName::WeightedReverseCurlUp),
19237 25 => Some(SitUpExerciseName::SingleLegSwissBallJackknife),
19238 26 => Some(SitUpExerciseName::WeightedSingleLegSwissBallJackknife),
19239 27 => Some(SitUpExerciseName::TheTeaser),
19240 28 => Some(SitUpExerciseName::TheTeaserWeighted),
19241 29 => Some(SitUpExerciseName::ThreePartRollDown),
19242 30 => Some(SitUpExerciseName::WeightedThreePartRollDown),
19243 31 => Some(SitUpExerciseName::VUp),
19244 32 => Some(SitUpExerciseName::WeightedVUp),
19245 33 => Some(SitUpExerciseName::WeightedRussianTwistOnSwissBall),
19246 34 => Some(SitUpExerciseName::WeightedSitUp),
19247 35 => Some(SitUpExerciseName::XAbs),
19248 36 => Some(SitUpExerciseName::WeightedXAbs),
19249 37 => Some(SitUpExerciseName::SitUp),
19250 38 => Some(SitUpExerciseName::GhdSitUps),
19251 39 => Some(SitUpExerciseName::SitUpTurkishGetUp),
19252 40 => Some(SitUpExerciseName::RussianTwistOnSwissBall),
19253 _ => None,
19254 }
19255 }
19256
19257 pub fn from_str(name: &str) -> Option<Self> {
19259 match name {
19260 "alternating_sit_up" => Some(SitUpExerciseName::AlternatingSitUp),
19261 "weighted_alternating_sit_up" => Some(SitUpExerciseName::WeightedAlternatingSitUp),
19262 "bent_knee_v_up" => Some(SitUpExerciseName::BentKneeVUp),
19263 "weighted_bent_knee_v_up" => Some(SitUpExerciseName::WeightedBentKneeVUp),
19264 "butterfly_sit_up" => Some(SitUpExerciseName::ButterflySitUp),
19265 "weighted_butterfly_situp" => Some(SitUpExerciseName::WeightedButterflySitup),
19266 "cross_punch_roll_up" => Some(SitUpExerciseName::CrossPunchRollUp),
19267 "weighted_cross_punch_roll_up" => Some(SitUpExerciseName::WeightedCrossPunchRollUp),
19268 "crossed_arms_sit_up" => Some(SitUpExerciseName::CrossedArmsSitUp),
19269 "weighted_crossed_arms_sit_up" => Some(SitUpExerciseName::WeightedCrossedArmsSitUp),
19270 "get_up_sit_up" => Some(SitUpExerciseName::GetUpSitUp),
19271 "weighted_get_up_sit_up" => Some(SitUpExerciseName::WeightedGetUpSitUp),
19272 "hovering_sit_up" => Some(SitUpExerciseName::HoveringSitUp),
19273 "weighted_hovering_sit_up" => Some(SitUpExerciseName::WeightedHoveringSitUp),
19274 "kettlebell_sit_up" => Some(SitUpExerciseName::KettlebellSitUp),
19275 "medicine_ball_alternating_v_up" => Some(SitUpExerciseName::MedicineBallAlternatingVUp),
19276 "medicine_ball_sit_up" => Some(SitUpExerciseName::MedicineBallSitUp),
19277 "medicine_ball_v_up" => Some(SitUpExerciseName::MedicineBallVUp),
19278 "modified_sit_up" => Some(SitUpExerciseName::ModifiedSitUp),
19279 "negative_sit_up" => Some(SitUpExerciseName::NegativeSitUp),
19280 "one_arm_full_sit_up" => Some(SitUpExerciseName::OneArmFullSitUp),
19281 "reclining_circle" => Some(SitUpExerciseName::RecliningCircle),
19282 "weighted_reclining_circle" => Some(SitUpExerciseName::WeightedRecliningCircle),
19283 "reverse_curl_up" => Some(SitUpExerciseName::ReverseCurlUp),
19284 "weighted_reverse_curl_up" => Some(SitUpExerciseName::WeightedReverseCurlUp),
19285 "single_leg_swiss_ball_jackknife" => {
19286 Some(SitUpExerciseName::SingleLegSwissBallJackknife)
19287 }
19288 "weighted_single_leg_swiss_ball_jackknife" => {
19289 Some(SitUpExerciseName::WeightedSingleLegSwissBallJackknife)
19290 }
19291 "the_teaser" => Some(SitUpExerciseName::TheTeaser),
19292 "the_teaser_weighted" => Some(SitUpExerciseName::TheTeaserWeighted),
19293 "three_part_roll_down" => Some(SitUpExerciseName::ThreePartRollDown),
19294 "weighted_three_part_roll_down" => Some(SitUpExerciseName::WeightedThreePartRollDown),
19295 "v_up" => Some(SitUpExerciseName::VUp),
19296 "weighted_v_up" => Some(SitUpExerciseName::WeightedVUp),
19297 "weighted_russian_twist_on_swiss_ball" => {
19298 Some(SitUpExerciseName::WeightedRussianTwistOnSwissBall)
19299 }
19300 "weighted_sit_up" => Some(SitUpExerciseName::WeightedSitUp),
19301 "x_abs" => Some(SitUpExerciseName::XAbs),
19302 "weighted_x_abs" => Some(SitUpExerciseName::WeightedXAbs),
19303 "sit_up" => Some(SitUpExerciseName::SitUp),
19304 "ghd_sit_ups" => Some(SitUpExerciseName::GhdSitUps),
19305 "sit_up_turkish_get_up" => Some(SitUpExerciseName::SitUpTurkishGetUp),
19306 "russian_twist_on_swiss_ball" => Some(SitUpExerciseName::RussianTwistOnSwissBall),
19307 _ => None,
19308 }
19309 }
19310}
19311
19312#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
19313#[repr(u16)]
19314#[non_exhaustive]
19315pub enum SquatExerciseName {
19316 LegPress = 0,
19317 BackSquatWithBodyBar = 1,
19318 BackSquats = 2,
19319 WeightedBackSquats = 3,
19320 BalancingSquat = 4,
19321 WeightedBalancingSquat = 5,
19322 BarbellBackSquat = 6,
19323 BarbellBoxSquat = 7,
19324 BarbellFrontSquat = 8,
19325 BarbellHackSquat = 9,
19326 BarbellHangSquatSnatch = 10,
19327 BarbellLateralStepUp = 11,
19328 BarbellQuarterSquat = 12,
19329 BarbellSiffSquat = 13,
19330 BarbellSquatSnatch = 14,
19331 BarbellSquatWithHeelsRaised = 15,
19332 BarbellStepover = 16,
19333 BarbellStepUp = 17,
19334 BenchSquatWithRotationalChop = 18,
19335 WeightedBenchSquatWithRotationalChop = 19,
19336 BodyWeightWallSquat = 20,
19337 WeightedWallSquat = 21,
19338 BoxStepSquat = 22,
19339 WeightedBoxStepSquat = 23,
19340 BracedSquat = 24,
19341 CrossedArmBarbellFrontSquat = 25,
19342 CrossoverDumbbellStepUp = 26,
19343 DumbbellFrontSquat = 27,
19344 DumbbellSplitSquat = 28,
19345 DumbbellSquat = 29,
19346 DumbbellSquatClean = 30,
19347 DumbbellStepover = 31,
19348 DumbbellStepUp = 32,
19349 ElevatedSingleLegSquat = 33,
19350 WeightedElevatedSingleLegSquat = 34,
19351 FigureFourSquats = 35,
19352 WeightedFigureFourSquats = 36,
19353 GobletSquat = 37,
19354 KettlebellSquat = 38,
19355 KettlebellSwingOverhead = 39,
19356 KettlebellSwingWithFlipToSquat = 40,
19357 LateralDumbbellStepUp = 41,
19358 OneLeggedSquat = 42,
19359 OverheadDumbbellSquat = 43,
19360 OverheadSquat = 44,
19361 PartialSingleLegSquat = 45,
19362 WeightedPartialSingleLegSquat = 46,
19363 PistolSquat = 47,
19364 WeightedPistolSquat = 48,
19365 PlieSlides = 49,
19366 WeightedPlieSlides = 50,
19367 PlieSquat = 51,
19368 WeightedPlieSquat = 52,
19369 PrisonerSquat = 53,
19370 WeightedPrisonerSquat = 54,
19371 SingleLegBenchGetUp = 55,
19372 WeightedSingleLegBenchGetUp = 56,
19373 SingleLegBenchSquat = 57,
19374 WeightedSingleLegBenchSquat = 58,
19375 SingleLegSquatOnSwissBall = 59,
19376 WeightedSingleLegSquatOnSwissBall = 60,
19377 Squat = 61,
19378 WeightedSquat = 62,
19379 SquatsWithBand = 63,
19380 StaggeredSquat = 64,
19381 WeightedStaggeredSquat = 65,
19382 StepUp = 66,
19383 WeightedStepUp = 67,
19384 SuitcaseSquats = 68,
19385 SumoSquat = 69,
19386 SumoSquatSlideIn = 70,
19387 WeightedSumoSquatSlideIn = 71,
19388 SumoSquatToHighPull = 72,
19389 SumoSquatToStand = 73,
19390 WeightedSumoSquatToStand = 74,
19391 SumoSquatWithRotation = 75,
19392 WeightedSumoSquatWithRotation = 76,
19393 SwissBallBodyWeightWallSquat = 77,
19394 WeightedSwissBallWallSquat = 78,
19395 Thrusters = 79,
19396 UnevenSquat = 80,
19397 WeightedUnevenSquat = 81,
19398 WaistSlimmingSquat = 82,
19399 WallBall = 83,
19400 WideStanceBarbellSquat = 84,
19401 WideStanceGobletSquat = 85,
19402 ZercherSquat = 86,
19403 KbsOverhead = 87,
19404 SquatAndSideKick = 88,
19405 SquatJumpsInNOut = 89,
19406 PilatesPlieSquatsParallelTurnedOutFlatAndHeels = 90,
19407 ReleveStraightLegAndKneeBentWithOneLegVariation = 91,
19408 AlternatingBoxDumbbellStepUps = 92,
19409 DumbbellOverheadSquatSingleArm = 93,
19410 DumbbellSquatSnatch = 94,
19411 MedicineBallSquat = 95,
19412 WallBallSquatAndPress = 97,
19413 SquatAmericanSwing = 98,
19414 AirSquat = 100,
19415 DumbbellThrusters = 101,
19416 OverheadBarbellSquat = 102,
19417}
19418
19419impl SquatExerciseName {
19420 pub fn as_str(&self) -> &'static str {
19422 match self {
19423 SquatExerciseName::LegPress => "leg_press",
19424 SquatExerciseName::BackSquatWithBodyBar => "back_squat_with_body_bar",
19425 SquatExerciseName::BackSquats => "back_squats",
19426 SquatExerciseName::WeightedBackSquats => "weighted_back_squats",
19427 SquatExerciseName::BalancingSquat => "balancing_squat",
19428 SquatExerciseName::WeightedBalancingSquat => "weighted_balancing_squat",
19429 SquatExerciseName::BarbellBackSquat => "barbell_back_squat",
19430 SquatExerciseName::BarbellBoxSquat => "barbell_box_squat",
19431 SquatExerciseName::BarbellFrontSquat => "barbell_front_squat",
19432 SquatExerciseName::BarbellHackSquat => "barbell_hack_squat",
19433 SquatExerciseName::BarbellHangSquatSnatch => "barbell_hang_squat_snatch",
19434 SquatExerciseName::BarbellLateralStepUp => "barbell_lateral_step_up",
19435 SquatExerciseName::BarbellQuarterSquat => "barbell_quarter_squat",
19436 SquatExerciseName::BarbellSiffSquat => "barbell_siff_squat",
19437 SquatExerciseName::BarbellSquatSnatch => "barbell_squat_snatch",
19438 SquatExerciseName::BarbellSquatWithHeelsRaised => "barbell_squat_with_heels_raised",
19439 SquatExerciseName::BarbellStepover => "barbell_stepover",
19440 SquatExerciseName::BarbellStepUp => "barbell_step_up",
19441 SquatExerciseName::BenchSquatWithRotationalChop => "bench_squat_with_rotational_chop",
19442 SquatExerciseName::WeightedBenchSquatWithRotationalChop => {
19443 "weighted_bench_squat_with_rotational_chop"
19444 }
19445 SquatExerciseName::BodyWeightWallSquat => "body_weight_wall_squat",
19446 SquatExerciseName::WeightedWallSquat => "weighted_wall_squat",
19447 SquatExerciseName::BoxStepSquat => "box_step_squat",
19448 SquatExerciseName::WeightedBoxStepSquat => "weighted_box_step_squat",
19449 SquatExerciseName::BracedSquat => "braced_squat",
19450 SquatExerciseName::CrossedArmBarbellFrontSquat => "crossed_arm_barbell_front_squat",
19451 SquatExerciseName::CrossoverDumbbellStepUp => "crossover_dumbbell_step_up",
19452 SquatExerciseName::DumbbellFrontSquat => "dumbbell_front_squat",
19453 SquatExerciseName::DumbbellSplitSquat => "dumbbell_split_squat",
19454 SquatExerciseName::DumbbellSquat => "dumbbell_squat",
19455 SquatExerciseName::DumbbellSquatClean => "dumbbell_squat_clean",
19456 SquatExerciseName::DumbbellStepover => "dumbbell_stepover",
19457 SquatExerciseName::DumbbellStepUp => "dumbbell_step_up",
19458 SquatExerciseName::ElevatedSingleLegSquat => "elevated_single_leg_squat",
19459 SquatExerciseName::WeightedElevatedSingleLegSquat => {
19460 "weighted_elevated_single_leg_squat"
19461 }
19462 SquatExerciseName::FigureFourSquats => "figure_four_squats",
19463 SquatExerciseName::WeightedFigureFourSquats => "weighted_figure_four_squats",
19464 SquatExerciseName::GobletSquat => "goblet_squat",
19465 SquatExerciseName::KettlebellSquat => "kettlebell_squat",
19466 SquatExerciseName::KettlebellSwingOverhead => "kettlebell_swing_overhead",
19467 SquatExerciseName::KettlebellSwingWithFlipToSquat => {
19468 "kettlebell_swing_with_flip_to_squat"
19469 }
19470 SquatExerciseName::LateralDumbbellStepUp => "lateral_dumbbell_step_up",
19471 SquatExerciseName::OneLeggedSquat => "one_legged_squat",
19472 SquatExerciseName::OverheadDumbbellSquat => "overhead_dumbbell_squat",
19473 SquatExerciseName::OverheadSquat => "overhead_squat",
19474 SquatExerciseName::PartialSingleLegSquat => "partial_single_leg_squat",
19475 SquatExerciseName::WeightedPartialSingleLegSquat => "weighted_partial_single_leg_squat",
19476 SquatExerciseName::PistolSquat => "pistol_squat",
19477 SquatExerciseName::WeightedPistolSquat => "weighted_pistol_squat",
19478 SquatExerciseName::PlieSlides => "plie_slides",
19479 SquatExerciseName::WeightedPlieSlides => "weighted_plie_slides",
19480 SquatExerciseName::PlieSquat => "plie_squat",
19481 SquatExerciseName::WeightedPlieSquat => "weighted_plie_squat",
19482 SquatExerciseName::PrisonerSquat => "prisoner_squat",
19483 SquatExerciseName::WeightedPrisonerSquat => "weighted_prisoner_squat",
19484 SquatExerciseName::SingleLegBenchGetUp => "single_leg_bench_get_up",
19485 SquatExerciseName::WeightedSingleLegBenchGetUp => "weighted_single_leg_bench_get_up",
19486 SquatExerciseName::SingleLegBenchSquat => "single_leg_bench_squat",
19487 SquatExerciseName::WeightedSingleLegBenchSquat => "weighted_single_leg_bench_squat",
19488 SquatExerciseName::SingleLegSquatOnSwissBall => "single_leg_squat_on_swiss_ball",
19489 SquatExerciseName::WeightedSingleLegSquatOnSwissBall => {
19490 "weighted_single_leg_squat_on_swiss_ball"
19491 }
19492 SquatExerciseName::Squat => "squat",
19493 SquatExerciseName::WeightedSquat => "weighted_squat",
19494 SquatExerciseName::SquatsWithBand => "squats_with_band",
19495 SquatExerciseName::StaggeredSquat => "staggered_squat",
19496 SquatExerciseName::WeightedStaggeredSquat => "weighted_staggered_squat",
19497 SquatExerciseName::StepUp => "step_up",
19498 SquatExerciseName::WeightedStepUp => "weighted_step_up",
19499 SquatExerciseName::SuitcaseSquats => "suitcase_squats",
19500 SquatExerciseName::SumoSquat => "sumo_squat",
19501 SquatExerciseName::SumoSquatSlideIn => "sumo_squat_slide_in",
19502 SquatExerciseName::WeightedSumoSquatSlideIn => "weighted_sumo_squat_slide_in",
19503 SquatExerciseName::SumoSquatToHighPull => "sumo_squat_to_high_pull",
19504 SquatExerciseName::SumoSquatToStand => "sumo_squat_to_stand",
19505 SquatExerciseName::WeightedSumoSquatToStand => "weighted_sumo_squat_to_stand",
19506 SquatExerciseName::SumoSquatWithRotation => "sumo_squat_with_rotation",
19507 SquatExerciseName::WeightedSumoSquatWithRotation => "weighted_sumo_squat_with_rotation",
19508 SquatExerciseName::SwissBallBodyWeightWallSquat => "swiss_ball_body_weight_wall_squat",
19509 SquatExerciseName::WeightedSwissBallWallSquat => "weighted_swiss_ball_wall_squat",
19510 SquatExerciseName::Thrusters => "thrusters",
19511 SquatExerciseName::UnevenSquat => "uneven_squat",
19512 SquatExerciseName::WeightedUnevenSquat => "weighted_uneven_squat",
19513 SquatExerciseName::WaistSlimmingSquat => "waist_slimming_squat",
19514 SquatExerciseName::WallBall => "wall_ball",
19515 SquatExerciseName::WideStanceBarbellSquat => "wide_stance_barbell_squat",
19516 SquatExerciseName::WideStanceGobletSquat => "wide_stance_goblet_squat",
19517 SquatExerciseName::ZercherSquat => "zercher_squat",
19518 SquatExerciseName::KbsOverhead => "kbs_overhead",
19519 SquatExerciseName::SquatAndSideKick => "squat_and_side_kick",
19520 SquatExerciseName::SquatJumpsInNOut => "squat_jumps_in_n_out",
19521 SquatExerciseName::PilatesPlieSquatsParallelTurnedOutFlatAndHeels => {
19522 "pilates_plie_squats_parallel_turned_out_flat_and_heels"
19523 }
19524 SquatExerciseName::ReleveStraightLegAndKneeBentWithOneLegVariation => {
19525 "releve_straight_leg_and_knee_bent_with_one_leg_variation"
19526 }
19527 SquatExerciseName::AlternatingBoxDumbbellStepUps => "alternating_box_dumbbell_step_ups",
19528 SquatExerciseName::DumbbellOverheadSquatSingleArm => {
19529 "dumbbell_overhead_squat_single_arm"
19530 }
19531 SquatExerciseName::DumbbellSquatSnatch => "dumbbell_squat_snatch",
19532 SquatExerciseName::MedicineBallSquat => "medicine_ball_squat",
19533 SquatExerciseName::WallBallSquatAndPress => "wall_ball_squat_and_press",
19534 SquatExerciseName::SquatAmericanSwing => "squat_american_swing",
19535 SquatExerciseName::AirSquat => "air_squat",
19536 SquatExerciseName::DumbbellThrusters => "dumbbell_thrusters",
19537 SquatExerciseName::OverheadBarbellSquat => "overhead_barbell_squat",
19538 }
19539 }
19540
19541 pub fn from_value(value: u16) -> Option<Self> {
19543 match value {
19544 0 => Some(SquatExerciseName::LegPress),
19545 1 => Some(SquatExerciseName::BackSquatWithBodyBar),
19546 2 => Some(SquatExerciseName::BackSquats),
19547 3 => Some(SquatExerciseName::WeightedBackSquats),
19548 4 => Some(SquatExerciseName::BalancingSquat),
19549 5 => Some(SquatExerciseName::WeightedBalancingSquat),
19550 6 => Some(SquatExerciseName::BarbellBackSquat),
19551 7 => Some(SquatExerciseName::BarbellBoxSquat),
19552 8 => Some(SquatExerciseName::BarbellFrontSquat),
19553 9 => Some(SquatExerciseName::BarbellHackSquat),
19554 10 => Some(SquatExerciseName::BarbellHangSquatSnatch),
19555 11 => Some(SquatExerciseName::BarbellLateralStepUp),
19556 12 => Some(SquatExerciseName::BarbellQuarterSquat),
19557 13 => Some(SquatExerciseName::BarbellSiffSquat),
19558 14 => Some(SquatExerciseName::BarbellSquatSnatch),
19559 15 => Some(SquatExerciseName::BarbellSquatWithHeelsRaised),
19560 16 => Some(SquatExerciseName::BarbellStepover),
19561 17 => Some(SquatExerciseName::BarbellStepUp),
19562 18 => Some(SquatExerciseName::BenchSquatWithRotationalChop),
19563 19 => Some(SquatExerciseName::WeightedBenchSquatWithRotationalChop),
19564 20 => Some(SquatExerciseName::BodyWeightWallSquat),
19565 21 => Some(SquatExerciseName::WeightedWallSquat),
19566 22 => Some(SquatExerciseName::BoxStepSquat),
19567 23 => Some(SquatExerciseName::WeightedBoxStepSquat),
19568 24 => Some(SquatExerciseName::BracedSquat),
19569 25 => Some(SquatExerciseName::CrossedArmBarbellFrontSquat),
19570 26 => Some(SquatExerciseName::CrossoverDumbbellStepUp),
19571 27 => Some(SquatExerciseName::DumbbellFrontSquat),
19572 28 => Some(SquatExerciseName::DumbbellSplitSquat),
19573 29 => Some(SquatExerciseName::DumbbellSquat),
19574 30 => Some(SquatExerciseName::DumbbellSquatClean),
19575 31 => Some(SquatExerciseName::DumbbellStepover),
19576 32 => Some(SquatExerciseName::DumbbellStepUp),
19577 33 => Some(SquatExerciseName::ElevatedSingleLegSquat),
19578 34 => Some(SquatExerciseName::WeightedElevatedSingleLegSquat),
19579 35 => Some(SquatExerciseName::FigureFourSquats),
19580 36 => Some(SquatExerciseName::WeightedFigureFourSquats),
19581 37 => Some(SquatExerciseName::GobletSquat),
19582 38 => Some(SquatExerciseName::KettlebellSquat),
19583 39 => Some(SquatExerciseName::KettlebellSwingOverhead),
19584 40 => Some(SquatExerciseName::KettlebellSwingWithFlipToSquat),
19585 41 => Some(SquatExerciseName::LateralDumbbellStepUp),
19586 42 => Some(SquatExerciseName::OneLeggedSquat),
19587 43 => Some(SquatExerciseName::OverheadDumbbellSquat),
19588 44 => Some(SquatExerciseName::OverheadSquat),
19589 45 => Some(SquatExerciseName::PartialSingleLegSquat),
19590 46 => Some(SquatExerciseName::WeightedPartialSingleLegSquat),
19591 47 => Some(SquatExerciseName::PistolSquat),
19592 48 => Some(SquatExerciseName::WeightedPistolSquat),
19593 49 => Some(SquatExerciseName::PlieSlides),
19594 50 => Some(SquatExerciseName::WeightedPlieSlides),
19595 51 => Some(SquatExerciseName::PlieSquat),
19596 52 => Some(SquatExerciseName::WeightedPlieSquat),
19597 53 => Some(SquatExerciseName::PrisonerSquat),
19598 54 => Some(SquatExerciseName::WeightedPrisonerSquat),
19599 55 => Some(SquatExerciseName::SingleLegBenchGetUp),
19600 56 => Some(SquatExerciseName::WeightedSingleLegBenchGetUp),
19601 57 => Some(SquatExerciseName::SingleLegBenchSquat),
19602 58 => Some(SquatExerciseName::WeightedSingleLegBenchSquat),
19603 59 => Some(SquatExerciseName::SingleLegSquatOnSwissBall),
19604 60 => Some(SquatExerciseName::WeightedSingleLegSquatOnSwissBall),
19605 61 => Some(SquatExerciseName::Squat),
19606 62 => Some(SquatExerciseName::WeightedSquat),
19607 63 => Some(SquatExerciseName::SquatsWithBand),
19608 64 => Some(SquatExerciseName::StaggeredSquat),
19609 65 => Some(SquatExerciseName::WeightedStaggeredSquat),
19610 66 => Some(SquatExerciseName::StepUp),
19611 67 => Some(SquatExerciseName::WeightedStepUp),
19612 68 => Some(SquatExerciseName::SuitcaseSquats),
19613 69 => Some(SquatExerciseName::SumoSquat),
19614 70 => Some(SquatExerciseName::SumoSquatSlideIn),
19615 71 => Some(SquatExerciseName::WeightedSumoSquatSlideIn),
19616 72 => Some(SquatExerciseName::SumoSquatToHighPull),
19617 73 => Some(SquatExerciseName::SumoSquatToStand),
19618 74 => Some(SquatExerciseName::WeightedSumoSquatToStand),
19619 75 => Some(SquatExerciseName::SumoSquatWithRotation),
19620 76 => Some(SquatExerciseName::WeightedSumoSquatWithRotation),
19621 77 => Some(SquatExerciseName::SwissBallBodyWeightWallSquat),
19622 78 => Some(SquatExerciseName::WeightedSwissBallWallSquat),
19623 79 => Some(SquatExerciseName::Thrusters),
19624 80 => Some(SquatExerciseName::UnevenSquat),
19625 81 => Some(SquatExerciseName::WeightedUnevenSquat),
19626 82 => Some(SquatExerciseName::WaistSlimmingSquat),
19627 83 => Some(SquatExerciseName::WallBall),
19628 84 => Some(SquatExerciseName::WideStanceBarbellSquat),
19629 85 => Some(SquatExerciseName::WideStanceGobletSquat),
19630 86 => Some(SquatExerciseName::ZercherSquat),
19631 87 => Some(SquatExerciseName::KbsOverhead),
19632 88 => Some(SquatExerciseName::SquatAndSideKick),
19633 89 => Some(SquatExerciseName::SquatJumpsInNOut),
19634 90 => Some(SquatExerciseName::PilatesPlieSquatsParallelTurnedOutFlatAndHeels),
19635 91 => Some(SquatExerciseName::ReleveStraightLegAndKneeBentWithOneLegVariation),
19636 92 => Some(SquatExerciseName::AlternatingBoxDumbbellStepUps),
19637 93 => Some(SquatExerciseName::DumbbellOverheadSquatSingleArm),
19638 94 => Some(SquatExerciseName::DumbbellSquatSnatch),
19639 95 => Some(SquatExerciseName::MedicineBallSquat),
19640 97 => Some(SquatExerciseName::WallBallSquatAndPress),
19641 98 => Some(SquatExerciseName::SquatAmericanSwing),
19642 100 => Some(SquatExerciseName::AirSquat),
19643 101 => Some(SquatExerciseName::DumbbellThrusters),
19644 102 => Some(SquatExerciseName::OverheadBarbellSquat),
19645 _ => None,
19646 }
19647 }
19648
19649 pub fn from_str(name: &str) -> Option<Self> {
19651 match name {
19652 "leg_press" => Some(SquatExerciseName::LegPress),
19653 "back_squat_with_body_bar" => Some(SquatExerciseName::BackSquatWithBodyBar),
19654 "back_squats" => Some(SquatExerciseName::BackSquats),
19655 "weighted_back_squats" => Some(SquatExerciseName::WeightedBackSquats),
19656 "balancing_squat" => Some(SquatExerciseName::BalancingSquat),
19657 "weighted_balancing_squat" => Some(SquatExerciseName::WeightedBalancingSquat),
19658 "barbell_back_squat" => Some(SquatExerciseName::BarbellBackSquat),
19659 "barbell_box_squat" => Some(SquatExerciseName::BarbellBoxSquat),
19660 "barbell_front_squat" => Some(SquatExerciseName::BarbellFrontSquat),
19661 "barbell_hack_squat" => Some(SquatExerciseName::BarbellHackSquat),
19662 "barbell_hang_squat_snatch" => Some(SquatExerciseName::BarbellHangSquatSnatch),
19663 "barbell_lateral_step_up" => Some(SquatExerciseName::BarbellLateralStepUp),
19664 "barbell_quarter_squat" => Some(SquatExerciseName::BarbellQuarterSquat),
19665 "barbell_siff_squat" => Some(SquatExerciseName::BarbellSiffSquat),
19666 "barbell_squat_snatch" => Some(SquatExerciseName::BarbellSquatSnatch),
19667 "barbell_squat_with_heels_raised" => {
19668 Some(SquatExerciseName::BarbellSquatWithHeelsRaised)
19669 }
19670 "barbell_stepover" => Some(SquatExerciseName::BarbellStepover),
19671 "barbell_step_up" => Some(SquatExerciseName::BarbellStepUp),
19672 "bench_squat_with_rotational_chop" => {
19673 Some(SquatExerciseName::BenchSquatWithRotationalChop)
19674 }
19675 "weighted_bench_squat_with_rotational_chop" => {
19676 Some(SquatExerciseName::WeightedBenchSquatWithRotationalChop)
19677 }
19678 "body_weight_wall_squat" => Some(SquatExerciseName::BodyWeightWallSquat),
19679 "weighted_wall_squat" => Some(SquatExerciseName::WeightedWallSquat),
19680 "box_step_squat" => Some(SquatExerciseName::BoxStepSquat),
19681 "weighted_box_step_squat" => Some(SquatExerciseName::WeightedBoxStepSquat),
19682 "braced_squat" => Some(SquatExerciseName::BracedSquat),
19683 "crossed_arm_barbell_front_squat" => {
19684 Some(SquatExerciseName::CrossedArmBarbellFrontSquat)
19685 }
19686 "crossover_dumbbell_step_up" => Some(SquatExerciseName::CrossoverDumbbellStepUp),
19687 "dumbbell_front_squat" => Some(SquatExerciseName::DumbbellFrontSquat),
19688 "dumbbell_split_squat" => Some(SquatExerciseName::DumbbellSplitSquat),
19689 "dumbbell_squat" => Some(SquatExerciseName::DumbbellSquat),
19690 "dumbbell_squat_clean" => Some(SquatExerciseName::DumbbellSquatClean),
19691 "dumbbell_stepover" => Some(SquatExerciseName::DumbbellStepover),
19692 "dumbbell_step_up" => Some(SquatExerciseName::DumbbellStepUp),
19693 "elevated_single_leg_squat" => Some(SquatExerciseName::ElevatedSingleLegSquat),
19694 "weighted_elevated_single_leg_squat" => {
19695 Some(SquatExerciseName::WeightedElevatedSingleLegSquat)
19696 }
19697 "figure_four_squats" => Some(SquatExerciseName::FigureFourSquats),
19698 "weighted_figure_four_squats" => Some(SquatExerciseName::WeightedFigureFourSquats),
19699 "goblet_squat" => Some(SquatExerciseName::GobletSquat),
19700 "kettlebell_squat" => Some(SquatExerciseName::KettlebellSquat),
19701 "kettlebell_swing_overhead" => Some(SquatExerciseName::KettlebellSwingOverhead),
19702 "kettlebell_swing_with_flip_to_squat" => {
19703 Some(SquatExerciseName::KettlebellSwingWithFlipToSquat)
19704 }
19705 "lateral_dumbbell_step_up" => Some(SquatExerciseName::LateralDumbbellStepUp),
19706 "one_legged_squat" => Some(SquatExerciseName::OneLeggedSquat),
19707 "overhead_dumbbell_squat" => Some(SquatExerciseName::OverheadDumbbellSquat),
19708 "overhead_squat" => Some(SquatExerciseName::OverheadSquat),
19709 "partial_single_leg_squat" => Some(SquatExerciseName::PartialSingleLegSquat),
19710 "weighted_partial_single_leg_squat" => {
19711 Some(SquatExerciseName::WeightedPartialSingleLegSquat)
19712 }
19713 "pistol_squat" => Some(SquatExerciseName::PistolSquat),
19714 "weighted_pistol_squat" => Some(SquatExerciseName::WeightedPistolSquat),
19715 "plie_slides" => Some(SquatExerciseName::PlieSlides),
19716 "weighted_plie_slides" => Some(SquatExerciseName::WeightedPlieSlides),
19717 "plie_squat" => Some(SquatExerciseName::PlieSquat),
19718 "weighted_plie_squat" => Some(SquatExerciseName::WeightedPlieSquat),
19719 "prisoner_squat" => Some(SquatExerciseName::PrisonerSquat),
19720 "weighted_prisoner_squat" => Some(SquatExerciseName::WeightedPrisonerSquat),
19721 "single_leg_bench_get_up" => Some(SquatExerciseName::SingleLegBenchGetUp),
19722 "weighted_single_leg_bench_get_up" => {
19723 Some(SquatExerciseName::WeightedSingleLegBenchGetUp)
19724 }
19725 "single_leg_bench_squat" => Some(SquatExerciseName::SingleLegBenchSquat),
19726 "weighted_single_leg_bench_squat" => {
19727 Some(SquatExerciseName::WeightedSingleLegBenchSquat)
19728 }
19729 "single_leg_squat_on_swiss_ball" => Some(SquatExerciseName::SingleLegSquatOnSwissBall),
19730 "weighted_single_leg_squat_on_swiss_ball" => {
19731 Some(SquatExerciseName::WeightedSingleLegSquatOnSwissBall)
19732 }
19733 "squat" => Some(SquatExerciseName::Squat),
19734 "weighted_squat" => Some(SquatExerciseName::WeightedSquat),
19735 "squats_with_band" => Some(SquatExerciseName::SquatsWithBand),
19736 "staggered_squat" => Some(SquatExerciseName::StaggeredSquat),
19737 "weighted_staggered_squat" => Some(SquatExerciseName::WeightedStaggeredSquat),
19738 "step_up" => Some(SquatExerciseName::StepUp),
19739 "weighted_step_up" => Some(SquatExerciseName::WeightedStepUp),
19740 "suitcase_squats" => Some(SquatExerciseName::SuitcaseSquats),
19741 "sumo_squat" => Some(SquatExerciseName::SumoSquat),
19742 "sumo_squat_slide_in" => Some(SquatExerciseName::SumoSquatSlideIn),
19743 "weighted_sumo_squat_slide_in" => Some(SquatExerciseName::WeightedSumoSquatSlideIn),
19744 "sumo_squat_to_high_pull" => Some(SquatExerciseName::SumoSquatToHighPull),
19745 "sumo_squat_to_stand" => Some(SquatExerciseName::SumoSquatToStand),
19746 "weighted_sumo_squat_to_stand" => Some(SquatExerciseName::WeightedSumoSquatToStand),
19747 "sumo_squat_with_rotation" => Some(SquatExerciseName::SumoSquatWithRotation),
19748 "weighted_sumo_squat_with_rotation" => {
19749 Some(SquatExerciseName::WeightedSumoSquatWithRotation)
19750 }
19751 "swiss_ball_body_weight_wall_squat" => {
19752 Some(SquatExerciseName::SwissBallBodyWeightWallSquat)
19753 }
19754 "weighted_swiss_ball_wall_squat" => Some(SquatExerciseName::WeightedSwissBallWallSquat),
19755 "thrusters" => Some(SquatExerciseName::Thrusters),
19756 "uneven_squat" => Some(SquatExerciseName::UnevenSquat),
19757 "weighted_uneven_squat" => Some(SquatExerciseName::WeightedUnevenSquat),
19758 "waist_slimming_squat" => Some(SquatExerciseName::WaistSlimmingSquat),
19759 "wall_ball" => Some(SquatExerciseName::WallBall),
19760 "wide_stance_barbell_squat" => Some(SquatExerciseName::WideStanceBarbellSquat),
19761 "wide_stance_goblet_squat" => Some(SquatExerciseName::WideStanceGobletSquat),
19762 "zercher_squat" => Some(SquatExerciseName::ZercherSquat),
19763 "kbs_overhead" => Some(SquatExerciseName::KbsOverhead),
19764 "squat_and_side_kick" => Some(SquatExerciseName::SquatAndSideKick),
19765 "squat_jumps_in_n_out" => Some(SquatExerciseName::SquatJumpsInNOut),
19766 "pilates_plie_squats_parallel_turned_out_flat_and_heels" => {
19767 Some(SquatExerciseName::PilatesPlieSquatsParallelTurnedOutFlatAndHeels)
19768 }
19769 "releve_straight_leg_and_knee_bent_with_one_leg_variation" => {
19770 Some(SquatExerciseName::ReleveStraightLegAndKneeBentWithOneLegVariation)
19771 }
19772 "alternating_box_dumbbell_step_ups" => {
19773 Some(SquatExerciseName::AlternatingBoxDumbbellStepUps)
19774 }
19775 "dumbbell_overhead_squat_single_arm" => {
19776 Some(SquatExerciseName::DumbbellOverheadSquatSingleArm)
19777 }
19778 "dumbbell_squat_snatch" => Some(SquatExerciseName::DumbbellSquatSnatch),
19779 "medicine_ball_squat" => Some(SquatExerciseName::MedicineBallSquat),
19780 "wall_ball_squat_and_press" => Some(SquatExerciseName::WallBallSquatAndPress),
19781 "squat_american_swing" => Some(SquatExerciseName::SquatAmericanSwing),
19782 "air_squat" => Some(SquatExerciseName::AirSquat),
19783 "dumbbell_thrusters" => Some(SquatExerciseName::DumbbellThrusters),
19784 "overhead_barbell_squat" => Some(SquatExerciseName::OverheadBarbellSquat),
19785 _ => None,
19786 }
19787 }
19788}
19789
19790#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
19791#[repr(u16)]
19792#[non_exhaustive]
19793pub enum TotalBodyExerciseName {
19794 Burpee = 0,
19795 WeightedBurpee = 1,
19796 BurpeeBoxJump = 2,
19797 WeightedBurpeeBoxJump = 3,
19798 HighPullBurpee = 4,
19799 ManMakers = 5,
19800 OneArmBurpee = 6,
19801 SquatThrusts = 7,
19802 WeightedSquatThrusts = 8,
19803 SquatPlankPushUp = 9,
19804 WeightedSquatPlankPushUp = 10,
19805 StandingTRotationBalance = 11,
19806 WeightedStandingTRotationBalance = 12,
19807 BarbellBurpee = 13,
19808 BurpeeBoxJumpOverYesLiterallyJumpingOverTheBox = 15,
19809 BurpeeBoxJumpStepUpOver = 16,
19810 LateralBarbellBurpee = 17,
19811 TotalBodyBurpeeOverBar = 18,
19812 BurpeeBoxJumpOver = 19,
19813 BurpeeWheelchair = 20,
19814}
19815
19816impl TotalBodyExerciseName {
19817 pub fn as_str(&self) -> &'static str {
19819 match self {
19820 TotalBodyExerciseName::Burpee => "burpee",
19821 TotalBodyExerciseName::WeightedBurpee => "weighted_burpee",
19822 TotalBodyExerciseName::BurpeeBoxJump => "burpee_box_jump",
19823 TotalBodyExerciseName::WeightedBurpeeBoxJump => "weighted_burpee_box_jump",
19824 TotalBodyExerciseName::HighPullBurpee => "high_pull_burpee",
19825 TotalBodyExerciseName::ManMakers => "man_makers",
19826 TotalBodyExerciseName::OneArmBurpee => "one_arm_burpee",
19827 TotalBodyExerciseName::SquatThrusts => "squat_thrusts",
19828 TotalBodyExerciseName::WeightedSquatThrusts => "weighted_squat_thrusts",
19829 TotalBodyExerciseName::SquatPlankPushUp => "squat_plank_push_up",
19830 TotalBodyExerciseName::WeightedSquatPlankPushUp => "weighted_squat_plank_push_up",
19831 TotalBodyExerciseName::StandingTRotationBalance => "standing_t_rotation_balance",
19832 TotalBodyExerciseName::WeightedStandingTRotationBalance => {
19833 "weighted_standing_t_rotation_balance"
19834 }
19835 TotalBodyExerciseName::BarbellBurpee => "barbell_burpee",
19836 TotalBodyExerciseName::BurpeeBoxJumpOverYesLiterallyJumpingOverTheBox => {
19837 "burpee_box_jump_over_yes_literally_jumping_over_the_box"
19838 }
19839 TotalBodyExerciseName::BurpeeBoxJumpStepUpOver => "burpee_box_jump_step_up_over",
19840 TotalBodyExerciseName::LateralBarbellBurpee => "lateral_barbell_burpee",
19841 TotalBodyExerciseName::TotalBodyBurpeeOverBar => "total_body_burpee_over_bar",
19842 TotalBodyExerciseName::BurpeeBoxJumpOver => "burpee_box_jump_over",
19843 TotalBodyExerciseName::BurpeeWheelchair => "burpee_wheelchair",
19844 }
19845 }
19846
19847 pub fn from_value(value: u16) -> Option<Self> {
19849 match value {
19850 0 => Some(TotalBodyExerciseName::Burpee),
19851 1 => Some(TotalBodyExerciseName::WeightedBurpee),
19852 2 => Some(TotalBodyExerciseName::BurpeeBoxJump),
19853 3 => Some(TotalBodyExerciseName::WeightedBurpeeBoxJump),
19854 4 => Some(TotalBodyExerciseName::HighPullBurpee),
19855 5 => Some(TotalBodyExerciseName::ManMakers),
19856 6 => Some(TotalBodyExerciseName::OneArmBurpee),
19857 7 => Some(TotalBodyExerciseName::SquatThrusts),
19858 8 => Some(TotalBodyExerciseName::WeightedSquatThrusts),
19859 9 => Some(TotalBodyExerciseName::SquatPlankPushUp),
19860 10 => Some(TotalBodyExerciseName::WeightedSquatPlankPushUp),
19861 11 => Some(TotalBodyExerciseName::StandingTRotationBalance),
19862 12 => Some(TotalBodyExerciseName::WeightedStandingTRotationBalance),
19863 13 => Some(TotalBodyExerciseName::BarbellBurpee),
19864 15 => Some(TotalBodyExerciseName::BurpeeBoxJumpOverYesLiterallyJumpingOverTheBox),
19865 16 => Some(TotalBodyExerciseName::BurpeeBoxJumpStepUpOver),
19866 17 => Some(TotalBodyExerciseName::LateralBarbellBurpee),
19867 18 => Some(TotalBodyExerciseName::TotalBodyBurpeeOverBar),
19868 19 => Some(TotalBodyExerciseName::BurpeeBoxJumpOver),
19869 20 => Some(TotalBodyExerciseName::BurpeeWheelchair),
19870 _ => None,
19871 }
19872 }
19873
19874 pub fn from_str(name: &str) -> Option<Self> {
19876 match name {
19877 "burpee" => Some(TotalBodyExerciseName::Burpee),
19878 "weighted_burpee" => Some(TotalBodyExerciseName::WeightedBurpee),
19879 "burpee_box_jump" => Some(TotalBodyExerciseName::BurpeeBoxJump),
19880 "weighted_burpee_box_jump" => Some(TotalBodyExerciseName::WeightedBurpeeBoxJump),
19881 "high_pull_burpee" => Some(TotalBodyExerciseName::HighPullBurpee),
19882 "man_makers" => Some(TotalBodyExerciseName::ManMakers),
19883 "one_arm_burpee" => Some(TotalBodyExerciseName::OneArmBurpee),
19884 "squat_thrusts" => Some(TotalBodyExerciseName::SquatThrusts),
19885 "weighted_squat_thrusts" => Some(TotalBodyExerciseName::WeightedSquatThrusts),
19886 "squat_plank_push_up" => Some(TotalBodyExerciseName::SquatPlankPushUp),
19887 "weighted_squat_plank_push_up" => Some(TotalBodyExerciseName::WeightedSquatPlankPushUp),
19888 "standing_t_rotation_balance" => Some(TotalBodyExerciseName::StandingTRotationBalance),
19889 "weighted_standing_t_rotation_balance" => {
19890 Some(TotalBodyExerciseName::WeightedStandingTRotationBalance)
19891 }
19892 "barbell_burpee" => Some(TotalBodyExerciseName::BarbellBurpee),
19893 "burpee_box_jump_over_yes_literally_jumping_over_the_box" => {
19894 Some(TotalBodyExerciseName::BurpeeBoxJumpOverYesLiterallyJumpingOverTheBox)
19895 }
19896 "burpee_box_jump_step_up_over" => Some(TotalBodyExerciseName::BurpeeBoxJumpStepUpOver),
19897 "lateral_barbell_burpee" => Some(TotalBodyExerciseName::LateralBarbellBurpee),
19898 "total_body_burpee_over_bar" => Some(TotalBodyExerciseName::TotalBodyBurpeeOverBar),
19899 "burpee_box_jump_over" => Some(TotalBodyExerciseName::BurpeeBoxJumpOver),
19900 "burpee_wheelchair" => Some(TotalBodyExerciseName::BurpeeWheelchair),
19901 _ => None,
19902 }
19903 }
19904}
19905
19906#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
19907#[repr(u16)]
19908#[non_exhaustive]
19909pub enum MoveExerciseName {
19910 ArchAndCurl = 0,
19911 ArmCirclesWithBallBandAndWeight = 1,
19912 ArmStretch = 2,
19913 BackMassage = 3,
19914 BellyBreathing = 4,
19915 BridgeWithBall = 5,
19916 DiamondLegCrunch = 6,
19917 DiamondLegLift = 7,
19918 EightPointShoulderOpener = 8,
19919 FootRolling = 9,
19920 Footwork = 10,
19921 FootworkOnDisc = 11,
19922 ForwardFold = 12,
19923 FrogWithBand = 13,
19924 HalfRollUp = 14,
19925 HamstringCurl = 15,
19926 HamstringStretch = 16,
19927 HipStretch = 17,
19928 HugATreeWithBallBandAndWeight = 18,
19929 KneeCircles = 19,
19930 KneeFoldsOnDisc = 20,
19931 LateralFlexion = 21,
19932 LegStretchWithBand = 22,
19933 LegStretchWithLegCircles = 23,
19934 LowerLiftOnDisc = 24,
19935 LungeSquat = 25,
19936 LungesWithKneeLift = 26,
19937 MermaidStretch = 27,
19938 NeutralPelvicPosition = 28,
19939 PelvicClocksOnDisc = 29,
19940 PilatesPlieSquatsParallelTurnedOutFlatAndHeelsWithChair = 30,
19941 PiriformisStretch = 31,
19942 PlankKneeCrosses = 32,
19943 PlankKneePulls = 33,
19944 PlankUpDowns = 34,
19945 PrayerMudra = 35,
19946 PsoasLungeStretch = 36,
19947 RibcageBreathing = 37,
19948 RollDown = 38,
19949 RollUpWithWeightAndBand = 39,
19950 Saw = 40,
19951 ScapularStabilization = 41,
19952 ScissorsOnDisc = 42,
19953 SeatedHipStretchup = 43,
19954 SeatedTwist = 44,
19955 ShavingTheHeadWithBallBandAndWeight = 45,
19956 SpinalTwist = 46,
19957 SpinalTwistStretch = 47,
19958 SpineStretchForward = 48,
19959 SquatOpenArmTwistPose = 49,
19960 SquatsWithBall = 50,
19961 StandAndHang = 51,
19962 StandingSideStretch = 52,
19963 StandingSingleLegForwardBendWithItBandOpener = 53,
19964 StraightLegCrunchWithLegLift = 54,
19965 StraightLegCrunchWithLegLiftWithBall = 55,
19966 StraightLegCrunchWithLegsCrossed = 56,
19967 StraightLegCrunchWithLegsCrossedWithBall = 57,
19968 StraightLegDiagonalCrunch = 58,
19969 StraightLegDiagonalCrunchWithBall = 59,
19970 TailboneCurl = 60,
19971 ThroatLock = 61,
19972 TickTockSideRoll = 62,
19973 Twist = 63,
19974 VLegCrunches = 64,
19975 VSit = 65,
19976 ForwardFoldWheelchair = 66,
19977 ForwardFoldPlusWheelchair = 67,
19978 ArmCirclesLowForwardWheelchair = 68,
19979 ArmCirclesMidForwardWheelchair = 69,
19980 ArmCirclesHighForwardWheelchair = 70,
19981 ArmCirclesLowBackwardWheelchair = 71,
19982 ArmCirclesMidBackwardWheelchair = 72,
19983 ArmCirclesHighBackwardWheelchair = 73,
19984 CoreTwistsWheelchair = 74,
19985 ArmRaiseWheelchair = 75,
19986 ChestExpandWheelchair = 76,
19987 ArmExtendWheelchair = 77,
19988 ForwardBendWheelchair = 78,
19989 ToeTouchWheelchair = 79,
19990 ExtendedToeTouchWheelchair = 80,
19991 SeatedArmCircles = 81,
19992 TrunkRotations = 82,
19993 SeatedTrunkRotations = 83,
19994 ToeTouch = 84,
19995}
19996
19997impl MoveExerciseName {
19998 pub fn as_str(&self) -> &'static str {
20000 match self {
20001 MoveExerciseName::ArchAndCurl => "arch_and_curl",
20002 MoveExerciseName::ArmCirclesWithBallBandAndWeight => {
20003 "arm_circles_with_ball_band_and_weight"
20004 }
20005 MoveExerciseName::ArmStretch => "arm_stretch",
20006 MoveExerciseName::BackMassage => "back_massage",
20007 MoveExerciseName::BellyBreathing => "belly_breathing",
20008 MoveExerciseName::BridgeWithBall => "bridge_with_ball",
20009 MoveExerciseName::DiamondLegCrunch => "diamond_leg_crunch",
20010 MoveExerciseName::DiamondLegLift => "diamond_leg_lift",
20011 MoveExerciseName::EightPointShoulderOpener => "eight_point_shoulder_opener",
20012 MoveExerciseName::FootRolling => "foot_rolling",
20013 MoveExerciseName::Footwork => "footwork",
20014 MoveExerciseName::FootworkOnDisc => "footwork_on_disc",
20015 MoveExerciseName::ForwardFold => "forward_fold",
20016 MoveExerciseName::FrogWithBand => "frog_with_band",
20017 MoveExerciseName::HalfRollUp => "half_roll_up",
20018 MoveExerciseName::HamstringCurl => "hamstring_curl",
20019 MoveExerciseName::HamstringStretch => "hamstring_stretch",
20020 MoveExerciseName::HipStretch => "hip_stretch",
20021 MoveExerciseName::HugATreeWithBallBandAndWeight => {
20022 "hug_a_tree_with_ball_band_and_weight"
20023 }
20024 MoveExerciseName::KneeCircles => "knee_circles",
20025 MoveExerciseName::KneeFoldsOnDisc => "knee_folds_on_disc",
20026 MoveExerciseName::LateralFlexion => "lateral_flexion",
20027 MoveExerciseName::LegStretchWithBand => "leg_stretch_with_band",
20028 MoveExerciseName::LegStretchWithLegCircles => "leg_stretch_with_leg_circles",
20029 MoveExerciseName::LowerLiftOnDisc => "lower_lift_on_disc",
20030 MoveExerciseName::LungeSquat => "lunge_squat",
20031 MoveExerciseName::LungesWithKneeLift => "lunges_with_knee_lift",
20032 MoveExerciseName::MermaidStretch => "mermaid_stretch",
20033 MoveExerciseName::NeutralPelvicPosition => "neutral_pelvic_position",
20034 MoveExerciseName::PelvicClocksOnDisc => "pelvic_clocks_on_disc",
20035 MoveExerciseName::PilatesPlieSquatsParallelTurnedOutFlatAndHeelsWithChair => {
20036 "pilates_plie_squats_parallel_turned_out_flat_and_heels_with_chair"
20037 }
20038 MoveExerciseName::PiriformisStretch => "piriformis_stretch",
20039 MoveExerciseName::PlankKneeCrosses => "plank_knee_crosses",
20040 MoveExerciseName::PlankKneePulls => "plank_knee_pulls",
20041 MoveExerciseName::PlankUpDowns => "plank_up_downs",
20042 MoveExerciseName::PrayerMudra => "prayer_mudra",
20043 MoveExerciseName::PsoasLungeStretch => "psoas_lunge_stretch",
20044 MoveExerciseName::RibcageBreathing => "ribcage_breathing",
20045 MoveExerciseName::RollDown => "roll_down",
20046 MoveExerciseName::RollUpWithWeightAndBand => "roll_up_with_weight_and_band",
20047 MoveExerciseName::Saw => "saw",
20048 MoveExerciseName::ScapularStabilization => "scapular_stabilization",
20049 MoveExerciseName::ScissorsOnDisc => "scissors_on_disc",
20050 MoveExerciseName::SeatedHipStretchup => "seated_hip_stretchup",
20051 MoveExerciseName::SeatedTwist => "seated_twist",
20052 MoveExerciseName::ShavingTheHeadWithBallBandAndWeight => {
20053 "shaving_the_head_with_ball_band_and_weight"
20054 }
20055 MoveExerciseName::SpinalTwist => "spinal_twist",
20056 MoveExerciseName::SpinalTwistStretch => "spinal_twist_stretch",
20057 MoveExerciseName::SpineStretchForward => "spine_stretch_forward",
20058 MoveExerciseName::SquatOpenArmTwistPose => "squat_open_arm_twist_pose",
20059 MoveExerciseName::SquatsWithBall => "squats_with_ball",
20060 MoveExerciseName::StandAndHang => "stand_and_hang",
20061 MoveExerciseName::StandingSideStretch => "standing_side_stretch",
20062 MoveExerciseName::StandingSingleLegForwardBendWithItBandOpener => {
20063 "standing_single_leg_forward_bend_with_it_band_opener"
20064 }
20065 MoveExerciseName::StraightLegCrunchWithLegLift => "straight_leg_crunch_with_leg_lift",
20066 MoveExerciseName::StraightLegCrunchWithLegLiftWithBall => {
20067 "straight_leg_crunch_with_leg_lift_with_ball"
20068 }
20069 MoveExerciseName::StraightLegCrunchWithLegsCrossed => {
20070 "straight_leg_crunch_with_legs_crossed"
20071 }
20072 MoveExerciseName::StraightLegCrunchWithLegsCrossedWithBall => {
20073 "straight_leg_crunch_with_legs_crossed_with_ball"
20074 }
20075 MoveExerciseName::StraightLegDiagonalCrunch => "straight_leg_diagonal_crunch",
20076 MoveExerciseName::StraightLegDiagonalCrunchWithBall => {
20077 "straight_leg_diagonal_crunch_with_ball"
20078 }
20079 MoveExerciseName::TailboneCurl => "tailbone_curl",
20080 MoveExerciseName::ThroatLock => "throat_lock",
20081 MoveExerciseName::TickTockSideRoll => "tick_tock_side_roll",
20082 MoveExerciseName::Twist => "twist",
20083 MoveExerciseName::VLegCrunches => "v_leg_crunches",
20084 MoveExerciseName::VSit => "v_sit",
20085 MoveExerciseName::ForwardFoldWheelchair => "forward_fold_wheelchair",
20086 MoveExerciseName::ForwardFoldPlusWheelchair => "forward_fold_plus_wheelchair",
20087 MoveExerciseName::ArmCirclesLowForwardWheelchair => {
20088 "arm_circles_low_forward_wheelchair"
20089 }
20090 MoveExerciseName::ArmCirclesMidForwardWheelchair => {
20091 "arm_circles_mid_forward_wheelchair"
20092 }
20093 MoveExerciseName::ArmCirclesHighForwardWheelchair => {
20094 "arm_circles_high_forward_wheelchair"
20095 }
20096 MoveExerciseName::ArmCirclesLowBackwardWheelchair => {
20097 "arm_circles_low_backward_wheelchair"
20098 }
20099 MoveExerciseName::ArmCirclesMidBackwardWheelchair => {
20100 "arm_circles_mid_backward_wheelchair"
20101 }
20102 MoveExerciseName::ArmCirclesHighBackwardWheelchair => {
20103 "arm_circles_high_backward_wheelchair"
20104 }
20105 MoveExerciseName::CoreTwistsWheelchair => "core_twists_wheelchair",
20106 MoveExerciseName::ArmRaiseWheelchair => "arm_raise_wheelchair",
20107 MoveExerciseName::ChestExpandWheelchair => "chest_expand_wheelchair",
20108 MoveExerciseName::ArmExtendWheelchair => "arm_extend_wheelchair",
20109 MoveExerciseName::ForwardBendWheelchair => "forward_bend_wheelchair",
20110 MoveExerciseName::ToeTouchWheelchair => "toe_touch_wheelchair",
20111 MoveExerciseName::ExtendedToeTouchWheelchair => "extended_toe_touch_wheelchair",
20112 MoveExerciseName::SeatedArmCircles => "seated_arm_circles",
20113 MoveExerciseName::TrunkRotations => "trunk_rotations",
20114 MoveExerciseName::SeatedTrunkRotations => "seated_trunk_rotations",
20115 MoveExerciseName::ToeTouch => "toe_touch",
20116 }
20117 }
20118
20119 pub fn from_value(value: u16) -> Option<Self> {
20121 match value {
20122 0 => Some(MoveExerciseName::ArchAndCurl),
20123 1 => Some(MoveExerciseName::ArmCirclesWithBallBandAndWeight),
20124 2 => Some(MoveExerciseName::ArmStretch),
20125 3 => Some(MoveExerciseName::BackMassage),
20126 4 => Some(MoveExerciseName::BellyBreathing),
20127 5 => Some(MoveExerciseName::BridgeWithBall),
20128 6 => Some(MoveExerciseName::DiamondLegCrunch),
20129 7 => Some(MoveExerciseName::DiamondLegLift),
20130 8 => Some(MoveExerciseName::EightPointShoulderOpener),
20131 9 => Some(MoveExerciseName::FootRolling),
20132 10 => Some(MoveExerciseName::Footwork),
20133 11 => Some(MoveExerciseName::FootworkOnDisc),
20134 12 => Some(MoveExerciseName::ForwardFold),
20135 13 => Some(MoveExerciseName::FrogWithBand),
20136 14 => Some(MoveExerciseName::HalfRollUp),
20137 15 => Some(MoveExerciseName::HamstringCurl),
20138 16 => Some(MoveExerciseName::HamstringStretch),
20139 17 => Some(MoveExerciseName::HipStretch),
20140 18 => Some(MoveExerciseName::HugATreeWithBallBandAndWeight),
20141 19 => Some(MoveExerciseName::KneeCircles),
20142 20 => Some(MoveExerciseName::KneeFoldsOnDisc),
20143 21 => Some(MoveExerciseName::LateralFlexion),
20144 22 => Some(MoveExerciseName::LegStretchWithBand),
20145 23 => Some(MoveExerciseName::LegStretchWithLegCircles),
20146 24 => Some(MoveExerciseName::LowerLiftOnDisc),
20147 25 => Some(MoveExerciseName::LungeSquat),
20148 26 => Some(MoveExerciseName::LungesWithKneeLift),
20149 27 => Some(MoveExerciseName::MermaidStretch),
20150 28 => Some(MoveExerciseName::NeutralPelvicPosition),
20151 29 => Some(MoveExerciseName::PelvicClocksOnDisc),
20152 30 => Some(MoveExerciseName::PilatesPlieSquatsParallelTurnedOutFlatAndHeelsWithChair),
20153 31 => Some(MoveExerciseName::PiriformisStretch),
20154 32 => Some(MoveExerciseName::PlankKneeCrosses),
20155 33 => Some(MoveExerciseName::PlankKneePulls),
20156 34 => Some(MoveExerciseName::PlankUpDowns),
20157 35 => Some(MoveExerciseName::PrayerMudra),
20158 36 => Some(MoveExerciseName::PsoasLungeStretch),
20159 37 => Some(MoveExerciseName::RibcageBreathing),
20160 38 => Some(MoveExerciseName::RollDown),
20161 39 => Some(MoveExerciseName::RollUpWithWeightAndBand),
20162 40 => Some(MoveExerciseName::Saw),
20163 41 => Some(MoveExerciseName::ScapularStabilization),
20164 42 => Some(MoveExerciseName::ScissorsOnDisc),
20165 43 => Some(MoveExerciseName::SeatedHipStretchup),
20166 44 => Some(MoveExerciseName::SeatedTwist),
20167 45 => Some(MoveExerciseName::ShavingTheHeadWithBallBandAndWeight),
20168 46 => Some(MoveExerciseName::SpinalTwist),
20169 47 => Some(MoveExerciseName::SpinalTwistStretch),
20170 48 => Some(MoveExerciseName::SpineStretchForward),
20171 49 => Some(MoveExerciseName::SquatOpenArmTwistPose),
20172 50 => Some(MoveExerciseName::SquatsWithBall),
20173 51 => Some(MoveExerciseName::StandAndHang),
20174 52 => Some(MoveExerciseName::StandingSideStretch),
20175 53 => Some(MoveExerciseName::StandingSingleLegForwardBendWithItBandOpener),
20176 54 => Some(MoveExerciseName::StraightLegCrunchWithLegLift),
20177 55 => Some(MoveExerciseName::StraightLegCrunchWithLegLiftWithBall),
20178 56 => Some(MoveExerciseName::StraightLegCrunchWithLegsCrossed),
20179 57 => Some(MoveExerciseName::StraightLegCrunchWithLegsCrossedWithBall),
20180 58 => Some(MoveExerciseName::StraightLegDiagonalCrunch),
20181 59 => Some(MoveExerciseName::StraightLegDiagonalCrunchWithBall),
20182 60 => Some(MoveExerciseName::TailboneCurl),
20183 61 => Some(MoveExerciseName::ThroatLock),
20184 62 => Some(MoveExerciseName::TickTockSideRoll),
20185 63 => Some(MoveExerciseName::Twist),
20186 64 => Some(MoveExerciseName::VLegCrunches),
20187 65 => Some(MoveExerciseName::VSit),
20188 66 => Some(MoveExerciseName::ForwardFoldWheelchair),
20189 67 => Some(MoveExerciseName::ForwardFoldPlusWheelchair),
20190 68 => Some(MoveExerciseName::ArmCirclesLowForwardWheelchair),
20191 69 => Some(MoveExerciseName::ArmCirclesMidForwardWheelchair),
20192 70 => Some(MoveExerciseName::ArmCirclesHighForwardWheelchair),
20193 71 => Some(MoveExerciseName::ArmCirclesLowBackwardWheelchair),
20194 72 => Some(MoveExerciseName::ArmCirclesMidBackwardWheelchair),
20195 73 => Some(MoveExerciseName::ArmCirclesHighBackwardWheelchair),
20196 74 => Some(MoveExerciseName::CoreTwistsWheelchair),
20197 75 => Some(MoveExerciseName::ArmRaiseWheelchair),
20198 76 => Some(MoveExerciseName::ChestExpandWheelchair),
20199 77 => Some(MoveExerciseName::ArmExtendWheelchair),
20200 78 => Some(MoveExerciseName::ForwardBendWheelchair),
20201 79 => Some(MoveExerciseName::ToeTouchWheelchair),
20202 80 => Some(MoveExerciseName::ExtendedToeTouchWheelchair),
20203 81 => Some(MoveExerciseName::SeatedArmCircles),
20204 82 => Some(MoveExerciseName::TrunkRotations),
20205 83 => Some(MoveExerciseName::SeatedTrunkRotations),
20206 84 => Some(MoveExerciseName::ToeTouch),
20207 _ => None,
20208 }
20209 }
20210
20211 pub fn from_str(name: &str) -> Option<Self> {
20213 match name {
20214 "arch_and_curl" => Some(MoveExerciseName::ArchAndCurl),
20215 "arm_circles_with_ball_band_and_weight" => {
20216 Some(MoveExerciseName::ArmCirclesWithBallBandAndWeight)
20217 }
20218 "arm_stretch" => Some(MoveExerciseName::ArmStretch),
20219 "back_massage" => Some(MoveExerciseName::BackMassage),
20220 "belly_breathing" => Some(MoveExerciseName::BellyBreathing),
20221 "bridge_with_ball" => Some(MoveExerciseName::BridgeWithBall),
20222 "diamond_leg_crunch" => Some(MoveExerciseName::DiamondLegCrunch),
20223 "diamond_leg_lift" => Some(MoveExerciseName::DiamondLegLift),
20224 "eight_point_shoulder_opener" => Some(MoveExerciseName::EightPointShoulderOpener),
20225 "foot_rolling" => Some(MoveExerciseName::FootRolling),
20226 "footwork" => Some(MoveExerciseName::Footwork),
20227 "footwork_on_disc" => Some(MoveExerciseName::FootworkOnDisc),
20228 "forward_fold" => Some(MoveExerciseName::ForwardFold),
20229 "frog_with_band" => Some(MoveExerciseName::FrogWithBand),
20230 "half_roll_up" => Some(MoveExerciseName::HalfRollUp),
20231 "hamstring_curl" => Some(MoveExerciseName::HamstringCurl),
20232 "hamstring_stretch" => Some(MoveExerciseName::HamstringStretch),
20233 "hip_stretch" => Some(MoveExerciseName::HipStretch),
20234 "hug_a_tree_with_ball_band_and_weight" => {
20235 Some(MoveExerciseName::HugATreeWithBallBandAndWeight)
20236 }
20237 "knee_circles" => Some(MoveExerciseName::KneeCircles),
20238 "knee_folds_on_disc" => Some(MoveExerciseName::KneeFoldsOnDisc),
20239 "lateral_flexion" => Some(MoveExerciseName::LateralFlexion),
20240 "leg_stretch_with_band" => Some(MoveExerciseName::LegStretchWithBand),
20241 "leg_stretch_with_leg_circles" => Some(MoveExerciseName::LegStretchWithLegCircles),
20242 "lower_lift_on_disc" => Some(MoveExerciseName::LowerLiftOnDisc),
20243 "lunge_squat" => Some(MoveExerciseName::LungeSquat),
20244 "lunges_with_knee_lift" => Some(MoveExerciseName::LungesWithKneeLift),
20245 "mermaid_stretch" => Some(MoveExerciseName::MermaidStretch),
20246 "neutral_pelvic_position" => Some(MoveExerciseName::NeutralPelvicPosition),
20247 "pelvic_clocks_on_disc" => Some(MoveExerciseName::PelvicClocksOnDisc),
20248 "pilates_plie_squats_parallel_turned_out_flat_and_heels_with_chair" => {
20249 Some(MoveExerciseName::PilatesPlieSquatsParallelTurnedOutFlatAndHeelsWithChair)
20250 }
20251 "piriformis_stretch" => Some(MoveExerciseName::PiriformisStretch),
20252 "plank_knee_crosses" => Some(MoveExerciseName::PlankKneeCrosses),
20253 "plank_knee_pulls" => Some(MoveExerciseName::PlankKneePulls),
20254 "plank_up_downs" => Some(MoveExerciseName::PlankUpDowns),
20255 "prayer_mudra" => Some(MoveExerciseName::PrayerMudra),
20256 "psoas_lunge_stretch" => Some(MoveExerciseName::PsoasLungeStretch),
20257 "ribcage_breathing" => Some(MoveExerciseName::RibcageBreathing),
20258 "roll_down" => Some(MoveExerciseName::RollDown),
20259 "roll_up_with_weight_and_band" => Some(MoveExerciseName::RollUpWithWeightAndBand),
20260 "saw" => Some(MoveExerciseName::Saw),
20261 "scapular_stabilization" => Some(MoveExerciseName::ScapularStabilization),
20262 "scissors_on_disc" => Some(MoveExerciseName::ScissorsOnDisc),
20263 "seated_hip_stretchup" => Some(MoveExerciseName::SeatedHipStretchup),
20264 "seated_twist" => Some(MoveExerciseName::SeatedTwist),
20265 "shaving_the_head_with_ball_band_and_weight" => {
20266 Some(MoveExerciseName::ShavingTheHeadWithBallBandAndWeight)
20267 }
20268 "spinal_twist" => Some(MoveExerciseName::SpinalTwist),
20269 "spinal_twist_stretch" => Some(MoveExerciseName::SpinalTwistStretch),
20270 "spine_stretch_forward" => Some(MoveExerciseName::SpineStretchForward),
20271 "squat_open_arm_twist_pose" => Some(MoveExerciseName::SquatOpenArmTwistPose),
20272 "squats_with_ball" => Some(MoveExerciseName::SquatsWithBall),
20273 "stand_and_hang" => Some(MoveExerciseName::StandAndHang),
20274 "standing_side_stretch" => Some(MoveExerciseName::StandingSideStretch),
20275 "standing_single_leg_forward_bend_with_it_band_opener" => {
20276 Some(MoveExerciseName::StandingSingleLegForwardBendWithItBandOpener)
20277 }
20278 "straight_leg_crunch_with_leg_lift" => {
20279 Some(MoveExerciseName::StraightLegCrunchWithLegLift)
20280 }
20281 "straight_leg_crunch_with_leg_lift_with_ball" => {
20282 Some(MoveExerciseName::StraightLegCrunchWithLegLiftWithBall)
20283 }
20284 "straight_leg_crunch_with_legs_crossed" => {
20285 Some(MoveExerciseName::StraightLegCrunchWithLegsCrossed)
20286 }
20287 "straight_leg_crunch_with_legs_crossed_with_ball" => {
20288 Some(MoveExerciseName::StraightLegCrunchWithLegsCrossedWithBall)
20289 }
20290 "straight_leg_diagonal_crunch" => Some(MoveExerciseName::StraightLegDiagonalCrunch),
20291 "straight_leg_diagonal_crunch_with_ball" => {
20292 Some(MoveExerciseName::StraightLegDiagonalCrunchWithBall)
20293 }
20294 "tailbone_curl" => Some(MoveExerciseName::TailboneCurl),
20295 "throat_lock" => Some(MoveExerciseName::ThroatLock),
20296 "tick_tock_side_roll" => Some(MoveExerciseName::TickTockSideRoll),
20297 "twist" => Some(MoveExerciseName::Twist),
20298 "v_leg_crunches" => Some(MoveExerciseName::VLegCrunches),
20299 "v_sit" => Some(MoveExerciseName::VSit),
20300 "forward_fold_wheelchair" => Some(MoveExerciseName::ForwardFoldWheelchair),
20301 "forward_fold_plus_wheelchair" => Some(MoveExerciseName::ForwardFoldPlusWheelchair),
20302 "arm_circles_low_forward_wheelchair" => {
20303 Some(MoveExerciseName::ArmCirclesLowForwardWheelchair)
20304 }
20305 "arm_circles_mid_forward_wheelchair" => {
20306 Some(MoveExerciseName::ArmCirclesMidForwardWheelchair)
20307 }
20308 "arm_circles_high_forward_wheelchair" => {
20309 Some(MoveExerciseName::ArmCirclesHighForwardWheelchair)
20310 }
20311 "arm_circles_low_backward_wheelchair" => {
20312 Some(MoveExerciseName::ArmCirclesLowBackwardWheelchair)
20313 }
20314 "arm_circles_mid_backward_wheelchair" => {
20315 Some(MoveExerciseName::ArmCirclesMidBackwardWheelchair)
20316 }
20317 "arm_circles_high_backward_wheelchair" => {
20318 Some(MoveExerciseName::ArmCirclesHighBackwardWheelchair)
20319 }
20320 "core_twists_wheelchair" => Some(MoveExerciseName::CoreTwistsWheelchair),
20321 "arm_raise_wheelchair" => Some(MoveExerciseName::ArmRaiseWheelchair),
20322 "chest_expand_wheelchair" => Some(MoveExerciseName::ChestExpandWheelchair),
20323 "arm_extend_wheelchair" => Some(MoveExerciseName::ArmExtendWheelchair),
20324 "forward_bend_wheelchair" => Some(MoveExerciseName::ForwardBendWheelchair),
20325 "toe_touch_wheelchair" => Some(MoveExerciseName::ToeTouchWheelchair),
20326 "extended_toe_touch_wheelchair" => Some(MoveExerciseName::ExtendedToeTouchWheelchair),
20327 "seated_arm_circles" => Some(MoveExerciseName::SeatedArmCircles),
20328 "trunk_rotations" => Some(MoveExerciseName::TrunkRotations),
20329 "seated_trunk_rotations" => Some(MoveExerciseName::SeatedTrunkRotations),
20330 "toe_touch" => Some(MoveExerciseName::ToeTouch),
20331 _ => None,
20332 }
20333 }
20334}
20335
20336#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
20337#[repr(u16)]
20338#[non_exhaustive]
20339pub enum PoseExerciseName {
20340 AllFours = 0,
20341 AnkleToKnee = 1,
20342 BabyCobra = 2,
20343 Boat = 3,
20344 BoundAngle = 4,
20345 BoundSeatedSingleLegForwardBend = 5,
20346 Bow = 6,
20347 BowedHalfMoon = 7,
20348 Bridge = 8,
20349 Cat = 9,
20350 Chair = 10,
20351 Childs = 11,
20352 Corpse = 12,
20353 CowFace = 13,
20354 Cow = 14,
20355 DevotionalWarrior = 15,
20356 DolphinPlank = 16,
20357 Dolphin = 17,
20358 DownDogKneeToNose = 18,
20359 DownDogSplit = 19,
20360 DownDogSplitOpenHipBentKnee = 20,
20361 DownwardFacingDog = 21,
20362 Eagle = 22,
20363 EasySeated = 23,
20364 ExtendedPuppy = 24,
20365 ExtendedSideAngle = 25,
20366 Fish = 26,
20367 FourLimbedStaff = 27,
20368 FullSplit = 28,
20369 Gate = 29,
20370 HalfChairHalfAnkleToKnee = 30,
20371 HalfMoon = 31,
20372 HeadToKnee = 32,
20373 Heron = 33,
20374 Heros = 34,
20375 HighLunge = 35,
20376 KneesChestChin = 36,
20377 Lizard = 37,
20378 Locust = 38,
20379 LowLunge = 39,
20380 LowLungeTwist = 40,
20381 LowLungeWithKneeDown = 41,
20382 Mermaid = 42,
20383 Mountain = 43,
20384 OneLeggedDownwardFacingPoseOpenHipBentKnee = 44,
20385 OneLeggedPigeon = 45,
20386 PeacefulWarrior = 46,
20387 Plank = 47,
20388 Plow = 48,
20389 ReclinedHandToFoot = 49,
20390 RevolvedHalfMoon = 50,
20391 RevolvedHeadToKnee = 51,
20392 RevolvedTriangle = 52,
20393 RunnersLunge = 53,
20394 SeatedEasySideBend = 54,
20395 SeatedEasyTwist = 55,
20396 SeatedLongLegForwardBend = 56,
20397 SeatedWideLegForwardBend = 57,
20398 ShoulderStand = 58,
20399 SideBoat = 59,
20400 SidePlank = 60,
20401 Sphinx = 61,
20402 SquatOpenArmTwist = 62,
20403 SquatPalmPress = 63,
20404 Staff = 64,
20405 StandingArmsUp = 65,
20406 StandingForwardBendHalfwayUp = 66,
20407 StandingForwardBend = 67,
20408 StandingSideOpener = 68,
20409 StandingSingleLegForwardBend = 69,
20410 StandingSplit = 70,
20411 StandingWideLegForwardBend = 71,
20412 StandingWideLegForwardBendWithTwist = 72,
20413 SupineSpinalTwist = 73,
20414 TableTop = 74,
20415 ThreadTheNeedle = 75,
20416 Thunderbolt = 76,
20417 ThunderboltPoseBothSidesArmStretch = 77,
20418 Tree = 78,
20419 Triangle = 79,
20420 UpDog = 80,
20421 UpwardFacingPlank = 81,
20422 WarriorOne = 82,
20423 WarriorThree = 83,
20424 WarriorTwo = 84,
20425 Wheel = 85,
20426 WideSideLunge = 86,
20427 DeepBreathingWheelchair = 87,
20428 DeepBreathingLowWheelchair = 88,
20429 DeepBreathingMidWheelchair = 89,
20430 DeepBreathingHighWheelchair = 90,
20431 PrayerWheelchair = 91,
20432 OverheadPrayerWheelchair = 92,
20433 CactusWheelchair = 93,
20434 BreathingPunchesWheelchair = 94,
20435 BreathingPunchesExtendedWheelchair = 95,
20436 BreathingPunchesOverheadWheelchair = 96,
20437 BreathingPunchesOverheadAndDownWheelchair = 97,
20438 BreathingPunchesSideWheelchair = 98,
20439 BreathingPunchesExtendedSideWheelchair = 99,
20440 BreathingPunchesOverheadSideWheelchair = 100,
20441 BreathingPunchesOverheadAndDownSideWheelchair = 101,
20442 LeftHandBackWheelchair = 102,
20443 TriangleWheelchair = 103,
20444 ThreadTheNeedleWheelchair = 104,
20445 NeckFlexionAndExtensionWheelchair = 105,
20446 NeckLateralFlexionWheelchair = 106,
20447 SpineFlexionAndExtensionWheelchair = 107,
20448 SpineRotationWheelchair = 108,
20449 SpineLateralFlexionWheelchair = 109,
20450 AlternativeSkiingWheelchair = 110,
20451 ReachForwardWheelchair = 111,
20452 WarriorWheelchair = 112,
20453 ReverseWarriorWheelchair = 113,
20454 DownwardFacingDogToCobra = 114,
20455 SeatedCatCow = 115,
20456}
20457
20458impl PoseExerciseName {
20459 pub fn as_str(&self) -> &'static str {
20461 match self {
20462 PoseExerciseName::AllFours => "all_fours",
20463 PoseExerciseName::AnkleToKnee => "ankle_to_knee",
20464 PoseExerciseName::BabyCobra => "baby_cobra",
20465 PoseExerciseName::Boat => "boat",
20466 PoseExerciseName::BoundAngle => "bound_angle",
20467 PoseExerciseName::BoundSeatedSingleLegForwardBend => {
20468 "bound_seated_single_leg_forward_bend"
20469 }
20470 PoseExerciseName::Bow => "bow",
20471 PoseExerciseName::BowedHalfMoon => "bowed_half_moon",
20472 PoseExerciseName::Bridge => "bridge",
20473 PoseExerciseName::Cat => "cat",
20474 PoseExerciseName::Chair => "chair",
20475 PoseExerciseName::Childs => "childs",
20476 PoseExerciseName::Corpse => "corpse",
20477 PoseExerciseName::CowFace => "cow_face",
20478 PoseExerciseName::Cow => "cow",
20479 PoseExerciseName::DevotionalWarrior => "devotional_warrior",
20480 PoseExerciseName::DolphinPlank => "dolphin_plank",
20481 PoseExerciseName::Dolphin => "dolphin",
20482 PoseExerciseName::DownDogKneeToNose => "down_dog_knee_to_nose",
20483 PoseExerciseName::DownDogSplit => "down_dog_split",
20484 PoseExerciseName::DownDogSplitOpenHipBentKnee => "down_dog_split_open_hip_bent_knee",
20485 PoseExerciseName::DownwardFacingDog => "downward_facing_dog",
20486 PoseExerciseName::Eagle => "eagle",
20487 PoseExerciseName::EasySeated => "easy_seated",
20488 PoseExerciseName::ExtendedPuppy => "extended_puppy",
20489 PoseExerciseName::ExtendedSideAngle => "extended_side_angle",
20490 PoseExerciseName::Fish => "fish",
20491 PoseExerciseName::FourLimbedStaff => "four_limbed_staff",
20492 PoseExerciseName::FullSplit => "full_split",
20493 PoseExerciseName::Gate => "gate",
20494 PoseExerciseName::HalfChairHalfAnkleToKnee => "half_chair_half_ankle_to_knee",
20495 PoseExerciseName::HalfMoon => "half_moon",
20496 PoseExerciseName::HeadToKnee => "head_to_knee",
20497 PoseExerciseName::Heron => "heron",
20498 PoseExerciseName::Heros => "heros",
20499 PoseExerciseName::HighLunge => "high_lunge",
20500 PoseExerciseName::KneesChestChin => "knees_chest_chin",
20501 PoseExerciseName::Lizard => "lizard",
20502 PoseExerciseName::Locust => "locust",
20503 PoseExerciseName::LowLunge => "low_lunge",
20504 PoseExerciseName::LowLungeTwist => "low_lunge_twist",
20505 PoseExerciseName::LowLungeWithKneeDown => "low_lunge_with_knee_down",
20506 PoseExerciseName::Mermaid => "mermaid",
20507 PoseExerciseName::Mountain => "mountain",
20508 PoseExerciseName::OneLeggedDownwardFacingPoseOpenHipBentKnee => {
20509 "one_legged_downward_facing_pose_open_hip_bent_knee"
20510 }
20511 PoseExerciseName::OneLeggedPigeon => "one_legged_pigeon",
20512 PoseExerciseName::PeacefulWarrior => "peaceful_warrior",
20513 PoseExerciseName::Plank => "plank",
20514 PoseExerciseName::Plow => "plow",
20515 PoseExerciseName::ReclinedHandToFoot => "reclined_hand_to_foot",
20516 PoseExerciseName::RevolvedHalfMoon => "revolved_half_moon",
20517 PoseExerciseName::RevolvedHeadToKnee => "revolved_head_to_knee",
20518 PoseExerciseName::RevolvedTriangle => "revolved_triangle",
20519 PoseExerciseName::RunnersLunge => "runners_lunge",
20520 PoseExerciseName::SeatedEasySideBend => "seated_easy_side_bend",
20521 PoseExerciseName::SeatedEasyTwist => "seated_easy_twist",
20522 PoseExerciseName::SeatedLongLegForwardBend => "seated_long_leg_forward_bend",
20523 PoseExerciseName::SeatedWideLegForwardBend => "seated_wide_leg_forward_bend",
20524 PoseExerciseName::ShoulderStand => "shoulder_stand",
20525 PoseExerciseName::SideBoat => "side_boat",
20526 PoseExerciseName::SidePlank => "side_plank",
20527 PoseExerciseName::Sphinx => "sphinx",
20528 PoseExerciseName::SquatOpenArmTwist => "squat_open_arm_twist",
20529 PoseExerciseName::SquatPalmPress => "squat_palm_press",
20530 PoseExerciseName::Staff => "staff",
20531 PoseExerciseName::StandingArmsUp => "standing_arms_up",
20532 PoseExerciseName::StandingForwardBendHalfwayUp => "standing_forward_bend_halfway_up",
20533 PoseExerciseName::StandingForwardBend => "standing_forward_bend",
20534 PoseExerciseName::StandingSideOpener => "standing_side_opener",
20535 PoseExerciseName::StandingSingleLegForwardBend => "standing_single_leg_forward_bend",
20536 PoseExerciseName::StandingSplit => "standing_split",
20537 PoseExerciseName::StandingWideLegForwardBend => "standing_wide_leg_forward_bend",
20538 PoseExerciseName::StandingWideLegForwardBendWithTwist => {
20539 "standing_wide_leg_forward_bend_with_twist"
20540 }
20541 PoseExerciseName::SupineSpinalTwist => "supine_spinal_twist",
20542 PoseExerciseName::TableTop => "table_top",
20543 PoseExerciseName::ThreadTheNeedle => "thread_the_needle",
20544 PoseExerciseName::Thunderbolt => "thunderbolt",
20545 PoseExerciseName::ThunderboltPoseBothSidesArmStretch => {
20546 "thunderbolt_pose_both_sides_arm_stretch"
20547 }
20548 PoseExerciseName::Tree => "tree",
20549 PoseExerciseName::Triangle => "triangle",
20550 PoseExerciseName::UpDog => "up_dog",
20551 PoseExerciseName::UpwardFacingPlank => "upward_facing_plank",
20552 PoseExerciseName::WarriorOne => "warrior_one",
20553 PoseExerciseName::WarriorThree => "warrior_three",
20554 PoseExerciseName::WarriorTwo => "warrior_two",
20555 PoseExerciseName::Wheel => "wheel",
20556 PoseExerciseName::WideSideLunge => "wide_side_lunge",
20557 PoseExerciseName::DeepBreathingWheelchair => "deep_breathing_wheelchair",
20558 PoseExerciseName::DeepBreathingLowWheelchair => "deep_breathing_low_wheelchair",
20559 PoseExerciseName::DeepBreathingMidWheelchair => "deep_breathing_mid_wheelchair",
20560 PoseExerciseName::DeepBreathingHighWheelchair => "deep_breathing_high_wheelchair",
20561 PoseExerciseName::PrayerWheelchair => "prayer_wheelchair",
20562 PoseExerciseName::OverheadPrayerWheelchair => "overhead_prayer_wheelchair",
20563 PoseExerciseName::CactusWheelchair => "cactus_wheelchair",
20564 PoseExerciseName::BreathingPunchesWheelchair => "breathing_punches_wheelchair",
20565 PoseExerciseName::BreathingPunchesExtendedWheelchair => {
20566 "breathing_punches_extended_wheelchair"
20567 }
20568 PoseExerciseName::BreathingPunchesOverheadWheelchair => {
20569 "breathing_punches_overhead_wheelchair"
20570 }
20571 PoseExerciseName::BreathingPunchesOverheadAndDownWheelchair => {
20572 "breathing_punches_overhead_and_down_wheelchair"
20573 }
20574 PoseExerciseName::BreathingPunchesSideWheelchair => "breathing_punches_side_wheelchair",
20575 PoseExerciseName::BreathingPunchesExtendedSideWheelchair => {
20576 "breathing_punches_extended_side_wheelchair"
20577 }
20578 PoseExerciseName::BreathingPunchesOverheadSideWheelchair => {
20579 "breathing_punches_overhead_side_wheelchair"
20580 }
20581 PoseExerciseName::BreathingPunchesOverheadAndDownSideWheelchair => {
20582 "breathing_punches_overhead_and_down_side_wheelchair"
20583 }
20584 PoseExerciseName::LeftHandBackWheelchair => "left_hand_back_wheelchair",
20585 PoseExerciseName::TriangleWheelchair => "triangle_wheelchair",
20586 PoseExerciseName::ThreadTheNeedleWheelchair => "thread_the_needle_wheelchair",
20587 PoseExerciseName::NeckFlexionAndExtensionWheelchair => {
20588 "neck_flexion_and_extension_wheelchair"
20589 }
20590 PoseExerciseName::NeckLateralFlexionWheelchair => "neck_lateral_flexion_wheelchair",
20591 PoseExerciseName::SpineFlexionAndExtensionWheelchair => {
20592 "spine_flexion_and_extension_wheelchair"
20593 }
20594 PoseExerciseName::SpineRotationWheelchair => "spine_rotation_wheelchair",
20595 PoseExerciseName::SpineLateralFlexionWheelchair => "spine_lateral_flexion_wheelchair",
20596 PoseExerciseName::AlternativeSkiingWheelchair => "alternative_skiing_wheelchair",
20597 PoseExerciseName::ReachForwardWheelchair => "reach_forward_wheelchair",
20598 PoseExerciseName::WarriorWheelchair => "warrior_wheelchair",
20599 PoseExerciseName::ReverseWarriorWheelchair => "reverse_warrior_wheelchair",
20600 PoseExerciseName::DownwardFacingDogToCobra => "downward_facing_dog_to_cobra",
20601 PoseExerciseName::SeatedCatCow => "seated_cat_cow",
20602 }
20603 }
20604
20605 pub fn from_value(value: u16) -> Option<Self> {
20607 match value {
20608 0 => Some(PoseExerciseName::AllFours),
20609 1 => Some(PoseExerciseName::AnkleToKnee),
20610 2 => Some(PoseExerciseName::BabyCobra),
20611 3 => Some(PoseExerciseName::Boat),
20612 4 => Some(PoseExerciseName::BoundAngle),
20613 5 => Some(PoseExerciseName::BoundSeatedSingleLegForwardBend),
20614 6 => Some(PoseExerciseName::Bow),
20615 7 => Some(PoseExerciseName::BowedHalfMoon),
20616 8 => Some(PoseExerciseName::Bridge),
20617 9 => Some(PoseExerciseName::Cat),
20618 10 => Some(PoseExerciseName::Chair),
20619 11 => Some(PoseExerciseName::Childs),
20620 12 => Some(PoseExerciseName::Corpse),
20621 13 => Some(PoseExerciseName::CowFace),
20622 14 => Some(PoseExerciseName::Cow),
20623 15 => Some(PoseExerciseName::DevotionalWarrior),
20624 16 => Some(PoseExerciseName::DolphinPlank),
20625 17 => Some(PoseExerciseName::Dolphin),
20626 18 => Some(PoseExerciseName::DownDogKneeToNose),
20627 19 => Some(PoseExerciseName::DownDogSplit),
20628 20 => Some(PoseExerciseName::DownDogSplitOpenHipBentKnee),
20629 21 => Some(PoseExerciseName::DownwardFacingDog),
20630 22 => Some(PoseExerciseName::Eagle),
20631 23 => Some(PoseExerciseName::EasySeated),
20632 24 => Some(PoseExerciseName::ExtendedPuppy),
20633 25 => Some(PoseExerciseName::ExtendedSideAngle),
20634 26 => Some(PoseExerciseName::Fish),
20635 27 => Some(PoseExerciseName::FourLimbedStaff),
20636 28 => Some(PoseExerciseName::FullSplit),
20637 29 => Some(PoseExerciseName::Gate),
20638 30 => Some(PoseExerciseName::HalfChairHalfAnkleToKnee),
20639 31 => Some(PoseExerciseName::HalfMoon),
20640 32 => Some(PoseExerciseName::HeadToKnee),
20641 33 => Some(PoseExerciseName::Heron),
20642 34 => Some(PoseExerciseName::Heros),
20643 35 => Some(PoseExerciseName::HighLunge),
20644 36 => Some(PoseExerciseName::KneesChestChin),
20645 37 => Some(PoseExerciseName::Lizard),
20646 38 => Some(PoseExerciseName::Locust),
20647 39 => Some(PoseExerciseName::LowLunge),
20648 40 => Some(PoseExerciseName::LowLungeTwist),
20649 41 => Some(PoseExerciseName::LowLungeWithKneeDown),
20650 42 => Some(PoseExerciseName::Mermaid),
20651 43 => Some(PoseExerciseName::Mountain),
20652 44 => Some(PoseExerciseName::OneLeggedDownwardFacingPoseOpenHipBentKnee),
20653 45 => Some(PoseExerciseName::OneLeggedPigeon),
20654 46 => Some(PoseExerciseName::PeacefulWarrior),
20655 47 => Some(PoseExerciseName::Plank),
20656 48 => Some(PoseExerciseName::Plow),
20657 49 => Some(PoseExerciseName::ReclinedHandToFoot),
20658 50 => Some(PoseExerciseName::RevolvedHalfMoon),
20659 51 => Some(PoseExerciseName::RevolvedHeadToKnee),
20660 52 => Some(PoseExerciseName::RevolvedTriangle),
20661 53 => Some(PoseExerciseName::RunnersLunge),
20662 54 => Some(PoseExerciseName::SeatedEasySideBend),
20663 55 => Some(PoseExerciseName::SeatedEasyTwist),
20664 56 => Some(PoseExerciseName::SeatedLongLegForwardBend),
20665 57 => Some(PoseExerciseName::SeatedWideLegForwardBend),
20666 58 => Some(PoseExerciseName::ShoulderStand),
20667 59 => Some(PoseExerciseName::SideBoat),
20668 60 => Some(PoseExerciseName::SidePlank),
20669 61 => Some(PoseExerciseName::Sphinx),
20670 62 => Some(PoseExerciseName::SquatOpenArmTwist),
20671 63 => Some(PoseExerciseName::SquatPalmPress),
20672 64 => Some(PoseExerciseName::Staff),
20673 65 => Some(PoseExerciseName::StandingArmsUp),
20674 66 => Some(PoseExerciseName::StandingForwardBendHalfwayUp),
20675 67 => Some(PoseExerciseName::StandingForwardBend),
20676 68 => Some(PoseExerciseName::StandingSideOpener),
20677 69 => Some(PoseExerciseName::StandingSingleLegForwardBend),
20678 70 => Some(PoseExerciseName::StandingSplit),
20679 71 => Some(PoseExerciseName::StandingWideLegForwardBend),
20680 72 => Some(PoseExerciseName::StandingWideLegForwardBendWithTwist),
20681 73 => Some(PoseExerciseName::SupineSpinalTwist),
20682 74 => Some(PoseExerciseName::TableTop),
20683 75 => Some(PoseExerciseName::ThreadTheNeedle),
20684 76 => Some(PoseExerciseName::Thunderbolt),
20685 77 => Some(PoseExerciseName::ThunderboltPoseBothSidesArmStretch),
20686 78 => Some(PoseExerciseName::Tree),
20687 79 => Some(PoseExerciseName::Triangle),
20688 80 => Some(PoseExerciseName::UpDog),
20689 81 => Some(PoseExerciseName::UpwardFacingPlank),
20690 82 => Some(PoseExerciseName::WarriorOne),
20691 83 => Some(PoseExerciseName::WarriorThree),
20692 84 => Some(PoseExerciseName::WarriorTwo),
20693 85 => Some(PoseExerciseName::Wheel),
20694 86 => Some(PoseExerciseName::WideSideLunge),
20695 87 => Some(PoseExerciseName::DeepBreathingWheelchair),
20696 88 => Some(PoseExerciseName::DeepBreathingLowWheelchair),
20697 89 => Some(PoseExerciseName::DeepBreathingMidWheelchair),
20698 90 => Some(PoseExerciseName::DeepBreathingHighWheelchair),
20699 91 => Some(PoseExerciseName::PrayerWheelchair),
20700 92 => Some(PoseExerciseName::OverheadPrayerWheelchair),
20701 93 => Some(PoseExerciseName::CactusWheelchair),
20702 94 => Some(PoseExerciseName::BreathingPunchesWheelchair),
20703 95 => Some(PoseExerciseName::BreathingPunchesExtendedWheelchair),
20704 96 => Some(PoseExerciseName::BreathingPunchesOverheadWheelchair),
20705 97 => Some(PoseExerciseName::BreathingPunchesOverheadAndDownWheelchair),
20706 98 => Some(PoseExerciseName::BreathingPunchesSideWheelchair),
20707 99 => Some(PoseExerciseName::BreathingPunchesExtendedSideWheelchair),
20708 100 => Some(PoseExerciseName::BreathingPunchesOverheadSideWheelchair),
20709 101 => Some(PoseExerciseName::BreathingPunchesOverheadAndDownSideWheelchair),
20710 102 => Some(PoseExerciseName::LeftHandBackWheelchair),
20711 103 => Some(PoseExerciseName::TriangleWheelchair),
20712 104 => Some(PoseExerciseName::ThreadTheNeedleWheelchair),
20713 105 => Some(PoseExerciseName::NeckFlexionAndExtensionWheelchair),
20714 106 => Some(PoseExerciseName::NeckLateralFlexionWheelchair),
20715 107 => Some(PoseExerciseName::SpineFlexionAndExtensionWheelchair),
20716 108 => Some(PoseExerciseName::SpineRotationWheelchair),
20717 109 => Some(PoseExerciseName::SpineLateralFlexionWheelchair),
20718 110 => Some(PoseExerciseName::AlternativeSkiingWheelchair),
20719 111 => Some(PoseExerciseName::ReachForwardWheelchair),
20720 112 => Some(PoseExerciseName::WarriorWheelchair),
20721 113 => Some(PoseExerciseName::ReverseWarriorWheelchair),
20722 114 => Some(PoseExerciseName::DownwardFacingDogToCobra),
20723 115 => Some(PoseExerciseName::SeatedCatCow),
20724 _ => None,
20725 }
20726 }
20727
20728 pub fn from_str(name: &str) -> Option<Self> {
20730 match name {
20731 "all_fours" => Some(PoseExerciseName::AllFours),
20732 "ankle_to_knee" => Some(PoseExerciseName::AnkleToKnee),
20733 "baby_cobra" => Some(PoseExerciseName::BabyCobra),
20734 "boat" => Some(PoseExerciseName::Boat),
20735 "bound_angle" => Some(PoseExerciseName::BoundAngle),
20736 "bound_seated_single_leg_forward_bend" => {
20737 Some(PoseExerciseName::BoundSeatedSingleLegForwardBend)
20738 }
20739 "bow" => Some(PoseExerciseName::Bow),
20740 "bowed_half_moon" => Some(PoseExerciseName::BowedHalfMoon),
20741 "bridge" => Some(PoseExerciseName::Bridge),
20742 "cat" => Some(PoseExerciseName::Cat),
20743 "chair" => Some(PoseExerciseName::Chair),
20744 "childs" => Some(PoseExerciseName::Childs),
20745 "corpse" => Some(PoseExerciseName::Corpse),
20746 "cow_face" => Some(PoseExerciseName::CowFace),
20747 "cow" => Some(PoseExerciseName::Cow),
20748 "devotional_warrior" => Some(PoseExerciseName::DevotionalWarrior),
20749 "dolphin_plank" => Some(PoseExerciseName::DolphinPlank),
20750 "dolphin" => Some(PoseExerciseName::Dolphin),
20751 "down_dog_knee_to_nose" => Some(PoseExerciseName::DownDogKneeToNose),
20752 "down_dog_split" => Some(PoseExerciseName::DownDogSplit),
20753 "down_dog_split_open_hip_bent_knee" => {
20754 Some(PoseExerciseName::DownDogSplitOpenHipBentKnee)
20755 }
20756 "downward_facing_dog" => Some(PoseExerciseName::DownwardFacingDog),
20757 "eagle" => Some(PoseExerciseName::Eagle),
20758 "easy_seated" => Some(PoseExerciseName::EasySeated),
20759 "extended_puppy" => Some(PoseExerciseName::ExtendedPuppy),
20760 "extended_side_angle" => Some(PoseExerciseName::ExtendedSideAngle),
20761 "fish" => Some(PoseExerciseName::Fish),
20762 "four_limbed_staff" => Some(PoseExerciseName::FourLimbedStaff),
20763 "full_split" => Some(PoseExerciseName::FullSplit),
20764 "gate" => Some(PoseExerciseName::Gate),
20765 "half_chair_half_ankle_to_knee" => Some(PoseExerciseName::HalfChairHalfAnkleToKnee),
20766 "half_moon" => Some(PoseExerciseName::HalfMoon),
20767 "head_to_knee" => Some(PoseExerciseName::HeadToKnee),
20768 "heron" => Some(PoseExerciseName::Heron),
20769 "heros" => Some(PoseExerciseName::Heros),
20770 "high_lunge" => Some(PoseExerciseName::HighLunge),
20771 "knees_chest_chin" => Some(PoseExerciseName::KneesChestChin),
20772 "lizard" => Some(PoseExerciseName::Lizard),
20773 "locust" => Some(PoseExerciseName::Locust),
20774 "low_lunge" => Some(PoseExerciseName::LowLunge),
20775 "low_lunge_twist" => Some(PoseExerciseName::LowLungeTwist),
20776 "low_lunge_with_knee_down" => Some(PoseExerciseName::LowLungeWithKneeDown),
20777 "mermaid" => Some(PoseExerciseName::Mermaid),
20778 "mountain" => Some(PoseExerciseName::Mountain),
20779 "one_legged_downward_facing_pose_open_hip_bent_knee" => {
20780 Some(PoseExerciseName::OneLeggedDownwardFacingPoseOpenHipBentKnee)
20781 }
20782 "one_legged_pigeon" => Some(PoseExerciseName::OneLeggedPigeon),
20783 "peaceful_warrior" => Some(PoseExerciseName::PeacefulWarrior),
20784 "plank" => Some(PoseExerciseName::Plank),
20785 "plow" => Some(PoseExerciseName::Plow),
20786 "reclined_hand_to_foot" => Some(PoseExerciseName::ReclinedHandToFoot),
20787 "revolved_half_moon" => Some(PoseExerciseName::RevolvedHalfMoon),
20788 "revolved_head_to_knee" => Some(PoseExerciseName::RevolvedHeadToKnee),
20789 "revolved_triangle" => Some(PoseExerciseName::RevolvedTriangle),
20790 "runners_lunge" => Some(PoseExerciseName::RunnersLunge),
20791 "seated_easy_side_bend" => Some(PoseExerciseName::SeatedEasySideBend),
20792 "seated_easy_twist" => Some(PoseExerciseName::SeatedEasyTwist),
20793 "seated_long_leg_forward_bend" => Some(PoseExerciseName::SeatedLongLegForwardBend),
20794 "seated_wide_leg_forward_bend" => Some(PoseExerciseName::SeatedWideLegForwardBend),
20795 "shoulder_stand" => Some(PoseExerciseName::ShoulderStand),
20796 "side_boat" => Some(PoseExerciseName::SideBoat),
20797 "side_plank" => Some(PoseExerciseName::SidePlank),
20798 "sphinx" => Some(PoseExerciseName::Sphinx),
20799 "squat_open_arm_twist" => Some(PoseExerciseName::SquatOpenArmTwist),
20800 "squat_palm_press" => Some(PoseExerciseName::SquatPalmPress),
20801 "staff" => Some(PoseExerciseName::Staff),
20802 "standing_arms_up" => Some(PoseExerciseName::StandingArmsUp),
20803 "standing_forward_bend_halfway_up" => {
20804 Some(PoseExerciseName::StandingForwardBendHalfwayUp)
20805 }
20806 "standing_forward_bend" => Some(PoseExerciseName::StandingForwardBend),
20807 "standing_side_opener" => Some(PoseExerciseName::StandingSideOpener),
20808 "standing_single_leg_forward_bend" => {
20809 Some(PoseExerciseName::StandingSingleLegForwardBend)
20810 }
20811 "standing_split" => Some(PoseExerciseName::StandingSplit),
20812 "standing_wide_leg_forward_bend" => Some(PoseExerciseName::StandingWideLegForwardBend),
20813 "standing_wide_leg_forward_bend_with_twist" => {
20814 Some(PoseExerciseName::StandingWideLegForwardBendWithTwist)
20815 }
20816 "supine_spinal_twist" => Some(PoseExerciseName::SupineSpinalTwist),
20817 "table_top" => Some(PoseExerciseName::TableTop),
20818 "thread_the_needle" => Some(PoseExerciseName::ThreadTheNeedle),
20819 "thunderbolt" => Some(PoseExerciseName::Thunderbolt),
20820 "thunderbolt_pose_both_sides_arm_stretch" => {
20821 Some(PoseExerciseName::ThunderboltPoseBothSidesArmStretch)
20822 }
20823 "tree" => Some(PoseExerciseName::Tree),
20824 "triangle" => Some(PoseExerciseName::Triangle),
20825 "up_dog" => Some(PoseExerciseName::UpDog),
20826 "upward_facing_plank" => Some(PoseExerciseName::UpwardFacingPlank),
20827 "warrior_one" => Some(PoseExerciseName::WarriorOne),
20828 "warrior_three" => Some(PoseExerciseName::WarriorThree),
20829 "warrior_two" => Some(PoseExerciseName::WarriorTwo),
20830 "wheel" => Some(PoseExerciseName::Wheel),
20831 "wide_side_lunge" => Some(PoseExerciseName::WideSideLunge),
20832 "deep_breathing_wheelchair" => Some(PoseExerciseName::DeepBreathingWheelchair),
20833 "deep_breathing_low_wheelchair" => Some(PoseExerciseName::DeepBreathingLowWheelchair),
20834 "deep_breathing_mid_wheelchair" => Some(PoseExerciseName::DeepBreathingMidWheelchair),
20835 "deep_breathing_high_wheelchair" => Some(PoseExerciseName::DeepBreathingHighWheelchair),
20836 "prayer_wheelchair" => Some(PoseExerciseName::PrayerWheelchair),
20837 "overhead_prayer_wheelchair" => Some(PoseExerciseName::OverheadPrayerWheelchair),
20838 "cactus_wheelchair" => Some(PoseExerciseName::CactusWheelchair),
20839 "breathing_punches_wheelchair" => Some(PoseExerciseName::BreathingPunchesWheelchair),
20840 "breathing_punches_extended_wheelchair" => {
20841 Some(PoseExerciseName::BreathingPunchesExtendedWheelchair)
20842 }
20843 "breathing_punches_overhead_wheelchair" => {
20844 Some(PoseExerciseName::BreathingPunchesOverheadWheelchair)
20845 }
20846 "breathing_punches_overhead_and_down_wheelchair" => {
20847 Some(PoseExerciseName::BreathingPunchesOverheadAndDownWheelchair)
20848 }
20849 "breathing_punches_side_wheelchair" => {
20850 Some(PoseExerciseName::BreathingPunchesSideWheelchair)
20851 }
20852 "breathing_punches_extended_side_wheelchair" => {
20853 Some(PoseExerciseName::BreathingPunchesExtendedSideWheelchair)
20854 }
20855 "breathing_punches_overhead_side_wheelchair" => {
20856 Some(PoseExerciseName::BreathingPunchesOverheadSideWheelchair)
20857 }
20858 "breathing_punches_overhead_and_down_side_wheelchair" => {
20859 Some(PoseExerciseName::BreathingPunchesOverheadAndDownSideWheelchair)
20860 }
20861 "left_hand_back_wheelchair" => Some(PoseExerciseName::LeftHandBackWheelchair),
20862 "triangle_wheelchair" => Some(PoseExerciseName::TriangleWheelchair),
20863 "thread_the_needle_wheelchair" => Some(PoseExerciseName::ThreadTheNeedleWheelchair),
20864 "neck_flexion_and_extension_wheelchair" => {
20865 Some(PoseExerciseName::NeckFlexionAndExtensionWheelchair)
20866 }
20867 "neck_lateral_flexion_wheelchair" => {
20868 Some(PoseExerciseName::NeckLateralFlexionWheelchair)
20869 }
20870 "spine_flexion_and_extension_wheelchair" => {
20871 Some(PoseExerciseName::SpineFlexionAndExtensionWheelchair)
20872 }
20873 "spine_rotation_wheelchair" => Some(PoseExerciseName::SpineRotationWheelchair),
20874 "spine_lateral_flexion_wheelchair" => {
20875 Some(PoseExerciseName::SpineLateralFlexionWheelchair)
20876 }
20877 "alternative_skiing_wheelchair" => Some(PoseExerciseName::AlternativeSkiingWheelchair),
20878 "reach_forward_wheelchair" => Some(PoseExerciseName::ReachForwardWheelchair),
20879 "warrior_wheelchair" => Some(PoseExerciseName::WarriorWheelchair),
20880 "reverse_warrior_wheelchair" => Some(PoseExerciseName::ReverseWarriorWheelchair),
20881 "downward_facing_dog_to_cobra" => Some(PoseExerciseName::DownwardFacingDogToCobra),
20882 "seated_cat_cow" => Some(PoseExerciseName::SeatedCatCow),
20883 _ => None,
20884 }
20885 }
20886}
20887
20888#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
20889#[repr(u16)]
20890#[non_exhaustive]
20891pub enum TricepsExtensionExerciseName {
20892 BenchDip = 0,
20893 WeightedBenchDip = 1,
20894 BodyWeightDip = 2,
20895 CableKickback = 3,
20896 CableLyingTricepsExtension = 4,
20897 CableOverheadTricepsExtension = 5,
20898 DumbbellKickback = 6,
20899 DumbbellLyingTricepsExtension = 7,
20900 EzBarOverheadTricepsExtension = 8,
20901 InclineDip = 9,
20902 WeightedInclineDip = 10,
20903 InclineEzBarLyingTricepsExtension = 11,
20904 LyingDumbbellPulloverToExtension = 12,
20905 LyingEzBarTricepsExtension = 13,
20906 LyingTricepsExtensionToCloseGripBenchPress = 14,
20907 OverheadDumbbellTricepsExtension = 15,
20908 RecliningTricepsPress = 16,
20909 ReverseGripPressdown = 17,
20910 ReverseGripTricepsPressdown = 18,
20911 RopePressdown = 19,
20912 SeatedBarbellOverheadTricepsExtension = 20,
20913 SeatedDumbbellOverheadTricepsExtension = 21,
20914 SeatedEzBarOverheadTricepsExtension = 22,
20915 SeatedSingleArmOverheadDumbbellExtension = 23,
20916 SingleArmDumbbellOverheadTricepsExtension = 24,
20917 SingleDumbbellSeatedOverheadTricepsExtension = 25,
20918 SingleLegBenchDipAndKick = 26,
20919 WeightedSingleLegBenchDipAndKick = 27,
20920 SingleLegDip = 28,
20921 WeightedSingleLegDip = 29,
20922 StaticLyingTricepsExtension = 30,
20923 SuspendedDip = 31,
20924 WeightedSuspendedDip = 32,
20925 SwissBallDumbbellLyingTricepsExtension = 33,
20926 SwissBallEzBarLyingTricepsExtension = 34,
20927 SwissBallEzBarOverheadTricepsExtension = 35,
20928 TabletopDip = 36,
20929 WeightedTabletopDip = 37,
20930 TricepsExtensionOnFloor = 38,
20931 TricepsPressdown = 39,
20932 WeightedDip = 40,
20933 AlternatingDumbbellLyingTricepsExtension = 41,
20934 TricepsPress = 42,
20935 DumbbellKickbackWheelchair = 43,
20936 OverheadDumbbellTricepsExtensionWheelchair = 44,
20937}
20938
20939impl TricepsExtensionExerciseName {
20940 pub fn as_str(&self) -> &'static str {
20942 match self {
20943 TricepsExtensionExerciseName::BenchDip => "bench_dip",
20944 TricepsExtensionExerciseName::WeightedBenchDip => "weighted_bench_dip",
20945 TricepsExtensionExerciseName::BodyWeightDip => "body_weight_dip",
20946 TricepsExtensionExerciseName::CableKickback => "cable_kickback",
20947 TricepsExtensionExerciseName::CableLyingTricepsExtension => {
20948 "cable_lying_triceps_extension"
20949 }
20950 TricepsExtensionExerciseName::CableOverheadTricepsExtension => {
20951 "cable_overhead_triceps_extension"
20952 }
20953 TricepsExtensionExerciseName::DumbbellKickback => "dumbbell_kickback",
20954 TricepsExtensionExerciseName::DumbbellLyingTricepsExtension => {
20955 "dumbbell_lying_triceps_extension"
20956 }
20957 TricepsExtensionExerciseName::EzBarOverheadTricepsExtension => {
20958 "ez_bar_overhead_triceps_extension"
20959 }
20960 TricepsExtensionExerciseName::InclineDip => "incline_dip",
20961 TricepsExtensionExerciseName::WeightedInclineDip => "weighted_incline_dip",
20962 TricepsExtensionExerciseName::InclineEzBarLyingTricepsExtension => {
20963 "incline_ez_bar_lying_triceps_extension"
20964 }
20965 TricepsExtensionExerciseName::LyingDumbbellPulloverToExtension => {
20966 "lying_dumbbell_pullover_to_extension"
20967 }
20968 TricepsExtensionExerciseName::LyingEzBarTricepsExtension => {
20969 "lying_ez_bar_triceps_extension"
20970 }
20971 TricepsExtensionExerciseName::LyingTricepsExtensionToCloseGripBenchPress => {
20972 "lying_triceps_extension_to_close_grip_bench_press"
20973 }
20974 TricepsExtensionExerciseName::OverheadDumbbellTricepsExtension => {
20975 "overhead_dumbbell_triceps_extension"
20976 }
20977 TricepsExtensionExerciseName::RecliningTricepsPress => "reclining_triceps_press",
20978 TricepsExtensionExerciseName::ReverseGripPressdown => "reverse_grip_pressdown",
20979 TricepsExtensionExerciseName::ReverseGripTricepsPressdown => {
20980 "reverse_grip_triceps_pressdown"
20981 }
20982 TricepsExtensionExerciseName::RopePressdown => "rope_pressdown",
20983 TricepsExtensionExerciseName::SeatedBarbellOverheadTricepsExtension => {
20984 "seated_barbell_overhead_triceps_extension"
20985 }
20986 TricepsExtensionExerciseName::SeatedDumbbellOverheadTricepsExtension => {
20987 "seated_dumbbell_overhead_triceps_extension"
20988 }
20989 TricepsExtensionExerciseName::SeatedEzBarOverheadTricepsExtension => {
20990 "seated_ez_bar_overhead_triceps_extension"
20991 }
20992 TricepsExtensionExerciseName::SeatedSingleArmOverheadDumbbellExtension => {
20993 "seated_single_arm_overhead_dumbbell_extension"
20994 }
20995 TricepsExtensionExerciseName::SingleArmDumbbellOverheadTricepsExtension => {
20996 "single_arm_dumbbell_overhead_triceps_extension"
20997 }
20998 TricepsExtensionExerciseName::SingleDumbbellSeatedOverheadTricepsExtension => {
20999 "single_dumbbell_seated_overhead_triceps_extension"
21000 }
21001 TricepsExtensionExerciseName::SingleLegBenchDipAndKick => {
21002 "single_leg_bench_dip_and_kick"
21003 }
21004 TricepsExtensionExerciseName::WeightedSingleLegBenchDipAndKick => {
21005 "weighted_single_leg_bench_dip_and_kick"
21006 }
21007 TricepsExtensionExerciseName::SingleLegDip => "single_leg_dip",
21008 TricepsExtensionExerciseName::WeightedSingleLegDip => "weighted_single_leg_dip",
21009 TricepsExtensionExerciseName::StaticLyingTricepsExtension => {
21010 "static_lying_triceps_extension"
21011 }
21012 TricepsExtensionExerciseName::SuspendedDip => "suspended_dip",
21013 TricepsExtensionExerciseName::WeightedSuspendedDip => "weighted_suspended_dip",
21014 TricepsExtensionExerciseName::SwissBallDumbbellLyingTricepsExtension => {
21015 "swiss_ball_dumbbell_lying_triceps_extension"
21016 }
21017 TricepsExtensionExerciseName::SwissBallEzBarLyingTricepsExtension => {
21018 "swiss_ball_ez_bar_lying_triceps_extension"
21019 }
21020 TricepsExtensionExerciseName::SwissBallEzBarOverheadTricepsExtension => {
21021 "swiss_ball_ez_bar_overhead_triceps_extension"
21022 }
21023 TricepsExtensionExerciseName::TabletopDip => "tabletop_dip",
21024 TricepsExtensionExerciseName::WeightedTabletopDip => "weighted_tabletop_dip",
21025 TricepsExtensionExerciseName::TricepsExtensionOnFloor => "triceps_extension_on_floor",
21026 TricepsExtensionExerciseName::TricepsPressdown => "triceps_pressdown",
21027 TricepsExtensionExerciseName::WeightedDip => "weighted_dip",
21028 TricepsExtensionExerciseName::AlternatingDumbbellLyingTricepsExtension => {
21029 "alternating_dumbbell_lying_triceps_extension"
21030 }
21031 TricepsExtensionExerciseName::TricepsPress => "triceps_press",
21032 TricepsExtensionExerciseName::DumbbellKickbackWheelchair => {
21033 "dumbbell_kickback_wheelchair"
21034 }
21035 TricepsExtensionExerciseName::OverheadDumbbellTricepsExtensionWheelchair => {
21036 "overhead_dumbbell_triceps_extension_wheelchair"
21037 }
21038 }
21039 }
21040
21041 pub fn from_value(value: u16) -> Option<Self> {
21043 match value {
21044 0 => Some(TricepsExtensionExerciseName::BenchDip),
21045 1 => Some(TricepsExtensionExerciseName::WeightedBenchDip),
21046 2 => Some(TricepsExtensionExerciseName::BodyWeightDip),
21047 3 => Some(TricepsExtensionExerciseName::CableKickback),
21048 4 => Some(TricepsExtensionExerciseName::CableLyingTricepsExtension),
21049 5 => Some(TricepsExtensionExerciseName::CableOverheadTricepsExtension),
21050 6 => Some(TricepsExtensionExerciseName::DumbbellKickback),
21051 7 => Some(TricepsExtensionExerciseName::DumbbellLyingTricepsExtension),
21052 8 => Some(TricepsExtensionExerciseName::EzBarOverheadTricepsExtension),
21053 9 => Some(TricepsExtensionExerciseName::InclineDip),
21054 10 => Some(TricepsExtensionExerciseName::WeightedInclineDip),
21055 11 => Some(TricepsExtensionExerciseName::InclineEzBarLyingTricepsExtension),
21056 12 => Some(TricepsExtensionExerciseName::LyingDumbbellPulloverToExtension),
21057 13 => Some(TricepsExtensionExerciseName::LyingEzBarTricepsExtension),
21058 14 => Some(TricepsExtensionExerciseName::LyingTricepsExtensionToCloseGripBenchPress),
21059 15 => Some(TricepsExtensionExerciseName::OverheadDumbbellTricepsExtension),
21060 16 => Some(TricepsExtensionExerciseName::RecliningTricepsPress),
21061 17 => Some(TricepsExtensionExerciseName::ReverseGripPressdown),
21062 18 => Some(TricepsExtensionExerciseName::ReverseGripTricepsPressdown),
21063 19 => Some(TricepsExtensionExerciseName::RopePressdown),
21064 20 => Some(TricepsExtensionExerciseName::SeatedBarbellOverheadTricepsExtension),
21065 21 => Some(TricepsExtensionExerciseName::SeatedDumbbellOverheadTricepsExtension),
21066 22 => Some(TricepsExtensionExerciseName::SeatedEzBarOverheadTricepsExtension),
21067 23 => Some(TricepsExtensionExerciseName::SeatedSingleArmOverheadDumbbellExtension),
21068 24 => Some(TricepsExtensionExerciseName::SingleArmDumbbellOverheadTricepsExtension),
21069 25 => Some(TricepsExtensionExerciseName::SingleDumbbellSeatedOverheadTricepsExtension),
21070 26 => Some(TricepsExtensionExerciseName::SingleLegBenchDipAndKick),
21071 27 => Some(TricepsExtensionExerciseName::WeightedSingleLegBenchDipAndKick),
21072 28 => Some(TricepsExtensionExerciseName::SingleLegDip),
21073 29 => Some(TricepsExtensionExerciseName::WeightedSingleLegDip),
21074 30 => Some(TricepsExtensionExerciseName::StaticLyingTricepsExtension),
21075 31 => Some(TricepsExtensionExerciseName::SuspendedDip),
21076 32 => Some(TricepsExtensionExerciseName::WeightedSuspendedDip),
21077 33 => Some(TricepsExtensionExerciseName::SwissBallDumbbellLyingTricepsExtension),
21078 34 => Some(TricepsExtensionExerciseName::SwissBallEzBarLyingTricepsExtension),
21079 35 => Some(TricepsExtensionExerciseName::SwissBallEzBarOverheadTricepsExtension),
21080 36 => Some(TricepsExtensionExerciseName::TabletopDip),
21081 37 => Some(TricepsExtensionExerciseName::WeightedTabletopDip),
21082 38 => Some(TricepsExtensionExerciseName::TricepsExtensionOnFloor),
21083 39 => Some(TricepsExtensionExerciseName::TricepsPressdown),
21084 40 => Some(TricepsExtensionExerciseName::WeightedDip),
21085 41 => Some(TricepsExtensionExerciseName::AlternatingDumbbellLyingTricepsExtension),
21086 42 => Some(TricepsExtensionExerciseName::TricepsPress),
21087 43 => Some(TricepsExtensionExerciseName::DumbbellKickbackWheelchair),
21088 44 => Some(TricepsExtensionExerciseName::OverheadDumbbellTricepsExtensionWheelchair),
21089 _ => None,
21090 }
21091 }
21092
21093 pub fn from_str(name: &str) -> Option<Self> {
21095 match name {
21096 "bench_dip" => Some(TricepsExtensionExerciseName::BenchDip),
21097 "weighted_bench_dip" => Some(TricepsExtensionExerciseName::WeightedBenchDip),
21098 "body_weight_dip" => Some(TricepsExtensionExerciseName::BodyWeightDip),
21099 "cable_kickback" => Some(TricepsExtensionExerciseName::CableKickback),
21100 "cable_lying_triceps_extension" => {
21101 Some(TricepsExtensionExerciseName::CableLyingTricepsExtension)
21102 }
21103 "cable_overhead_triceps_extension" => {
21104 Some(TricepsExtensionExerciseName::CableOverheadTricepsExtension)
21105 }
21106 "dumbbell_kickback" => Some(TricepsExtensionExerciseName::DumbbellKickback),
21107 "dumbbell_lying_triceps_extension" => {
21108 Some(TricepsExtensionExerciseName::DumbbellLyingTricepsExtension)
21109 }
21110 "ez_bar_overhead_triceps_extension" => {
21111 Some(TricepsExtensionExerciseName::EzBarOverheadTricepsExtension)
21112 }
21113 "incline_dip" => Some(TricepsExtensionExerciseName::InclineDip),
21114 "weighted_incline_dip" => Some(TricepsExtensionExerciseName::WeightedInclineDip),
21115 "incline_ez_bar_lying_triceps_extension" => {
21116 Some(TricepsExtensionExerciseName::InclineEzBarLyingTricepsExtension)
21117 }
21118 "lying_dumbbell_pullover_to_extension" => {
21119 Some(TricepsExtensionExerciseName::LyingDumbbellPulloverToExtension)
21120 }
21121 "lying_ez_bar_triceps_extension" => {
21122 Some(TricepsExtensionExerciseName::LyingEzBarTricepsExtension)
21123 }
21124 "lying_triceps_extension_to_close_grip_bench_press" => {
21125 Some(TricepsExtensionExerciseName::LyingTricepsExtensionToCloseGripBenchPress)
21126 }
21127 "overhead_dumbbell_triceps_extension" => {
21128 Some(TricepsExtensionExerciseName::OverheadDumbbellTricepsExtension)
21129 }
21130 "reclining_triceps_press" => Some(TricepsExtensionExerciseName::RecliningTricepsPress),
21131 "reverse_grip_pressdown" => Some(TricepsExtensionExerciseName::ReverseGripPressdown),
21132 "reverse_grip_triceps_pressdown" => {
21133 Some(TricepsExtensionExerciseName::ReverseGripTricepsPressdown)
21134 }
21135 "rope_pressdown" => Some(TricepsExtensionExerciseName::RopePressdown),
21136 "seated_barbell_overhead_triceps_extension" => {
21137 Some(TricepsExtensionExerciseName::SeatedBarbellOverheadTricepsExtension)
21138 }
21139 "seated_dumbbell_overhead_triceps_extension" => {
21140 Some(TricepsExtensionExerciseName::SeatedDumbbellOverheadTricepsExtension)
21141 }
21142 "seated_ez_bar_overhead_triceps_extension" => {
21143 Some(TricepsExtensionExerciseName::SeatedEzBarOverheadTricepsExtension)
21144 }
21145 "seated_single_arm_overhead_dumbbell_extension" => {
21146 Some(TricepsExtensionExerciseName::SeatedSingleArmOverheadDumbbellExtension)
21147 }
21148 "single_arm_dumbbell_overhead_triceps_extension" => {
21149 Some(TricepsExtensionExerciseName::SingleArmDumbbellOverheadTricepsExtension)
21150 }
21151 "single_dumbbell_seated_overhead_triceps_extension" => {
21152 Some(TricepsExtensionExerciseName::SingleDumbbellSeatedOverheadTricepsExtension)
21153 }
21154 "single_leg_bench_dip_and_kick" => {
21155 Some(TricepsExtensionExerciseName::SingleLegBenchDipAndKick)
21156 }
21157 "weighted_single_leg_bench_dip_and_kick" => {
21158 Some(TricepsExtensionExerciseName::WeightedSingleLegBenchDipAndKick)
21159 }
21160 "single_leg_dip" => Some(TricepsExtensionExerciseName::SingleLegDip),
21161 "weighted_single_leg_dip" => Some(TricepsExtensionExerciseName::WeightedSingleLegDip),
21162 "static_lying_triceps_extension" => {
21163 Some(TricepsExtensionExerciseName::StaticLyingTricepsExtension)
21164 }
21165 "suspended_dip" => Some(TricepsExtensionExerciseName::SuspendedDip),
21166 "weighted_suspended_dip" => Some(TricepsExtensionExerciseName::WeightedSuspendedDip),
21167 "swiss_ball_dumbbell_lying_triceps_extension" => {
21168 Some(TricepsExtensionExerciseName::SwissBallDumbbellLyingTricepsExtension)
21169 }
21170 "swiss_ball_ez_bar_lying_triceps_extension" => {
21171 Some(TricepsExtensionExerciseName::SwissBallEzBarLyingTricepsExtension)
21172 }
21173 "swiss_ball_ez_bar_overhead_triceps_extension" => {
21174 Some(TricepsExtensionExerciseName::SwissBallEzBarOverheadTricepsExtension)
21175 }
21176 "tabletop_dip" => Some(TricepsExtensionExerciseName::TabletopDip),
21177 "weighted_tabletop_dip" => Some(TricepsExtensionExerciseName::WeightedTabletopDip),
21178 "triceps_extension_on_floor" => {
21179 Some(TricepsExtensionExerciseName::TricepsExtensionOnFloor)
21180 }
21181 "triceps_pressdown" => Some(TricepsExtensionExerciseName::TricepsPressdown),
21182 "weighted_dip" => Some(TricepsExtensionExerciseName::WeightedDip),
21183 "alternating_dumbbell_lying_triceps_extension" => {
21184 Some(TricepsExtensionExerciseName::AlternatingDumbbellLyingTricepsExtension)
21185 }
21186 "triceps_press" => Some(TricepsExtensionExerciseName::TricepsPress),
21187 "dumbbell_kickback_wheelchair" => {
21188 Some(TricepsExtensionExerciseName::DumbbellKickbackWheelchair)
21189 }
21190 "overhead_dumbbell_triceps_extension_wheelchair" => {
21191 Some(TricepsExtensionExerciseName::OverheadDumbbellTricepsExtensionWheelchair)
21192 }
21193 _ => None,
21194 }
21195 }
21196}
21197
21198#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
21199#[repr(u16)]
21200#[non_exhaustive]
21201pub enum WarmUpExerciseName {
21202 QuadrupedRocking = 0,
21203 NeckTilts = 1,
21204 AnkleCircles = 2,
21205 AnkleDorsiflexionWithBand = 3,
21206 AnkleInternalRotation = 4,
21207 ArmCircles = 5,
21208 BentOverReachToSky = 6,
21209 CatCamel = 7,
21210 ElbowToFootLunge = 8,
21211 ForwardAndBackwardLegSwings = 9,
21212 Groiners = 10,
21213 InvertedHamstringStretch = 11,
21214 LateralDuckUnder = 12,
21215 NeckRotations = 13,
21216 OppositeArmAndLegBalance = 14,
21217 ReachRollAndLift = 15,
21218 Scorpion = 16,
21219 ShoulderCircles = 17,
21220 SideToSideLegSwings = 18,
21221 SleeperStretch = 19,
21222 SlideOut = 20,
21223 SwissBallHipCrossover = 21,
21224 SwissBallReachRollAndLift = 22,
21225 SwissBallWindshieldWipers = 23,
21226 ThoracicRotation = 24,
21227 WalkingHighKicks = 25,
21228 WalkingHighKnees = 26,
21229 WalkingKneeHugs = 27,
21230 WalkingLegCradles = 28,
21231 Walkout = 29,
21232 WalkoutFromPushUpPosition = 30,
21233 BicepsStretch = 31,
21234 GlutesStretch = 32,
21235 StandingHamstringStretch = 33,
21236 Stretch9090 = 34,
21237 StretchAbs = 35,
21238 StretchButterfly = 36,
21239 StretchCalf = 37,
21240 StretchCatCow = 38,
21241 StretchChildsPose = 39,
21242 StretchCobra = 40,
21243 StretchForearms = 41,
21244 StretchForwardGlutes = 42,
21245 StretchFrontSplit = 43,
21246 StretchHamstring = 44,
21247 StretchHipFlexorAndQuad = 45,
21248 StretchLat = 46,
21249 StretchLevatorScapulae = 47,
21250 StretchLungeWithSpinalTwist = 48,
21251 StretchLungingHipFlexor = 49,
21252 StretchLyingAbduction = 50,
21253 StretchLyingItBand = 51,
21254 StretchLyingKneeToChest = 52,
21255 StretchLyingPiriformis = 53,
21256 StretchLyingSpinalTwist = 54,
21257 StretchNeck = 55,
21258 StretchObliques = 56,
21259 StretchOverUnderShoulder = 57,
21260 StretchPectoral = 58,
21261 StretchPigeonPose = 59,
21262 StretchPiriformis = 60,
21263 StretchQuad = 61,
21264 StretchScorpion = 62,
21265 StretchShoulder = 63,
21266 StretchSide = 64,
21267 StretchSideLunge = 65,
21268 StretchSideSplit = 66,
21269 StretchStandingItBand = 67,
21270 StretchStraddle = 68,
21271 StretchTriceps = 69,
21272 StretchWallChestAndShoulder = 70,
21273 NeckRotationsWheelchair = 71,
21274 HalfKneelingArmRotation = 72,
21275 ThreeWayAnkleMobilization = 73,
21276 NinetyNinetyHipSwitch = 74,
21277 ActiveFrog = 75,
21278 ShoulderSweeps = 76,
21279 AnkleLunges = 77,
21280 BackRollFoamRoller = 78,
21281 BearCrawl = 79,
21282 LatissimusDorsiFoamRoll = 80,
21283 ReverseTHipOpener = 81,
21284 ShoulderRolls = 82,
21285 ChestOpeners = 83,
21286 TricepsStretch = 84,
21287 UpperBackStretch = 85,
21288 HipCircles = 86,
21289 AnkleStretch = 87,
21290 MarchingInPlace = 88,
21291 TricepsStretchWheelchair = 89,
21292 UpperBackStretchWheelchair = 90,
21293}
21294
21295impl WarmUpExerciseName {
21296 pub fn as_str(&self) -> &'static str {
21298 match self {
21299 WarmUpExerciseName::QuadrupedRocking => "quadruped_rocking",
21300 WarmUpExerciseName::NeckTilts => "neck_tilts",
21301 WarmUpExerciseName::AnkleCircles => "ankle_circles",
21302 WarmUpExerciseName::AnkleDorsiflexionWithBand => "ankle_dorsiflexion_with_band",
21303 WarmUpExerciseName::AnkleInternalRotation => "ankle_internal_rotation",
21304 WarmUpExerciseName::ArmCircles => "arm_circles",
21305 WarmUpExerciseName::BentOverReachToSky => "bent_over_reach_to_sky",
21306 WarmUpExerciseName::CatCamel => "cat_camel",
21307 WarmUpExerciseName::ElbowToFootLunge => "elbow_to_foot_lunge",
21308 WarmUpExerciseName::ForwardAndBackwardLegSwings => "forward_and_backward_leg_swings",
21309 WarmUpExerciseName::Groiners => "groiners",
21310 WarmUpExerciseName::InvertedHamstringStretch => "inverted_hamstring_stretch",
21311 WarmUpExerciseName::LateralDuckUnder => "lateral_duck_under",
21312 WarmUpExerciseName::NeckRotations => "neck_rotations",
21313 WarmUpExerciseName::OppositeArmAndLegBalance => "opposite_arm_and_leg_balance",
21314 WarmUpExerciseName::ReachRollAndLift => "reach_roll_and_lift",
21315 WarmUpExerciseName::Scorpion => "scorpion",
21316 WarmUpExerciseName::ShoulderCircles => "shoulder_circles",
21317 WarmUpExerciseName::SideToSideLegSwings => "side_to_side_leg_swings",
21318 WarmUpExerciseName::SleeperStretch => "sleeper_stretch",
21319 WarmUpExerciseName::SlideOut => "slide_out",
21320 WarmUpExerciseName::SwissBallHipCrossover => "swiss_ball_hip_crossover",
21321 WarmUpExerciseName::SwissBallReachRollAndLift => "swiss_ball_reach_roll_and_lift",
21322 WarmUpExerciseName::SwissBallWindshieldWipers => "swiss_ball_windshield_wipers",
21323 WarmUpExerciseName::ThoracicRotation => "thoracic_rotation",
21324 WarmUpExerciseName::WalkingHighKicks => "walking_high_kicks",
21325 WarmUpExerciseName::WalkingHighKnees => "walking_high_knees",
21326 WarmUpExerciseName::WalkingKneeHugs => "walking_knee_hugs",
21327 WarmUpExerciseName::WalkingLegCradles => "walking_leg_cradles",
21328 WarmUpExerciseName::Walkout => "walkout",
21329 WarmUpExerciseName::WalkoutFromPushUpPosition => "walkout_from_push_up_position",
21330 WarmUpExerciseName::BicepsStretch => "biceps_stretch",
21331 WarmUpExerciseName::GlutesStretch => "glutes_stretch",
21332 WarmUpExerciseName::StandingHamstringStretch => "standing_hamstring_stretch",
21333 WarmUpExerciseName::Stretch9090 => "stretch_90_90",
21334 WarmUpExerciseName::StretchAbs => "stretch_abs",
21335 WarmUpExerciseName::StretchButterfly => "stretch_butterfly",
21336 WarmUpExerciseName::StretchCalf => "stretch_calf",
21337 WarmUpExerciseName::StretchCatCow => "stretch_cat_cow",
21338 WarmUpExerciseName::StretchChildsPose => "stretch_childs_pose",
21339 WarmUpExerciseName::StretchCobra => "stretch_cobra",
21340 WarmUpExerciseName::StretchForearms => "stretch_forearms",
21341 WarmUpExerciseName::StretchForwardGlutes => "stretch_forward_glutes",
21342 WarmUpExerciseName::StretchFrontSplit => "stretch_front_split",
21343 WarmUpExerciseName::StretchHamstring => "stretch_hamstring",
21344 WarmUpExerciseName::StretchHipFlexorAndQuad => "stretch_hip_flexor_and_quad",
21345 WarmUpExerciseName::StretchLat => "stretch_lat",
21346 WarmUpExerciseName::StretchLevatorScapulae => "stretch_levator_scapulae",
21347 WarmUpExerciseName::StretchLungeWithSpinalTwist => "stretch_lunge_with_spinal_twist",
21348 WarmUpExerciseName::StretchLungingHipFlexor => "stretch_lunging_hip_flexor",
21349 WarmUpExerciseName::StretchLyingAbduction => "stretch_lying_abduction",
21350 WarmUpExerciseName::StretchLyingItBand => "stretch_lying_it_band",
21351 WarmUpExerciseName::StretchLyingKneeToChest => "stretch_lying_knee_to_chest",
21352 WarmUpExerciseName::StretchLyingPiriformis => "stretch_lying_piriformis",
21353 WarmUpExerciseName::StretchLyingSpinalTwist => "stretch_lying_spinal_twist",
21354 WarmUpExerciseName::StretchNeck => "stretch_neck",
21355 WarmUpExerciseName::StretchObliques => "stretch_obliques",
21356 WarmUpExerciseName::StretchOverUnderShoulder => "stretch_over_under_shoulder",
21357 WarmUpExerciseName::StretchPectoral => "stretch_pectoral",
21358 WarmUpExerciseName::StretchPigeonPose => "stretch_pigeon_pose",
21359 WarmUpExerciseName::StretchPiriformis => "stretch_piriformis",
21360 WarmUpExerciseName::StretchQuad => "stretch_quad",
21361 WarmUpExerciseName::StretchScorpion => "stretch_scorpion",
21362 WarmUpExerciseName::StretchShoulder => "stretch_shoulder",
21363 WarmUpExerciseName::StretchSide => "stretch_side",
21364 WarmUpExerciseName::StretchSideLunge => "stretch_side_lunge",
21365 WarmUpExerciseName::StretchSideSplit => "stretch_side_split",
21366 WarmUpExerciseName::StretchStandingItBand => "stretch_standing_it_band",
21367 WarmUpExerciseName::StretchStraddle => "stretch_straddle",
21368 WarmUpExerciseName::StretchTriceps => "stretch_triceps",
21369 WarmUpExerciseName::StretchWallChestAndShoulder => "stretch_wall_chest_and_shoulder",
21370 WarmUpExerciseName::NeckRotationsWheelchair => "neck_rotations_wheelchair",
21371 WarmUpExerciseName::HalfKneelingArmRotation => "half_kneeling_arm_rotation",
21372 WarmUpExerciseName::ThreeWayAnkleMobilization => "three_way_ankle_mobilization",
21373 WarmUpExerciseName::NinetyNinetyHipSwitch => "ninety_ninety_hip_switch",
21374 WarmUpExerciseName::ActiveFrog => "active_frog",
21375 WarmUpExerciseName::ShoulderSweeps => "shoulder_sweeps",
21376 WarmUpExerciseName::AnkleLunges => "ankle_lunges",
21377 WarmUpExerciseName::BackRollFoamRoller => "back_roll_foam_roller",
21378 WarmUpExerciseName::BearCrawl => "bear_crawl",
21379 WarmUpExerciseName::LatissimusDorsiFoamRoll => "latissimus_dorsi_foam_roll",
21380 WarmUpExerciseName::ReverseTHipOpener => "reverse_t_hip_opener",
21381 WarmUpExerciseName::ShoulderRolls => "shoulder_rolls",
21382 WarmUpExerciseName::ChestOpeners => "chest_openers",
21383 WarmUpExerciseName::TricepsStretch => "triceps_stretch",
21384 WarmUpExerciseName::UpperBackStretch => "upper_back_stretch",
21385 WarmUpExerciseName::HipCircles => "hip_circles",
21386 WarmUpExerciseName::AnkleStretch => "ankle_stretch",
21387 WarmUpExerciseName::MarchingInPlace => "marching_in_place",
21388 WarmUpExerciseName::TricepsStretchWheelchair => "triceps_stretch_wheelchair",
21389 WarmUpExerciseName::UpperBackStretchWheelchair => "upper_back_stretch_wheelchair",
21390 }
21391 }
21392
21393 pub fn from_value(value: u16) -> Option<Self> {
21395 match value {
21396 0 => Some(WarmUpExerciseName::QuadrupedRocking),
21397 1 => Some(WarmUpExerciseName::NeckTilts),
21398 2 => Some(WarmUpExerciseName::AnkleCircles),
21399 3 => Some(WarmUpExerciseName::AnkleDorsiflexionWithBand),
21400 4 => Some(WarmUpExerciseName::AnkleInternalRotation),
21401 5 => Some(WarmUpExerciseName::ArmCircles),
21402 6 => Some(WarmUpExerciseName::BentOverReachToSky),
21403 7 => Some(WarmUpExerciseName::CatCamel),
21404 8 => Some(WarmUpExerciseName::ElbowToFootLunge),
21405 9 => Some(WarmUpExerciseName::ForwardAndBackwardLegSwings),
21406 10 => Some(WarmUpExerciseName::Groiners),
21407 11 => Some(WarmUpExerciseName::InvertedHamstringStretch),
21408 12 => Some(WarmUpExerciseName::LateralDuckUnder),
21409 13 => Some(WarmUpExerciseName::NeckRotations),
21410 14 => Some(WarmUpExerciseName::OppositeArmAndLegBalance),
21411 15 => Some(WarmUpExerciseName::ReachRollAndLift),
21412 16 => Some(WarmUpExerciseName::Scorpion),
21413 17 => Some(WarmUpExerciseName::ShoulderCircles),
21414 18 => Some(WarmUpExerciseName::SideToSideLegSwings),
21415 19 => Some(WarmUpExerciseName::SleeperStretch),
21416 20 => Some(WarmUpExerciseName::SlideOut),
21417 21 => Some(WarmUpExerciseName::SwissBallHipCrossover),
21418 22 => Some(WarmUpExerciseName::SwissBallReachRollAndLift),
21419 23 => Some(WarmUpExerciseName::SwissBallWindshieldWipers),
21420 24 => Some(WarmUpExerciseName::ThoracicRotation),
21421 25 => Some(WarmUpExerciseName::WalkingHighKicks),
21422 26 => Some(WarmUpExerciseName::WalkingHighKnees),
21423 27 => Some(WarmUpExerciseName::WalkingKneeHugs),
21424 28 => Some(WarmUpExerciseName::WalkingLegCradles),
21425 29 => Some(WarmUpExerciseName::Walkout),
21426 30 => Some(WarmUpExerciseName::WalkoutFromPushUpPosition),
21427 31 => Some(WarmUpExerciseName::BicepsStretch),
21428 32 => Some(WarmUpExerciseName::GlutesStretch),
21429 33 => Some(WarmUpExerciseName::StandingHamstringStretch),
21430 34 => Some(WarmUpExerciseName::Stretch9090),
21431 35 => Some(WarmUpExerciseName::StretchAbs),
21432 36 => Some(WarmUpExerciseName::StretchButterfly),
21433 37 => Some(WarmUpExerciseName::StretchCalf),
21434 38 => Some(WarmUpExerciseName::StretchCatCow),
21435 39 => Some(WarmUpExerciseName::StretchChildsPose),
21436 40 => Some(WarmUpExerciseName::StretchCobra),
21437 41 => Some(WarmUpExerciseName::StretchForearms),
21438 42 => Some(WarmUpExerciseName::StretchForwardGlutes),
21439 43 => Some(WarmUpExerciseName::StretchFrontSplit),
21440 44 => Some(WarmUpExerciseName::StretchHamstring),
21441 45 => Some(WarmUpExerciseName::StretchHipFlexorAndQuad),
21442 46 => Some(WarmUpExerciseName::StretchLat),
21443 47 => Some(WarmUpExerciseName::StretchLevatorScapulae),
21444 48 => Some(WarmUpExerciseName::StretchLungeWithSpinalTwist),
21445 49 => Some(WarmUpExerciseName::StretchLungingHipFlexor),
21446 50 => Some(WarmUpExerciseName::StretchLyingAbduction),
21447 51 => Some(WarmUpExerciseName::StretchLyingItBand),
21448 52 => Some(WarmUpExerciseName::StretchLyingKneeToChest),
21449 53 => Some(WarmUpExerciseName::StretchLyingPiriformis),
21450 54 => Some(WarmUpExerciseName::StretchLyingSpinalTwist),
21451 55 => Some(WarmUpExerciseName::StretchNeck),
21452 56 => Some(WarmUpExerciseName::StretchObliques),
21453 57 => Some(WarmUpExerciseName::StretchOverUnderShoulder),
21454 58 => Some(WarmUpExerciseName::StretchPectoral),
21455 59 => Some(WarmUpExerciseName::StretchPigeonPose),
21456 60 => Some(WarmUpExerciseName::StretchPiriformis),
21457 61 => Some(WarmUpExerciseName::StretchQuad),
21458 62 => Some(WarmUpExerciseName::StretchScorpion),
21459 63 => Some(WarmUpExerciseName::StretchShoulder),
21460 64 => Some(WarmUpExerciseName::StretchSide),
21461 65 => Some(WarmUpExerciseName::StretchSideLunge),
21462 66 => Some(WarmUpExerciseName::StretchSideSplit),
21463 67 => Some(WarmUpExerciseName::StretchStandingItBand),
21464 68 => Some(WarmUpExerciseName::StretchStraddle),
21465 69 => Some(WarmUpExerciseName::StretchTriceps),
21466 70 => Some(WarmUpExerciseName::StretchWallChestAndShoulder),
21467 71 => Some(WarmUpExerciseName::NeckRotationsWheelchair),
21468 72 => Some(WarmUpExerciseName::HalfKneelingArmRotation),
21469 73 => Some(WarmUpExerciseName::ThreeWayAnkleMobilization),
21470 74 => Some(WarmUpExerciseName::NinetyNinetyHipSwitch),
21471 75 => Some(WarmUpExerciseName::ActiveFrog),
21472 76 => Some(WarmUpExerciseName::ShoulderSweeps),
21473 77 => Some(WarmUpExerciseName::AnkleLunges),
21474 78 => Some(WarmUpExerciseName::BackRollFoamRoller),
21475 79 => Some(WarmUpExerciseName::BearCrawl),
21476 80 => Some(WarmUpExerciseName::LatissimusDorsiFoamRoll),
21477 81 => Some(WarmUpExerciseName::ReverseTHipOpener),
21478 82 => Some(WarmUpExerciseName::ShoulderRolls),
21479 83 => Some(WarmUpExerciseName::ChestOpeners),
21480 84 => Some(WarmUpExerciseName::TricepsStretch),
21481 85 => Some(WarmUpExerciseName::UpperBackStretch),
21482 86 => Some(WarmUpExerciseName::HipCircles),
21483 87 => Some(WarmUpExerciseName::AnkleStretch),
21484 88 => Some(WarmUpExerciseName::MarchingInPlace),
21485 89 => Some(WarmUpExerciseName::TricepsStretchWheelchair),
21486 90 => Some(WarmUpExerciseName::UpperBackStretchWheelchair),
21487 _ => None,
21488 }
21489 }
21490
21491 pub fn from_str(name: &str) -> Option<Self> {
21493 match name {
21494 "quadruped_rocking" => Some(WarmUpExerciseName::QuadrupedRocking),
21495 "neck_tilts" => Some(WarmUpExerciseName::NeckTilts),
21496 "ankle_circles" => Some(WarmUpExerciseName::AnkleCircles),
21497 "ankle_dorsiflexion_with_band" => Some(WarmUpExerciseName::AnkleDorsiflexionWithBand),
21498 "ankle_internal_rotation" => Some(WarmUpExerciseName::AnkleInternalRotation),
21499 "arm_circles" => Some(WarmUpExerciseName::ArmCircles),
21500 "bent_over_reach_to_sky" => Some(WarmUpExerciseName::BentOverReachToSky),
21501 "cat_camel" => Some(WarmUpExerciseName::CatCamel),
21502 "elbow_to_foot_lunge" => Some(WarmUpExerciseName::ElbowToFootLunge),
21503 "forward_and_backward_leg_swings" => {
21504 Some(WarmUpExerciseName::ForwardAndBackwardLegSwings)
21505 }
21506 "groiners" => Some(WarmUpExerciseName::Groiners),
21507 "inverted_hamstring_stretch" => Some(WarmUpExerciseName::InvertedHamstringStretch),
21508 "lateral_duck_under" => Some(WarmUpExerciseName::LateralDuckUnder),
21509 "neck_rotations" => Some(WarmUpExerciseName::NeckRotations),
21510 "opposite_arm_and_leg_balance" => Some(WarmUpExerciseName::OppositeArmAndLegBalance),
21511 "reach_roll_and_lift" => Some(WarmUpExerciseName::ReachRollAndLift),
21512 "scorpion" => Some(WarmUpExerciseName::Scorpion),
21513 "shoulder_circles" => Some(WarmUpExerciseName::ShoulderCircles),
21514 "side_to_side_leg_swings" => Some(WarmUpExerciseName::SideToSideLegSwings),
21515 "sleeper_stretch" => Some(WarmUpExerciseName::SleeperStretch),
21516 "slide_out" => Some(WarmUpExerciseName::SlideOut),
21517 "swiss_ball_hip_crossover" => Some(WarmUpExerciseName::SwissBallHipCrossover),
21518 "swiss_ball_reach_roll_and_lift" => Some(WarmUpExerciseName::SwissBallReachRollAndLift),
21519 "swiss_ball_windshield_wipers" => Some(WarmUpExerciseName::SwissBallWindshieldWipers),
21520 "thoracic_rotation" => Some(WarmUpExerciseName::ThoracicRotation),
21521 "walking_high_kicks" => Some(WarmUpExerciseName::WalkingHighKicks),
21522 "walking_high_knees" => Some(WarmUpExerciseName::WalkingHighKnees),
21523 "walking_knee_hugs" => Some(WarmUpExerciseName::WalkingKneeHugs),
21524 "walking_leg_cradles" => Some(WarmUpExerciseName::WalkingLegCradles),
21525 "walkout" => Some(WarmUpExerciseName::Walkout),
21526 "walkout_from_push_up_position" => Some(WarmUpExerciseName::WalkoutFromPushUpPosition),
21527 "biceps_stretch" => Some(WarmUpExerciseName::BicepsStretch),
21528 "glutes_stretch" => Some(WarmUpExerciseName::GlutesStretch),
21529 "standing_hamstring_stretch" => Some(WarmUpExerciseName::StandingHamstringStretch),
21530 "stretch_90_90" => Some(WarmUpExerciseName::Stretch9090),
21531 "stretch_abs" => Some(WarmUpExerciseName::StretchAbs),
21532 "stretch_butterfly" => Some(WarmUpExerciseName::StretchButterfly),
21533 "stretch_calf" => Some(WarmUpExerciseName::StretchCalf),
21534 "stretch_cat_cow" => Some(WarmUpExerciseName::StretchCatCow),
21535 "stretch_childs_pose" => Some(WarmUpExerciseName::StretchChildsPose),
21536 "stretch_cobra" => Some(WarmUpExerciseName::StretchCobra),
21537 "stretch_forearms" => Some(WarmUpExerciseName::StretchForearms),
21538 "stretch_forward_glutes" => Some(WarmUpExerciseName::StretchForwardGlutes),
21539 "stretch_front_split" => Some(WarmUpExerciseName::StretchFrontSplit),
21540 "stretch_hamstring" => Some(WarmUpExerciseName::StretchHamstring),
21541 "stretch_hip_flexor_and_quad" => Some(WarmUpExerciseName::StretchHipFlexorAndQuad),
21542 "stretch_lat" => Some(WarmUpExerciseName::StretchLat),
21543 "stretch_levator_scapulae" => Some(WarmUpExerciseName::StretchLevatorScapulae),
21544 "stretch_lunge_with_spinal_twist" => {
21545 Some(WarmUpExerciseName::StretchLungeWithSpinalTwist)
21546 }
21547 "stretch_lunging_hip_flexor" => Some(WarmUpExerciseName::StretchLungingHipFlexor),
21548 "stretch_lying_abduction" => Some(WarmUpExerciseName::StretchLyingAbduction),
21549 "stretch_lying_it_band" => Some(WarmUpExerciseName::StretchLyingItBand),
21550 "stretch_lying_knee_to_chest" => Some(WarmUpExerciseName::StretchLyingKneeToChest),
21551 "stretch_lying_piriformis" => Some(WarmUpExerciseName::StretchLyingPiriformis),
21552 "stretch_lying_spinal_twist" => Some(WarmUpExerciseName::StretchLyingSpinalTwist),
21553 "stretch_neck" => Some(WarmUpExerciseName::StretchNeck),
21554 "stretch_obliques" => Some(WarmUpExerciseName::StretchObliques),
21555 "stretch_over_under_shoulder" => Some(WarmUpExerciseName::StretchOverUnderShoulder),
21556 "stretch_pectoral" => Some(WarmUpExerciseName::StretchPectoral),
21557 "stretch_pigeon_pose" => Some(WarmUpExerciseName::StretchPigeonPose),
21558 "stretch_piriformis" => Some(WarmUpExerciseName::StretchPiriformis),
21559 "stretch_quad" => Some(WarmUpExerciseName::StretchQuad),
21560 "stretch_scorpion" => Some(WarmUpExerciseName::StretchScorpion),
21561 "stretch_shoulder" => Some(WarmUpExerciseName::StretchShoulder),
21562 "stretch_side" => Some(WarmUpExerciseName::StretchSide),
21563 "stretch_side_lunge" => Some(WarmUpExerciseName::StretchSideLunge),
21564 "stretch_side_split" => Some(WarmUpExerciseName::StretchSideSplit),
21565 "stretch_standing_it_band" => Some(WarmUpExerciseName::StretchStandingItBand),
21566 "stretch_straddle" => Some(WarmUpExerciseName::StretchStraddle),
21567 "stretch_triceps" => Some(WarmUpExerciseName::StretchTriceps),
21568 "stretch_wall_chest_and_shoulder" => {
21569 Some(WarmUpExerciseName::StretchWallChestAndShoulder)
21570 }
21571 "neck_rotations_wheelchair" => Some(WarmUpExerciseName::NeckRotationsWheelchair),
21572 "half_kneeling_arm_rotation" => Some(WarmUpExerciseName::HalfKneelingArmRotation),
21573 "three_way_ankle_mobilization" => Some(WarmUpExerciseName::ThreeWayAnkleMobilization),
21574 "ninety_ninety_hip_switch" => Some(WarmUpExerciseName::NinetyNinetyHipSwitch),
21575 "active_frog" => Some(WarmUpExerciseName::ActiveFrog),
21576 "shoulder_sweeps" => Some(WarmUpExerciseName::ShoulderSweeps),
21577 "ankle_lunges" => Some(WarmUpExerciseName::AnkleLunges),
21578 "back_roll_foam_roller" => Some(WarmUpExerciseName::BackRollFoamRoller),
21579 "bear_crawl" => Some(WarmUpExerciseName::BearCrawl),
21580 "latissimus_dorsi_foam_roll" => Some(WarmUpExerciseName::LatissimusDorsiFoamRoll),
21581 "reverse_t_hip_opener" => Some(WarmUpExerciseName::ReverseTHipOpener),
21582 "shoulder_rolls" => Some(WarmUpExerciseName::ShoulderRolls),
21583 "chest_openers" => Some(WarmUpExerciseName::ChestOpeners),
21584 "triceps_stretch" => Some(WarmUpExerciseName::TricepsStretch),
21585 "upper_back_stretch" => Some(WarmUpExerciseName::UpperBackStretch),
21586 "hip_circles" => Some(WarmUpExerciseName::HipCircles),
21587 "ankle_stretch" => Some(WarmUpExerciseName::AnkleStretch),
21588 "marching_in_place" => Some(WarmUpExerciseName::MarchingInPlace),
21589 "triceps_stretch_wheelchair" => Some(WarmUpExerciseName::TricepsStretchWheelchair),
21590 "upper_back_stretch_wheelchair" => Some(WarmUpExerciseName::UpperBackStretchWheelchair),
21591 _ => None,
21592 }
21593 }
21594}
21595
21596#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
21597#[repr(u16)]
21598#[non_exhaustive]
21599pub enum RunExerciseName {
21600 Run = 0,
21601 Walk = 1,
21602 Jog = 2,
21603 Sprint = 3,
21604 RunOrWalk = 4,
21605 SpeedWalk = 5,
21606 WarmUp = 6,
21607}
21608
21609impl RunExerciseName {
21610 pub fn as_str(&self) -> &'static str {
21612 match self {
21613 RunExerciseName::Run => "run",
21614 RunExerciseName::Walk => "walk",
21615 RunExerciseName::Jog => "jog",
21616 RunExerciseName::Sprint => "sprint",
21617 RunExerciseName::RunOrWalk => "run_or_walk",
21618 RunExerciseName::SpeedWalk => "speed_walk",
21619 RunExerciseName::WarmUp => "warm_up",
21620 }
21621 }
21622
21623 pub fn from_value(value: u16) -> Option<Self> {
21625 match value {
21626 0 => Some(RunExerciseName::Run),
21627 1 => Some(RunExerciseName::Walk),
21628 2 => Some(RunExerciseName::Jog),
21629 3 => Some(RunExerciseName::Sprint),
21630 4 => Some(RunExerciseName::RunOrWalk),
21631 5 => Some(RunExerciseName::SpeedWalk),
21632 6 => Some(RunExerciseName::WarmUp),
21633 _ => None,
21634 }
21635 }
21636
21637 pub fn from_str(name: &str) -> Option<Self> {
21639 match name {
21640 "run" => Some(RunExerciseName::Run),
21641 "walk" => Some(RunExerciseName::Walk),
21642 "jog" => Some(RunExerciseName::Jog),
21643 "sprint" => Some(RunExerciseName::Sprint),
21644 "run_or_walk" => Some(RunExerciseName::RunOrWalk),
21645 "speed_walk" => Some(RunExerciseName::SpeedWalk),
21646 "warm_up" => Some(RunExerciseName::WarmUp),
21647 _ => None,
21648 }
21649 }
21650}
21651
21652#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
21653#[repr(u16)]
21654#[non_exhaustive]
21655pub enum BikeExerciseName {
21656 Bike = 0,
21657 Ride = 1,
21658 Sprint = 2,
21659}
21660
21661impl BikeExerciseName {
21662 pub fn as_str(&self) -> &'static str {
21664 match self {
21665 BikeExerciseName::Bike => "bike",
21666 BikeExerciseName::Ride => "ride",
21667 BikeExerciseName::Sprint => "sprint",
21668 }
21669 }
21670
21671 pub fn from_value(value: u16) -> Option<Self> {
21673 match value {
21674 0 => Some(BikeExerciseName::Bike),
21675 1 => Some(BikeExerciseName::Ride),
21676 2 => Some(BikeExerciseName::Sprint),
21677 _ => None,
21678 }
21679 }
21680
21681 pub fn from_str(name: &str) -> Option<Self> {
21683 match name {
21684 "bike" => Some(BikeExerciseName::Bike),
21685 "ride" => Some(BikeExerciseName::Ride),
21686 "sprint" => Some(BikeExerciseName::Sprint),
21687 _ => None,
21688 }
21689 }
21690}
21691
21692#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
21693#[repr(u16)]
21694#[non_exhaustive]
21695pub enum BandedExercisesExerciseName {
21696 AbTwist = 1,
21697 BackExtension = 2,
21698 BicycleCrunch = 3,
21699 CalfRaises = 4,
21700 ChestPress = 5,
21701 ClamShells = 6,
21702 Curl = 7,
21703 Deadbug = 8,
21704 Deadlift = 9,
21705 DonkeyKick = 10,
21706 ExternalRotation = 11,
21707 ExternalRotationAt90DegreeAbduction = 12,
21708 FacePull = 13,
21709 FireHydrant = 14,
21710 Fly = 15,
21711 FrontRaise = 16,
21712 GluteBridge = 17,
21713 HamstringCurls = 18,
21714 HighPlankLegLifts = 19,
21715 HipExtension = 20,
21716 InternalRotation = 21,
21717 JumpingJack = 22,
21718 KneelingCrunch = 23,
21719 LateralBandWalks = 24,
21720 LateralRaise = 25,
21721 Latpull = 26,
21722 LegAbduction = 27,
21723 LegAdduction = 28,
21724 LegExtension = 29,
21725 Lunge = 30,
21726 Plank = 31,
21727 PullApart = 32,
21728 PushUps = 33,
21729 ReverseCrunch = 34,
21730 Row = 35,
21731 ShoulderAbduction = 36,
21732 ShoulderExtension = 37,
21733 ShoulderExternalRotation = 38,
21734 ShoulderFlexionTo90Degrees = 39,
21735 SidePlankLegLifts = 40,
21736 SideRaise = 41,
21737 Squat = 42,
21738 SquatToPress = 43,
21739 TricepExtension = 44,
21740 TricepKickback = 45,
21741 UprightRow = 46,
21742 WallCrawlWithExternalRotation = 47,
21743 LateralRaiseWheelchair = 49,
21744 TricepsExtensionWheelchair = 50,
21745 ChestFlyInclineWheelchair = 51,
21746 ChestFlyDeclineWheelchair = 52,
21747 PullDownWheelchair = 53,
21748 StraightArmPullDownWheelchair = 54,
21749 CurlWheelchair = 55,
21750 OverheadCurlWheelchair = 56,
21751 FacePullWheelchair = 57,
21752 AroundTheWorldWheelchair = 58,
21753 PullApartWheelchair = 59,
21754 SideCurlWheelchair = 60,
21755 OverheadPressWheelchair = 61,
21756}
21757
21758impl BandedExercisesExerciseName {
21759 pub fn as_str(&self) -> &'static str {
21761 match self {
21762 BandedExercisesExerciseName::AbTwist => "ab_twist",
21763 BandedExercisesExerciseName::BackExtension => "back_extension",
21764 BandedExercisesExerciseName::BicycleCrunch => "bicycle_crunch",
21765 BandedExercisesExerciseName::CalfRaises => "calf_raises",
21766 BandedExercisesExerciseName::ChestPress => "chest_press",
21767 BandedExercisesExerciseName::ClamShells => "clam_shells",
21768 BandedExercisesExerciseName::Curl => "curl",
21769 BandedExercisesExerciseName::Deadbug => "deadbug",
21770 BandedExercisesExerciseName::Deadlift => "deadlift",
21771 BandedExercisesExerciseName::DonkeyKick => "donkey_kick",
21772 BandedExercisesExerciseName::ExternalRotation => "external_rotation",
21773 BandedExercisesExerciseName::ExternalRotationAt90DegreeAbduction => {
21774 "external_rotation_at_90_degree_abduction"
21775 }
21776 BandedExercisesExerciseName::FacePull => "face_pull",
21777 BandedExercisesExerciseName::FireHydrant => "fire_hydrant",
21778 BandedExercisesExerciseName::Fly => "fly",
21779 BandedExercisesExerciseName::FrontRaise => "front_raise",
21780 BandedExercisesExerciseName::GluteBridge => "glute_bridge",
21781 BandedExercisesExerciseName::HamstringCurls => "hamstring_curls",
21782 BandedExercisesExerciseName::HighPlankLegLifts => "high_plank_leg_lifts",
21783 BandedExercisesExerciseName::HipExtension => "hip_extension",
21784 BandedExercisesExerciseName::InternalRotation => "internal_rotation",
21785 BandedExercisesExerciseName::JumpingJack => "jumping_jack",
21786 BandedExercisesExerciseName::KneelingCrunch => "kneeling_crunch",
21787 BandedExercisesExerciseName::LateralBandWalks => "lateral_band_walks",
21788 BandedExercisesExerciseName::LateralRaise => "lateral_raise",
21789 BandedExercisesExerciseName::Latpull => "latpull",
21790 BandedExercisesExerciseName::LegAbduction => "leg_abduction",
21791 BandedExercisesExerciseName::LegAdduction => "leg_adduction",
21792 BandedExercisesExerciseName::LegExtension => "leg_extension",
21793 BandedExercisesExerciseName::Lunge => "lunge",
21794 BandedExercisesExerciseName::Plank => "plank",
21795 BandedExercisesExerciseName::PullApart => "pull_apart",
21796 BandedExercisesExerciseName::PushUps => "push_ups",
21797 BandedExercisesExerciseName::ReverseCrunch => "reverse_crunch",
21798 BandedExercisesExerciseName::Row => "row",
21799 BandedExercisesExerciseName::ShoulderAbduction => "shoulder_abduction",
21800 BandedExercisesExerciseName::ShoulderExtension => "shoulder_extension",
21801 BandedExercisesExerciseName::ShoulderExternalRotation => "shoulder_external_rotation",
21802 BandedExercisesExerciseName::ShoulderFlexionTo90Degrees => {
21803 "shoulder_flexion_to_90_degrees"
21804 }
21805 BandedExercisesExerciseName::SidePlankLegLifts => "side_plank_leg_lifts",
21806 BandedExercisesExerciseName::SideRaise => "side_raise",
21807 BandedExercisesExerciseName::Squat => "squat",
21808 BandedExercisesExerciseName::SquatToPress => "squat_to_press",
21809 BandedExercisesExerciseName::TricepExtension => "tricep_extension",
21810 BandedExercisesExerciseName::TricepKickback => "tricep_kickback",
21811 BandedExercisesExerciseName::UprightRow => "upright_row",
21812 BandedExercisesExerciseName::WallCrawlWithExternalRotation => {
21813 "wall_crawl_with_external_rotation"
21814 }
21815 BandedExercisesExerciseName::LateralRaiseWheelchair => "lateral_raise_wheelchair",
21816 BandedExercisesExerciseName::TricepsExtensionWheelchair => {
21817 "triceps_extension_wheelchair"
21818 }
21819 BandedExercisesExerciseName::ChestFlyInclineWheelchair => {
21820 "chest_fly_incline_wheelchair"
21821 }
21822 BandedExercisesExerciseName::ChestFlyDeclineWheelchair => {
21823 "chest_fly_decline_wheelchair"
21824 }
21825 BandedExercisesExerciseName::PullDownWheelchair => "pull_down_wheelchair",
21826 BandedExercisesExerciseName::StraightArmPullDownWheelchair => {
21827 "straight_arm_pull_down_wheelchair"
21828 }
21829 BandedExercisesExerciseName::CurlWheelchair => "curl_wheelchair",
21830 BandedExercisesExerciseName::OverheadCurlWheelchair => "overhead_curl_wheelchair",
21831 BandedExercisesExerciseName::FacePullWheelchair => "face_pull_wheelchair",
21832 BandedExercisesExerciseName::AroundTheWorldWheelchair => "around_the_world_wheelchair",
21833 BandedExercisesExerciseName::PullApartWheelchair => "pull_apart_wheelchair",
21834 BandedExercisesExerciseName::SideCurlWheelchair => "side_curl_wheelchair",
21835 BandedExercisesExerciseName::OverheadPressWheelchair => "overhead_press_wheelchair",
21836 }
21837 }
21838
21839 pub fn from_value(value: u16) -> Option<Self> {
21841 match value {
21842 1 => Some(BandedExercisesExerciseName::AbTwist),
21843 2 => Some(BandedExercisesExerciseName::BackExtension),
21844 3 => Some(BandedExercisesExerciseName::BicycleCrunch),
21845 4 => Some(BandedExercisesExerciseName::CalfRaises),
21846 5 => Some(BandedExercisesExerciseName::ChestPress),
21847 6 => Some(BandedExercisesExerciseName::ClamShells),
21848 7 => Some(BandedExercisesExerciseName::Curl),
21849 8 => Some(BandedExercisesExerciseName::Deadbug),
21850 9 => Some(BandedExercisesExerciseName::Deadlift),
21851 10 => Some(BandedExercisesExerciseName::DonkeyKick),
21852 11 => Some(BandedExercisesExerciseName::ExternalRotation),
21853 12 => Some(BandedExercisesExerciseName::ExternalRotationAt90DegreeAbduction),
21854 13 => Some(BandedExercisesExerciseName::FacePull),
21855 14 => Some(BandedExercisesExerciseName::FireHydrant),
21856 15 => Some(BandedExercisesExerciseName::Fly),
21857 16 => Some(BandedExercisesExerciseName::FrontRaise),
21858 17 => Some(BandedExercisesExerciseName::GluteBridge),
21859 18 => Some(BandedExercisesExerciseName::HamstringCurls),
21860 19 => Some(BandedExercisesExerciseName::HighPlankLegLifts),
21861 20 => Some(BandedExercisesExerciseName::HipExtension),
21862 21 => Some(BandedExercisesExerciseName::InternalRotation),
21863 22 => Some(BandedExercisesExerciseName::JumpingJack),
21864 23 => Some(BandedExercisesExerciseName::KneelingCrunch),
21865 24 => Some(BandedExercisesExerciseName::LateralBandWalks),
21866 25 => Some(BandedExercisesExerciseName::LateralRaise),
21867 26 => Some(BandedExercisesExerciseName::Latpull),
21868 27 => Some(BandedExercisesExerciseName::LegAbduction),
21869 28 => Some(BandedExercisesExerciseName::LegAdduction),
21870 29 => Some(BandedExercisesExerciseName::LegExtension),
21871 30 => Some(BandedExercisesExerciseName::Lunge),
21872 31 => Some(BandedExercisesExerciseName::Plank),
21873 32 => Some(BandedExercisesExerciseName::PullApart),
21874 33 => Some(BandedExercisesExerciseName::PushUps),
21875 34 => Some(BandedExercisesExerciseName::ReverseCrunch),
21876 35 => Some(BandedExercisesExerciseName::Row),
21877 36 => Some(BandedExercisesExerciseName::ShoulderAbduction),
21878 37 => Some(BandedExercisesExerciseName::ShoulderExtension),
21879 38 => Some(BandedExercisesExerciseName::ShoulderExternalRotation),
21880 39 => Some(BandedExercisesExerciseName::ShoulderFlexionTo90Degrees),
21881 40 => Some(BandedExercisesExerciseName::SidePlankLegLifts),
21882 41 => Some(BandedExercisesExerciseName::SideRaise),
21883 42 => Some(BandedExercisesExerciseName::Squat),
21884 43 => Some(BandedExercisesExerciseName::SquatToPress),
21885 44 => Some(BandedExercisesExerciseName::TricepExtension),
21886 45 => Some(BandedExercisesExerciseName::TricepKickback),
21887 46 => Some(BandedExercisesExerciseName::UprightRow),
21888 47 => Some(BandedExercisesExerciseName::WallCrawlWithExternalRotation),
21889 49 => Some(BandedExercisesExerciseName::LateralRaiseWheelchair),
21890 50 => Some(BandedExercisesExerciseName::TricepsExtensionWheelchair),
21891 51 => Some(BandedExercisesExerciseName::ChestFlyInclineWheelchair),
21892 52 => Some(BandedExercisesExerciseName::ChestFlyDeclineWheelchair),
21893 53 => Some(BandedExercisesExerciseName::PullDownWheelchair),
21894 54 => Some(BandedExercisesExerciseName::StraightArmPullDownWheelchair),
21895 55 => Some(BandedExercisesExerciseName::CurlWheelchair),
21896 56 => Some(BandedExercisesExerciseName::OverheadCurlWheelchair),
21897 57 => Some(BandedExercisesExerciseName::FacePullWheelchair),
21898 58 => Some(BandedExercisesExerciseName::AroundTheWorldWheelchair),
21899 59 => Some(BandedExercisesExerciseName::PullApartWheelchair),
21900 60 => Some(BandedExercisesExerciseName::SideCurlWheelchair),
21901 61 => Some(BandedExercisesExerciseName::OverheadPressWheelchair),
21902 _ => None,
21903 }
21904 }
21905
21906 pub fn from_str(name: &str) -> Option<Self> {
21908 match name {
21909 "ab_twist" => Some(BandedExercisesExerciseName::AbTwist),
21910 "back_extension" => Some(BandedExercisesExerciseName::BackExtension),
21911 "bicycle_crunch" => Some(BandedExercisesExerciseName::BicycleCrunch),
21912 "calf_raises" => Some(BandedExercisesExerciseName::CalfRaises),
21913 "chest_press" => Some(BandedExercisesExerciseName::ChestPress),
21914 "clam_shells" => Some(BandedExercisesExerciseName::ClamShells),
21915 "curl" => Some(BandedExercisesExerciseName::Curl),
21916 "deadbug" => Some(BandedExercisesExerciseName::Deadbug),
21917 "deadlift" => Some(BandedExercisesExerciseName::Deadlift),
21918 "donkey_kick" => Some(BandedExercisesExerciseName::DonkeyKick),
21919 "external_rotation" => Some(BandedExercisesExerciseName::ExternalRotation),
21920 "external_rotation_at_90_degree_abduction" => {
21921 Some(BandedExercisesExerciseName::ExternalRotationAt90DegreeAbduction)
21922 }
21923 "face_pull" => Some(BandedExercisesExerciseName::FacePull),
21924 "fire_hydrant" => Some(BandedExercisesExerciseName::FireHydrant),
21925 "fly" => Some(BandedExercisesExerciseName::Fly),
21926 "front_raise" => Some(BandedExercisesExerciseName::FrontRaise),
21927 "glute_bridge" => Some(BandedExercisesExerciseName::GluteBridge),
21928 "hamstring_curls" => Some(BandedExercisesExerciseName::HamstringCurls),
21929 "high_plank_leg_lifts" => Some(BandedExercisesExerciseName::HighPlankLegLifts),
21930 "hip_extension" => Some(BandedExercisesExerciseName::HipExtension),
21931 "internal_rotation" => Some(BandedExercisesExerciseName::InternalRotation),
21932 "jumping_jack" => Some(BandedExercisesExerciseName::JumpingJack),
21933 "kneeling_crunch" => Some(BandedExercisesExerciseName::KneelingCrunch),
21934 "lateral_band_walks" => Some(BandedExercisesExerciseName::LateralBandWalks),
21935 "lateral_raise" => Some(BandedExercisesExerciseName::LateralRaise),
21936 "latpull" => Some(BandedExercisesExerciseName::Latpull),
21937 "leg_abduction" => Some(BandedExercisesExerciseName::LegAbduction),
21938 "leg_adduction" => Some(BandedExercisesExerciseName::LegAdduction),
21939 "leg_extension" => Some(BandedExercisesExerciseName::LegExtension),
21940 "lunge" => Some(BandedExercisesExerciseName::Lunge),
21941 "plank" => Some(BandedExercisesExerciseName::Plank),
21942 "pull_apart" => Some(BandedExercisesExerciseName::PullApart),
21943 "push_ups" => Some(BandedExercisesExerciseName::PushUps),
21944 "reverse_crunch" => Some(BandedExercisesExerciseName::ReverseCrunch),
21945 "row" => Some(BandedExercisesExerciseName::Row),
21946 "shoulder_abduction" => Some(BandedExercisesExerciseName::ShoulderAbduction),
21947 "shoulder_extension" => Some(BandedExercisesExerciseName::ShoulderExtension),
21948 "shoulder_external_rotation" => {
21949 Some(BandedExercisesExerciseName::ShoulderExternalRotation)
21950 }
21951 "shoulder_flexion_to_90_degrees" => {
21952 Some(BandedExercisesExerciseName::ShoulderFlexionTo90Degrees)
21953 }
21954 "side_plank_leg_lifts" => Some(BandedExercisesExerciseName::SidePlankLegLifts),
21955 "side_raise" => Some(BandedExercisesExerciseName::SideRaise),
21956 "squat" => Some(BandedExercisesExerciseName::Squat),
21957 "squat_to_press" => Some(BandedExercisesExerciseName::SquatToPress),
21958 "tricep_extension" => Some(BandedExercisesExerciseName::TricepExtension),
21959 "tricep_kickback" => Some(BandedExercisesExerciseName::TricepKickback),
21960 "upright_row" => Some(BandedExercisesExerciseName::UprightRow),
21961 "wall_crawl_with_external_rotation" => {
21962 Some(BandedExercisesExerciseName::WallCrawlWithExternalRotation)
21963 }
21964 "lateral_raise_wheelchair" => Some(BandedExercisesExerciseName::LateralRaiseWheelchair),
21965 "triceps_extension_wheelchair" => {
21966 Some(BandedExercisesExerciseName::TricepsExtensionWheelchair)
21967 }
21968 "chest_fly_incline_wheelchair" => {
21969 Some(BandedExercisesExerciseName::ChestFlyInclineWheelchair)
21970 }
21971 "chest_fly_decline_wheelchair" => {
21972 Some(BandedExercisesExerciseName::ChestFlyDeclineWheelchair)
21973 }
21974 "pull_down_wheelchair" => Some(BandedExercisesExerciseName::PullDownWheelchair),
21975 "straight_arm_pull_down_wheelchair" => {
21976 Some(BandedExercisesExerciseName::StraightArmPullDownWheelchair)
21977 }
21978 "curl_wheelchair" => Some(BandedExercisesExerciseName::CurlWheelchair),
21979 "overhead_curl_wheelchair" => Some(BandedExercisesExerciseName::OverheadCurlWheelchair),
21980 "face_pull_wheelchair" => Some(BandedExercisesExerciseName::FacePullWheelchair),
21981 "around_the_world_wheelchair" => {
21982 Some(BandedExercisesExerciseName::AroundTheWorldWheelchair)
21983 }
21984 "pull_apart_wheelchair" => Some(BandedExercisesExerciseName::PullApartWheelchair),
21985 "side_curl_wheelchair" => Some(BandedExercisesExerciseName::SideCurlWheelchair),
21986 "overhead_press_wheelchair" => {
21987 Some(BandedExercisesExerciseName::OverheadPressWheelchair)
21988 }
21989 _ => None,
21990 }
21991 }
21992}
21993
21994#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
21995#[repr(u16)]
21996#[non_exhaustive]
21997pub enum BattleRopeExerciseName {
21998 AlternatingFigureEight = 0,
21999 AlternatingJumpWave = 1,
22000 AlternatingKneelingToStandingWave = 2,
22001 AlternatingLungeWave = 3,
22002 AlternatingSquatWave = 4,
22003 AlternatingWave = 5,
22004 AlternatingWaveWithLateralShuffle = 6,
22005 ClapWave = 7,
22006 DoubleArmFigureEight = 8,
22007 DoubleArmSideToSideSnake = 9,
22008 DoubleArmSideWave = 10,
22009 DoubleArmSlam = 11,
22010 DoubleArmWave = 12,
22011 GrapplerToss = 13,
22012 HipToss = 14,
22013 InAndOutWave = 15,
22014 InsideCircle = 16,
22015 JumpingJacks = 17,
22016 OutsideCircle = 18,
22017 Rainbow = 19,
22018 SidePlankWave = 20,
22019 Sidewinder = 21,
22020 SittingRussianTwist = 22,
22021 SnakeWave = 23,
22022 SplitJack = 24,
22023 StageCoach = 25,
22024 UltimateWarrior = 26,
22025 UpperCuts = 27,
22026}
22027
22028impl BattleRopeExerciseName {
22029 pub fn as_str(&self) -> &'static str {
22031 match self {
22032 BattleRopeExerciseName::AlternatingFigureEight => "alternating_figure_eight",
22033 BattleRopeExerciseName::AlternatingJumpWave => "alternating_jump_wave",
22034 BattleRopeExerciseName::AlternatingKneelingToStandingWave => {
22035 "alternating_kneeling_to_standing_wave"
22036 }
22037 BattleRopeExerciseName::AlternatingLungeWave => "alternating_lunge_wave",
22038 BattleRopeExerciseName::AlternatingSquatWave => "alternating_squat_wave",
22039 BattleRopeExerciseName::AlternatingWave => "alternating_wave",
22040 BattleRopeExerciseName::AlternatingWaveWithLateralShuffle => {
22041 "alternating_wave_with_lateral_shuffle"
22042 }
22043 BattleRopeExerciseName::ClapWave => "clap_wave",
22044 BattleRopeExerciseName::DoubleArmFigureEight => "double_arm_figure_eight",
22045 BattleRopeExerciseName::DoubleArmSideToSideSnake => "double_arm_side_to_side_snake",
22046 BattleRopeExerciseName::DoubleArmSideWave => "double_arm_side_wave",
22047 BattleRopeExerciseName::DoubleArmSlam => "double_arm_slam",
22048 BattleRopeExerciseName::DoubleArmWave => "double_arm_wave",
22049 BattleRopeExerciseName::GrapplerToss => "grappler_toss",
22050 BattleRopeExerciseName::HipToss => "hip_toss",
22051 BattleRopeExerciseName::InAndOutWave => "in_and_out_wave",
22052 BattleRopeExerciseName::InsideCircle => "inside_circle",
22053 BattleRopeExerciseName::JumpingJacks => "jumping_jacks",
22054 BattleRopeExerciseName::OutsideCircle => "outside_circle",
22055 BattleRopeExerciseName::Rainbow => "rainbow",
22056 BattleRopeExerciseName::SidePlankWave => "side_plank_wave",
22057 BattleRopeExerciseName::Sidewinder => "sidewinder",
22058 BattleRopeExerciseName::SittingRussianTwist => "sitting_russian_twist",
22059 BattleRopeExerciseName::SnakeWave => "snake_wave",
22060 BattleRopeExerciseName::SplitJack => "split_jack",
22061 BattleRopeExerciseName::StageCoach => "stage_coach",
22062 BattleRopeExerciseName::UltimateWarrior => "ultimate_warrior",
22063 BattleRopeExerciseName::UpperCuts => "upper_cuts",
22064 }
22065 }
22066
22067 pub fn from_value(value: u16) -> Option<Self> {
22069 match value {
22070 0 => Some(BattleRopeExerciseName::AlternatingFigureEight),
22071 1 => Some(BattleRopeExerciseName::AlternatingJumpWave),
22072 2 => Some(BattleRopeExerciseName::AlternatingKneelingToStandingWave),
22073 3 => Some(BattleRopeExerciseName::AlternatingLungeWave),
22074 4 => Some(BattleRopeExerciseName::AlternatingSquatWave),
22075 5 => Some(BattleRopeExerciseName::AlternatingWave),
22076 6 => Some(BattleRopeExerciseName::AlternatingWaveWithLateralShuffle),
22077 7 => Some(BattleRopeExerciseName::ClapWave),
22078 8 => Some(BattleRopeExerciseName::DoubleArmFigureEight),
22079 9 => Some(BattleRopeExerciseName::DoubleArmSideToSideSnake),
22080 10 => Some(BattleRopeExerciseName::DoubleArmSideWave),
22081 11 => Some(BattleRopeExerciseName::DoubleArmSlam),
22082 12 => Some(BattleRopeExerciseName::DoubleArmWave),
22083 13 => Some(BattleRopeExerciseName::GrapplerToss),
22084 14 => Some(BattleRopeExerciseName::HipToss),
22085 15 => Some(BattleRopeExerciseName::InAndOutWave),
22086 16 => Some(BattleRopeExerciseName::InsideCircle),
22087 17 => Some(BattleRopeExerciseName::JumpingJacks),
22088 18 => Some(BattleRopeExerciseName::OutsideCircle),
22089 19 => Some(BattleRopeExerciseName::Rainbow),
22090 20 => Some(BattleRopeExerciseName::SidePlankWave),
22091 21 => Some(BattleRopeExerciseName::Sidewinder),
22092 22 => Some(BattleRopeExerciseName::SittingRussianTwist),
22093 23 => Some(BattleRopeExerciseName::SnakeWave),
22094 24 => Some(BattleRopeExerciseName::SplitJack),
22095 25 => Some(BattleRopeExerciseName::StageCoach),
22096 26 => Some(BattleRopeExerciseName::UltimateWarrior),
22097 27 => Some(BattleRopeExerciseName::UpperCuts),
22098 _ => None,
22099 }
22100 }
22101
22102 pub fn from_str(name: &str) -> Option<Self> {
22104 match name {
22105 "alternating_figure_eight" => Some(BattleRopeExerciseName::AlternatingFigureEight),
22106 "alternating_jump_wave" => Some(BattleRopeExerciseName::AlternatingJumpWave),
22107 "alternating_kneeling_to_standing_wave" => {
22108 Some(BattleRopeExerciseName::AlternatingKneelingToStandingWave)
22109 }
22110 "alternating_lunge_wave" => Some(BattleRopeExerciseName::AlternatingLungeWave),
22111 "alternating_squat_wave" => Some(BattleRopeExerciseName::AlternatingSquatWave),
22112 "alternating_wave" => Some(BattleRopeExerciseName::AlternatingWave),
22113 "alternating_wave_with_lateral_shuffle" => {
22114 Some(BattleRopeExerciseName::AlternatingWaveWithLateralShuffle)
22115 }
22116 "clap_wave" => Some(BattleRopeExerciseName::ClapWave),
22117 "double_arm_figure_eight" => Some(BattleRopeExerciseName::DoubleArmFigureEight),
22118 "double_arm_side_to_side_snake" => {
22119 Some(BattleRopeExerciseName::DoubleArmSideToSideSnake)
22120 }
22121 "double_arm_side_wave" => Some(BattleRopeExerciseName::DoubleArmSideWave),
22122 "double_arm_slam" => Some(BattleRopeExerciseName::DoubleArmSlam),
22123 "double_arm_wave" => Some(BattleRopeExerciseName::DoubleArmWave),
22124 "grappler_toss" => Some(BattleRopeExerciseName::GrapplerToss),
22125 "hip_toss" => Some(BattleRopeExerciseName::HipToss),
22126 "in_and_out_wave" => Some(BattleRopeExerciseName::InAndOutWave),
22127 "inside_circle" => Some(BattleRopeExerciseName::InsideCircle),
22128 "jumping_jacks" => Some(BattleRopeExerciseName::JumpingJacks),
22129 "outside_circle" => Some(BattleRopeExerciseName::OutsideCircle),
22130 "rainbow" => Some(BattleRopeExerciseName::Rainbow),
22131 "side_plank_wave" => Some(BattleRopeExerciseName::SidePlankWave),
22132 "sidewinder" => Some(BattleRopeExerciseName::Sidewinder),
22133 "sitting_russian_twist" => Some(BattleRopeExerciseName::SittingRussianTwist),
22134 "snake_wave" => Some(BattleRopeExerciseName::SnakeWave),
22135 "split_jack" => Some(BattleRopeExerciseName::SplitJack),
22136 "stage_coach" => Some(BattleRopeExerciseName::StageCoach),
22137 "ultimate_warrior" => Some(BattleRopeExerciseName::UltimateWarrior),
22138 "upper_cuts" => Some(BattleRopeExerciseName::UpperCuts),
22139 _ => None,
22140 }
22141 }
22142}
22143
22144#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22145#[repr(u16)]
22146#[non_exhaustive]
22147pub enum EllipticalExerciseName {
22148 Elliptical = 0,
22149}
22150
22151impl EllipticalExerciseName {
22152 pub fn as_str(&self) -> &'static str {
22154 match self {
22155 EllipticalExerciseName::Elliptical => "elliptical",
22156 }
22157 }
22158
22159 pub fn from_value(value: u16) -> Option<Self> {
22161 match value {
22162 0 => Some(EllipticalExerciseName::Elliptical),
22163 _ => None,
22164 }
22165 }
22166
22167 pub fn from_str(name: &str) -> Option<Self> {
22169 match name {
22170 "elliptical" => Some(EllipticalExerciseName::Elliptical),
22171 _ => None,
22172 }
22173 }
22174}
22175
22176#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22177#[repr(u16)]
22178#[non_exhaustive]
22179pub enum FloorClimbExerciseName {
22180 FloorClimb = 0,
22181}
22182
22183impl FloorClimbExerciseName {
22184 pub fn as_str(&self) -> &'static str {
22186 match self {
22187 FloorClimbExerciseName::FloorClimb => "floor_climb",
22188 }
22189 }
22190
22191 pub fn from_value(value: u16) -> Option<Self> {
22193 match value {
22194 0 => Some(FloorClimbExerciseName::FloorClimb),
22195 _ => None,
22196 }
22197 }
22198
22199 pub fn from_str(name: &str) -> Option<Self> {
22201 match name {
22202 "floor_climb" => Some(FloorClimbExerciseName::FloorClimb),
22203 _ => None,
22204 }
22205 }
22206}
22207
22208#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22209#[repr(u16)]
22210#[non_exhaustive]
22211pub enum IndoorBikeExerciseName {
22212 AirBike = 0,
22213 AssaultBike = 1,
22214 StationaryBike = 3,
22215}
22216
22217impl IndoorBikeExerciseName {
22218 pub fn as_str(&self) -> &'static str {
22220 match self {
22221 IndoorBikeExerciseName::AirBike => "air_bike",
22222 IndoorBikeExerciseName::AssaultBike => "assault_bike",
22223 IndoorBikeExerciseName::StationaryBike => "stationary_bike",
22224 }
22225 }
22226
22227 pub fn from_value(value: u16) -> Option<Self> {
22229 match value {
22230 0 => Some(IndoorBikeExerciseName::AirBike),
22231 1 => Some(IndoorBikeExerciseName::AssaultBike),
22232 3 => Some(IndoorBikeExerciseName::StationaryBike),
22233 _ => None,
22234 }
22235 }
22236
22237 pub fn from_str(name: &str) -> Option<Self> {
22239 match name {
22240 "air_bike" => Some(IndoorBikeExerciseName::AirBike),
22241 "assault_bike" => Some(IndoorBikeExerciseName::AssaultBike),
22242 "stationary_bike" => Some(IndoorBikeExerciseName::StationaryBike),
22243 _ => None,
22244 }
22245 }
22246}
22247
22248#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22249#[repr(u16)]
22250#[non_exhaustive]
22251pub enum IndoorRowExerciseName {
22252 RowingMachine = 0,
22253}
22254
22255impl IndoorRowExerciseName {
22256 pub fn as_str(&self) -> &'static str {
22258 match self {
22259 IndoorRowExerciseName::RowingMachine => "rowing_machine",
22260 }
22261 }
22262
22263 pub fn from_value(value: u16) -> Option<Self> {
22265 match value {
22266 0 => Some(IndoorRowExerciseName::RowingMachine),
22267 _ => None,
22268 }
22269 }
22270
22271 pub fn from_str(name: &str) -> Option<Self> {
22273 match name {
22274 "rowing_machine" => Some(IndoorRowExerciseName::RowingMachine),
22275 _ => None,
22276 }
22277 }
22278}
22279
22280#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22281#[repr(u16)]
22282#[non_exhaustive]
22283pub enum LadderExerciseName {
22284 Agility = 0,
22285 Speed = 1,
22286}
22287
22288impl LadderExerciseName {
22289 pub fn as_str(&self) -> &'static str {
22291 match self {
22292 LadderExerciseName::Agility => "agility",
22293 LadderExerciseName::Speed => "speed",
22294 }
22295 }
22296
22297 pub fn from_value(value: u16) -> Option<Self> {
22299 match value {
22300 0 => Some(LadderExerciseName::Agility),
22301 1 => Some(LadderExerciseName::Speed),
22302 _ => None,
22303 }
22304 }
22305
22306 pub fn from_str(name: &str) -> Option<Self> {
22308 match name {
22309 "agility" => Some(LadderExerciseName::Agility),
22310 "speed" => Some(LadderExerciseName::Speed),
22311 _ => None,
22312 }
22313 }
22314}
22315
22316#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22317#[repr(u16)]
22318#[non_exhaustive]
22319pub enum SandbagExerciseName {
22320 AroundTheWorld = 0,
22321 BackSquat = 1,
22322 BearCrawlPullThrough = 2,
22323 BearHugSquat = 3,
22324 Clean = 4,
22325 CleanAndPress = 5,
22326 Curl = 6,
22327 FrontCarry = 7,
22328 FrontSquat = 8,
22329 Lunge = 9,
22330 OverheadPress = 10,
22331 PlankPullThrough = 11,
22332 RotationalLunge = 12,
22333 Row = 13,
22334 RussianTwist = 14,
22335 Shouldering = 15,
22336 Shoveling = 16,
22337 SideLunge = 17,
22338 Sprint = 18,
22339 ZercherSquat = 19,
22340}
22341
22342impl SandbagExerciseName {
22343 pub fn as_str(&self) -> &'static str {
22345 match self {
22346 SandbagExerciseName::AroundTheWorld => "around_the_world",
22347 SandbagExerciseName::BackSquat => "back_squat",
22348 SandbagExerciseName::BearCrawlPullThrough => "bear_crawl_pull_through",
22349 SandbagExerciseName::BearHugSquat => "bear_hug_squat",
22350 SandbagExerciseName::Clean => "clean",
22351 SandbagExerciseName::CleanAndPress => "clean_and_press",
22352 SandbagExerciseName::Curl => "curl",
22353 SandbagExerciseName::FrontCarry => "front_carry",
22354 SandbagExerciseName::FrontSquat => "front_squat",
22355 SandbagExerciseName::Lunge => "lunge",
22356 SandbagExerciseName::OverheadPress => "overhead_press",
22357 SandbagExerciseName::PlankPullThrough => "plank_pull_through",
22358 SandbagExerciseName::RotationalLunge => "rotational_lunge",
22359 SandbagExerciseName::Row => "row",
22360 SandbagExerciseName::RussianTwist => "russian_twist",
22361 SandbagExerciseName::Shouldering => "shouldering",
22362 SandbagExerciseName::Shoveling => "shoveling",
22363 SandbagExerciseName::SideLunge => "side_lunge",
22364 SandbagExerciseName::Sprint => "sprint",
22365 SandbagExerciseName::ZercherSquat => "zercher_squat",
22366 }
22367 }
22368
22369 pub fn from_value(value: u16) -> Option<Self> {
22371 match value {
22372 0 => Some(SandbagExerciseName::AroundTheWorld),
22373 1 => Some(SandbagExerciseName::BackSquat),
22374 2 => Some(SandbagExerciseName::BearCrawlPullThrough),
22375 3 => Some(SandbagExerciseName::BearHugSquat),
22376 4 => Some(SandbagExerciseName::Clean),
22377 5 => Some(SandbagExerciseName::CleanAndPress),
22378 6 => Some(SandbagExerciseName::Curl),
22379 7 => Some(SandbagExerciseName::FrontCarry),
22380 8 => Some(SandbagExerciseName::FrontSquat),
22381 9 => Some(SandbagExerciseName::Lunge),
22382 10 => Some(SandbagExerciseName::OverheadPress),
22383 11 => Some(SandbagExerciseName::PlankPullThrough),
22384 12 => Some(SandbagExerciseName::RotationalLunge),
22385 13 => Some(SandbagExerciseName::Row),
22386 14 => Some(SandbagExerciseName::RussianTwist),
22387 15 => Some(SandbagExerciseName::Shouldering),
22388 16 => Some(SandbagExerciseName::Shoveling),
22389 17 => Some(SandbagExerciseName::SideLunge),
22390 18 => Some(SandbagExerciseName::Sprint),
22391 19 => Some(SandbagExerciseName::ZercherSquat),
22392 _ => None,
22393 }
22394 }
22395
22396 pub fn from_str(name: &str) -> Option<Self> {
22398 match name {
22399 "around_the_world" => Some(SandbagExerciseName::AroundTheWorld),
22400 "back_squat" => Some(SandbagExerciseName::BackSquat),
22401 "bear_crawl_pull_through" => Some(SandbagExerciseName::BearCrawlPullThrough),
22402 "bear_hug_squat" => Some(SandbagExerciseName::BearHugSquat),
22403 "clean" => Some(SandbagExerciseName::Clean),
22404 "clean_and_press" => Some(SandbagExerciseName::CleanAndPress),
22405 "curl" => Some(SandbagExerciseName::Curl),
22406 "front_carry" => Some(SandbagExerciseName::FrontCarry),
22407 "front_squat" => Some(SandbagExerciseName::FrontSquat),
22408 "lunge" => Some(SandbagExerciseName::Lunge),
22409 "overhead_press" => Some(SandbagExerciseName::OverheadPress),
22410 "plank_pull_through" => Some(SandbagExerciseName::PlankPullThrough),
22411 "rotational_lunge" => Some(SandbagExerciseName::RotationalLunge),
22412 "row" => Some(SandbagExerciseName::Row),
22413 "russian_twist" => Some(SandbagExerciseName::RussianTwist),
22414 "shouldering" => Some(SandbagExerciseName::Shouldering),
22415 "shoveling" => Some(SandbagExerciseName::Shoveling),
22416 "side_lunge" => Some(SandbagExerciseName::SideLunge),
22417 "sprint" => Some(SandbagExerciseName::Sprint),
22418 "zercher_squat" => Some(SandbagExerciseName::ZercherSquat),
22419 _ => None,
22420 }
22421 }
22422}
22423
22424#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22425#[repr(u16)]
22426#[non_exhaustive]
22427pub enum SledExerciseName {
22428 BackwardDrag = 0,
22429 ChestPress = 1,
22430 ForwardDrag = 2,
22431 LowPush = 3,
22432 Push = 4,
22433 Row = 5,
22434}
22435
22436impl SledExerciseName {
22437 pub fn as_str(&self) -> &'static str {
22439 match self {
22440 SledExerciseName::BackwardDrag => "backward_drag",
22441 SledExerciseName::ChestPress => "chest_press",
22442 SledExerciseName::ForwardDrag => "forward_drag",
22443 SledExerciseName::LowPush => "low_push",
22444 SledExerciseName::Push => "push",
22445 SledExerciseName::Row => "row",
22446 }
22447 }
22448
22449 pub fn from_value(value: u16) -> Option<Self> {
22451 match value {
22452 0 => Some(SledExerciseName::BackwardDrag),
22453 1 => Some(SledExerciseName::ChestPress),
22454 2 => Some(SledExerciseName::ForwardDrag),
22455 3 => Some(SledExerciseName::LowPush),
22456 4 => Some(SledExerciseName::Push),
22457 5 => Some(SledExerciseName::Row),
22458 _ => None,
22459 }
22460 }
22461
22462 pub fn from_str(name: &str) -> Option<Self> {
22464 match name {
22465 "backward_drag" => Some(SledExerciseName::BackwardDrag),
22466 "chest_press" => Some(SledExerciseName::ChestPress),
22467 "forward_drag" => Some(SledExerciseName::ForwardDrag),
22468 "low_push" => Some(SledExerciseName::LowPush),
22469 "push" => Some(SledExerciseName::Push),
22470 "row" => Some(SledExerciseName::Row),
22471 _ => None,
22472 }
22473 }
22474}
22475
22476#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22477#[repr(u16)]
22478#[non_exhaustive]
22479pub enum SledgeHammerExerciseName {
22480 LateralSwing = 0,
22481 HammerSlam = 1,
22482}
22483
22484impl SledgeHammerExerciseName {
22485 pub fn as_str(&self) -> &'static str {
22487 match self {
22488 SledgeHammerExerciseName::LateralSwing => "lateral_swing",
22489 SledgeHammerExerciseName::HammerSlam => "hammer_slam",
22490 }
22491 }
22492
22493 pub fn from_value(value: u16) -> Option<Self> {
22495 match value {
22496 0 => Some(SledgeHammerExerciseName::LateralSwing),
22497 1 => Some(SledgeHammerExerciseName::HammerSlam),
22498 _ => None,
22499 }
22500 }
22501
22502 pub fn from_str(name: &str) -> Option<Self> {
22504 match name {
22505 "lateral_swing" => Some(SledgeHammerExerciseName::LateralSwing),
22506 "hammer_slam" => Some(SledgeHammerExerciseName::HammerSlam),
22507 _ => None,
22508 }
22509 }
22510}
22511
22512#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22513#[repr(u16)]
22514#[non_exhaustive]
22515pub enum StairStepperExerciseName {
22516 StairStepper = 0,
22517}
22518
22519impl StairStepperExerciseName {
22520 pub fn as_str(&self) -> &'static str {
22522 match self {
22523 StairStepperExerciseName::StairStepper => "stair_stepper",
22524 }
22525 }
22526
22527 pub fn from_value(value: u16) -> Option<Self> {
22529 match value {
22530 0 => Some(StairStepperExerciseName::StairStepper),
22531 _ => None,
22532 }
22533 }
22534
22535 pub fn from_str(name: &str) -> Option<Self> {
22537 match name {
22538 "stair_stepper" => Some(StairStepperExerciseName::StairStepper),
22539 _ => None,
22540 }
22541 }
22542}
22543
22544#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22545#[repr(u16)]
22546#[non_exhaustive]
22547pub enum SuspensionExerciseName {
22548 ChestFly = 0,
22549 ChestPress = 1,
22550 Crunch = 2,
22551 Curl = 3,
22552 Dip = 4,
22553 FacePull = 5,
22554 GluteBridge = 6,
22555 HamstringCurl = 7,
22556 HipDrop = 8,
22557 InvertedRow = 9,
22558 KneeDriveJump = 10,
22559 KneeToChest = 11,
22560 LatPullover = 12,
22561 Lunge = 13,
22562 MountainClimber = 14,
22563 Pendulum = 15,
22564 Pike = 16,
22565 Plank = 17,
22566 PowerPull = 18,
22567 PullUp = 19,
22568 PushUp = 20,
22569 ReverseMountainClimber = 21,
22570 ReversePlank = 22,
22571 Rollout = 23,
22572 Row = 24,
22573 SideLunge = 25,
22574 SidePlank = 26,
22575 SingleLegDeadlift = 27,
22576 SingleLegSquat = 28,
22577 SitUp = 29,
22578 Split = 30,
22579 Squat = 31,
22580 SquatJump = 32,
22581 TricepPress = 33,
22582 YFly = 34,
22583}
22584
22585impl SuspensionExerciseName {
22586 pub fn as_str(&self) -> &'static str {
22588 match self {
22589 SuspensionExerciseName::ChestFly => "chest_fly",
22590 SuspensionExerciseName::ChestPress => "chest_press",
22591 SuspensionExerciseName::Crunch => "crunch",
22592 SuspensionExerciseName::Curl => "curl",
22593 SuspensionExerciseName::Dip => "dip",
22594 SuspensionExerciseName::FacePull => "face_pull",
22595 SuspensionExerciseName::GluteBridge => "glute_bridge",
22596 SuspensionExerciseName::HamstringCurl => "hamstring_curl",
22597 SuspensionExerciseName::HipDrop => "hip_drop",
22598 SuspensionExerciseName::InvertedRow => "inverted_row",
22599 SuspensionExerciseName::KneeDriveJump => "knee_drive_jump",
22600 SuspensionExerciseName::KneeToChest => "knee_to_chest",
22601 SuspensionExerciseName::LatPullover => "lat_pullover",
22602 SuspensionExerciseName::Lunge => "lunge",
22603 SuspensionExerciseName::MountainClimber => "mountain_climber",
22604 SuspensionExerciseName::Pendulum => "pendulum",
22605 SuspensionExerciseName::Pike => "pike",
22606 SuspensionExerciseName::Plank => "plank",
22607 SuspensionExerciseName::PowerPull => "power_pull",
22608 SuspensionExerciseName::PullUp => "pull_up",
22609 SuspensionExerciseName::PushUp => "push_up",
22610 SuspensionExerciseName::ReverseMountainClimber => "reverse_mountain_climber",
22611 SuspensionExerciseName::ReversePlank => "reverse_plank",
22612 SuspensionExerciseName::Rollout => "rollout",
22613 SuspensionExerciseName::Row => "row",
22614 SuspensionExerciseName::SideLunge => "side_lunge",
22615 SuspensionExerciseName::SidePlank => "side_plank",
22616 SuspensionExerciseName::SingleLegDeadlift => "single_leg_deadlift",
22617 SuspensionExerciseName::SingleLegSquat => "single_leg_squat",
22618 SuspensionExerciseName::SitUp => "sit_up",
22619 SuspensionExerciseName::Split => "split",
22620 SuspensionExerciseName::Squat => "squat",
22621 SuspensionExerciseName::SquatJump => "squat_jump",
22622 SuspensionExerciseName::TricepPress => "tricep_press",
22623 SuspensionExerciseName::YFly => "y_fly",
22624 }
22625 }
22626
22627 pub fn from_value(value: u16) -> Option<Self> {
22629 match value {
22630 0 => Some(SuspensionExerciseName::ChestFly),
22631 1 => Some(SuspensionExerciseName::ChestPress),
22632 2 => Some(SuspensionExerciseName::Crunch),
22633 3 => Some(SuspensionExerciseName::Curl),
22634 4 => Some(SuspensionExerciseName::Dip),
22635 5 => Some(SuspensionExerciseName::FacePull),
22636 6 => Some(SuspensionExerciseName::GluteBridge),
22637 7 => Some(SuspensionExerciseName::HamstringCurl),
22638 8 => Some(SuspensionExerciseName::HipDrop),
22639 9 => Some(SuspensionExerciseName::InvertedRow),
22640 10 => Some(SuspensionExerciseName::KneeDriveJump),
22641 11 => Some(SuspensionExerciseName::KneeToChest),
22642 12 => Some(SuspensionExerciseName::LatPullover),
22643 13 => Some(SuspensionExerciseName::Lunge),
22644 14 => Some(SuspensionExerciseName::MountainClimber),
22645 15 => Some(SuspensionExerciseName::Pendulum),
22646 16 => Some(SuspensionExerciseName::Pike),
22647 17 => Some(SuspensionExerciseName::Plank),
22648 18 => Some(SuspensionExerciseName::PowerPull),
22649 19 => Some(SuspensionExerciseName::PullUp),
22650 20 => Some(SuspensionExerciseName::PushUp),
22651 21 => Some(SuspensionExerciseName::ReverseMountainClimber),
22652 22 => Some(SuspensionExerciseName::ReversePlank),
22653 23 => Some(SuspensionExerciseName::Rollout),
22654 24 => Some(SuspensionExerciseName::Row),
22655 25 => Some(SuspensionExerciseName::SideLunge),
22656 26 => Some(SuspensionExerciseName::SidePlank),
22657 27 => Some(SuspensionExerciseName::SingleLegDeadlift),
22658 28 => Some(SuspensionExerciseName::SingleLegSquat),
22659 29 => Some(SuspensionExerciseName::SitUp),
22660 30 => Some(SuspensionExerciseName::Split),
22661 31 => Some(SuspensionExerciseName::Squat),
22662 32 => Some(SuspensionExerciseName::SquatJump),
22663 33 => Some(SuspensionExerciseName::TricepPress),
22664 34 => Some(SuspensionExerciseName::YFly),
22665 _ => None,
22666 }
22667 }
22668
22669 pub fn from_str(name: &str) -> Option<Self> {
22671 match name {
22672 "chest_fly" => Some(SuspensionExerciseName::ChestFly),
22673 "chest_press" => Some(SuspensionExerciseName::ChestPress),
22674 "crunch" => Some(SuspensionExerciseName::Crunch),
22675 "curl" => Some(SuspensionExerciseName::Curl),
22676 "dip" => Some(SuspensionExerciseName::Dip),
22677 "face_pull" => Some(SuspensionExerciseName::FacePull),
22678 "glute_bridge" => Some(SuspensionExerciseName::GluteBridge),
22679 "hamstring_curl" => Some(SuspensionExerciseName::HamstringCurl),
22680 "hip_drop" => Some(SuspensionExerciseName::HipDrop),
22681 "inverted_row" => Some(SuspensionExerciseName::InvertedRow),
22682 "knee_drive_jump" => Some(SuspensionExerciseName::KneeDriveJump),
22683 "knee_to_chest" => Some(SuspensionExerciseName::KneeToChest),
22684 "lat_pullover" => Some(SuspensionExerciseName::LatPullover),
22685 "lunge" => Some(SuspensionExerciseName::Lunge),
22686 "mountain_climber" => Some(SuspensionExerciseName::MountainClimber),
22687 "pendulum" => Some(SuspensionExerciseName::Pendulum),
22688 "pike" => Some(SuspensionExerciseName::Pike),
22689 "plank" => Some(SuspensionExerciseName::Plank),
22690 "power_pull" => Some(SuspensionExerciseName::PowerPull),
22691 "pull_up" => Some(SuspensionExerciseName::PullUp),
22692 "push_up" => Some(SuspensionExerciseName::PushUp),
22693 "reverse_mountain_climber" => Some(SuspensionExerciseName::ReverseMountainClimber),
22694 "reverse_plank" => Some(SuspensionExerciseName::ReversePlank),
22695 "rollout" => Some(SuspensionExerciseName::Rollout),
22696 "row" => Some(SuspensionExerciseName::Row),
22697 "side_lunge" => Some(SuspensionExerciseName::SideLunge),
22698 "side_plank" => Some(SuspensionExerciseName::SidePlank),
22699 "single_leg_deadlift" => Some(SuspensionExerciseName::SingleLegDeadlift),
22700 "single_leg_squat" => Some(SuspensionExerciseName::SingleLegSquat),
22701 "sit_up" => Some(SuspensionExerciseName::SitUp),
22702 "split" => Some(SuspensionExerciseName::Split),
22703 "squat" => Some(SuspensionExerciseName::Squat),
22704 "squat_jump" => Some(SuspensionExerciseName::SquatJump),
22705 "tricep_press" => Some(SuspensionExerciseName::TricepPress),
22706 "y_fly" => Some(SuspensionExerciseName::YFly),
22707 _ => None,
22708 }
22709 }
22710}
22711
22712#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22713#[repr(u16)]
22714#[non_exhaustive]
22715pub enum TireExerciseName {
22716 Flip = 0,
22717}
22718
22719impl TireExerciseName {
22720 pub fn as_str(&self) -> &'static str {
22722 match self {
22723 TireExerciseName::Flip => "flip",
22724 }
22725 }
22726
22727 pub fn from_value(value: u16) -> Option<Self> {
22729 match value {
22730 0 => Some(TireExerciseName::Flip),
22731 _ => None,
22732 }
22733 }
22734
22735 pub fn from_str(name: &str) -> Option<Self> {
22737 match name {
22738 "flip" => Some(TireExerciseName::Flip),
22739 _ => None,
22740 }
22741 }
22742}
22743
22744#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22745#[repr(u16)]
22746#[non_exhaustive]
22747pub enum BikeOutdoorExerciseName {
22748 Bike = 0,
22749}
22750
22751impl BikeOutdoorExerciseName {
22752 pub fn as_str(&self) -> &'static str {
22754 match self {
22755 BikeOutdoorExerciseName::Bike => "bike",
22756 }
22757 }
22758
22759 pub fn from_value(value: u16) -> Option<Self> {
22761 match value {
22762 0 => Some(BikeOutdoorExerciseName::Bike),
22763 _ => None,
22764 }
22765 }
22766
22767 pub fn from_str(name: &str) -> Option<Self> {
22769 match name {
22770 "bike" => Some(BikeOutdoorExerciseName::Bike),
22771 _ => None,
22772 }
22773 }
22774}
22775
22776#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22777#[repr(u16)]
22778#[non_exhaustive]
22779pub enum RunIndoorExerciseName {
22780 IndoorTrackRun = 0,
22781 Treadmill = 1,
22782}
22783
22784impl RunIndoorExerciseName {
22785 pub fn as_str(&self) -> &'static str {
22787 match self {
22788 RunIndoorExerciseName::IndoorTrackRun => "indoor_track_run",
22789 RunIndoorExerciseName::Treadmill => "treadmill",
22790 }
22791 }
22792
22793 pub fn from_value(value: u16) -> Option<Self> {
22795 match value {
22796 0 => Some(RunIndoorExerciseName::IndoorTrackRun),
22797 1 => Some(RunIndoorExerciseName::Treadmill),
22798 _ => None,
22799 }
22800 }
22801
22802 pub fn from_str(name: &str) -> Option<Self> {
22804 match name {
22805 "indoor_track_run" => Some(RunIndoorExerciseName::IndoorTrackRun),
22806 "treadmill" => Some(RunIndoorExerciseName::Treadmill),
22807 _ => None,
22808 }
22809 }
22810}
22811
22812#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22813#[repr(u8)]
22814#[non_exhaustive]
22815pub enum WaterType {
22816 Fresh = 0,
22817 Salt = 1,
22818 En13319 = 2,
22819 Custom = 3,
22820}
22821
22822impl WaterType {
22823 pub fn as_str(&self) -> &'static str {
22825 match self {
22826 WaterType::Fresh => "fresh",
22827 WaterType::Salt => "salt",
22828 WaterType::En13319 => "en13319",
22829 WaterType::Custom => "custom",
22830 }
22831 }
22832
22833 pub fn from_value(value: u8) -> Option<Self> {
22835 match value {
22836 0 => Some(WaterType::Fresh),
22837 1 => Some(WaterType::Salt),
22838 2 => Some(WaterType::En13319),
22839 3 => Some(WaterType::Custom),
22840 _ => None,
22841 }
22842 }
22843
22844 pub fn from_str(name: &str) -> Option<Self> {
22846 match name {
22847 "fresh" => Some(WaterType::Fresh),
22848 "salt" => Some(WaterType::Salt),
22849 "en13319" => Some(WaterType::En13319),
22850 "custom" => Some(WaterType::Custom),
22851 _ => None,
22852 }
22853 }
22854}
22855
22856#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22857#[repr(u8)]
22858#[non_exhaustive]
22859pub enum TissueModelType {
22860 Zhl16c = 0,
22861}
22862
22863impl TissueModelType {
22864 pub fn as_str(&self) -> &'static str {
22866 match self {
22867 TissueModelType::Zhl16c => "zhl_16c",
22868 }
22869 }
22870
22871 pub fn from_value(value: u8) -> Option<Self> {
22873 match value {
22874 0 => Some(TissueModelType::Zhl16c),
22875 _ => None,
22876 }
22877 }
22878
22879 pub fn from_str(name: &str) -> Option<Self> {
22881 match name {
22882 "zhl_16c" => Some(TissueModelType::Zhl16c),
22883 _ => None,
22884 }
22885 }
22886}
22887
22888#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22889#[repr(u8)]
22890#[non_exhaustive]
22891pub enum DiveGasStatus {
22892 Disabled = 0,
22893 Enabled = 1,
22894 BackupOnly = 2,
22895}
22896
22897impl DiveGasStatus {
22898 pub fn as_str(&self) -> &'static str {
22900 match self {
22901 DiveGasStatus::Disabled => "disabled",
22902 DiveGasStatus::Enabled => "enabled",
22903 DiveGasStatus::BackupOnly => "backup_only",
22904 }
22905 }
22906
22907 pub fn from_value(value: u8) -> Option<Self> {
22909 match value {
22910 0 => Some(DiveGasStatus::Disabled),
22911 1 => Some(DiveGasStatus::Enabled),
22912 2 => Some(DiveGasStatus::BackupOnly),
22913 _ => None,
22914 }
22915 }
22916
22917 pub fn from_str(name: &str) -> Option<Self> {
22919 match name {
22920 "disabled" => Some(DiveGasStatus::Disabled),
22921 "enabled" => Some(DiveGasStatus::Enabled),
22922 "backup_only" => Some(DiveGasStatus::BackupOnly),
22923 _ => None,
22924 }
22925 }
22926}
22927
22928#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
22929#[repr(u8)]
22930#[non_exhaustive]
22931pub enum DiveAlert {
22932 NdlReached = 0,
22933 GasSwitchPrompted = 1,
22934 NearSurface = 2,
22935 ApproachingNdl = 3,
22936 Po2Warn = 4,
22937 Po2CritHigh = 5,
22938 Po2CritLow = 6,
22939 TimeAlert = 7,
22940 DepthAlert = 8,
22941 DecoCeilingBroken = 9,
22942 DecoComplete = 10,
22943 SafetyStopBroken = 11,
22944 SafetyStopComplete = 12,
22945 CnsWarning = 13,
22946 CnsCritical = 14,
22947 OtuWarning = 15,
22948 OtuCritical = 16,
22949 AscentCritical = 17,
22950 AlertDismissedByKey = 18,
22951 AlertDismissedByTimeout = 19,
22952 BatteryLow = 20,
22953 BatteryCritical = 21,
22954 SafetyStopStarted = 22,
22955 ApproachingFirstDecoStop = 23,
22956 SetpointSwitchAutoLow = 24,
22957 SetpointSwitchAutoHigh = 25,
22958 SetpointSwitchManualLow = 26,
22959 SetpointSwitchManualHigh = 27,
22960 AutoSetpointSwitchIgnored = 28,
22961 SwitchedToOpenCircuit = 29,
22962 SwitchedToClosedCircuit = 30,
22963 TankBatteryLow = 32,
22964 Po2CcrDilLow = 33,
22965 DecoStopCleared = 34,
22966 ApneaNeutralBuoyancy = 35,
22967 ApneaTargetDepth = 36,
22968 ApneaSurface = 37,
22969 ApneaHighSpeed = 38,
22970 ApneaLowSpeed = 39,
22971}
22972
22973impl DiveAlert {
22974 pub fn as_str(&self) -> &'static str {
22976 match self {
22977 DiveAlert::NdlReached => "ndl_reached",
22978 DiveAlert::GasSwitchPrompted => "gas_switch_prompted",
22979 DiveAlert::NearSurface => "near_surface",
22980 DiveAlert::ApproachingNdl => "approaching_ndl",
22981 DiveAlert::Po2Warn => "po2_warn",
22982 DiveAlert::Po2CritHigh => "po2_crit_high",
22983 DiveAlert::Po2CritLow => "po2_crit_low",
22984 DiveAlert::TimeAlert => "time_alert",
22985 DiveAlert::DepthAlert => "depth_alert",
22986 DiveAlert::DecoCeilingBroken => "deco_ceiling_broken",
22987 DiveAlert::DecoComplete => "deco_complete",
22988 DiveAlert::SafetyStopBroken => "safety_stop_broken",
22989 DiveAlert::SafetyStopComplete => "safety_stop_complete",
22990 DiveAlert::CnsWarning => "cns_warning",
22991 DiveAlert::CnsCritical => "cns_critical",
22992 DiveAlert::OtuWarning => "otu_warning",
22993 DiveAlert::OtuCritical => "otu_critical",
22994 DiveAlert::AscentCritical => "ascent_critical",
22995 DiveAlert::AlertDismissedByKey => "alert_dismissed_by_key",
22996 DiveAlert::AlertDismissedByTimeout => "alert_dismissed_by_timeout",
22997 DiveAlert::BatteryLow => "battery_low",
22998 DiveAlert::BatteryCritical => "battery_critical",
22999 DiveAlert::SafetyStopStarted => "safety_stop_started",
23000 DiveAlert::ApproachingFirstDecoStop => "approaching_first_deco_stop",
23001 DiveAlert::SetpointSwitchAutoLow => "setpoint_switch_auto_low",
23002 DiveAlert::SetpointSwitchAutoHigh => "setpoint_switch_auto_high",
23003 DiveAlert::SetpointSwitchManualLow => "setpoint_switch_manual_low",
23004 DiveAlert::SetpointSwitchManualHigh => "setpoint_switch_manual_high",
23005 DiveAlert::AutoSetpointSwitchIgnored => "auto_setpoint_switch_ignored",
23006 DiveAlert::SwitchedToOpenCircuit => "switched_to_open_circuit",
23007 DiveAlert::SwitchedToClosedCircuit => "switched_to_closed_circuit",
23008 DiveAlert::TankBatteryLow => "tank_battery_low",
23009 DiveAlert::Po2CcrDilLow => "po2_ccr_dil_low",
23010 DiveAlert::DecoStopCleared => "deco_stop_cleared",
23011 DiveAlert::ApneaNeutralBuoyancy => "apnea_neutral_buoyancy",
23012 DiveAlert::ApneaTargetDepth => "apnea_target_depth",
23013 DiveAlert::ApneaSurface => "apnea_surface",
23014 DiveAlert::ApneaHighSpeed => "apnea_high_speed",
23015 DiveAlert::ApneaLowSpeed => "apnea_low_speed",
23016 }
23017 }
23018
23019 pub fn from_value(value: u8) -> Option<Self> {
23021 match value {
23022 0 => Some(DiveAlert::NdlReached),
23023 1 => Some(DiveAlert::GasSwitchPrompted),
23024 2 => Some(DiveAlert::NearSurface),
23025 3 => Some(DiveAlert::ApproachingNdl),
23026 4 => Some(DiveAlert::Po2Warn),
23027 5 => Some(DiveAlert::Po2CritHigh),
23028 6 => Some(DiveAlert::Po2CritLow),
23029 7 => Some(DiveAlert::TimeAlert),
23030 8 => Some(DiveAlert::DepthAlert),
23031 9 => Some(DiveAlert::DecoCeilingBroken),
23032 10 => Some(DiveAlert::DecoComplete),
23033 11 => Some(DiveAlert::SafetyStopBroken),
23034 12 => Some(DiveAlert::SafetyStopComplete),
23035 13 => Some(DiveAlert::CnsWarning),
23036 14 => Some(DiveAlert::CnsCritical),
23037 15 => Some(DiveAlert::OtuWarning),
23038 16 => Some(DiveAlert::OtuCritical),
23039 17 => Some(DiveAlert::AscentCritical),
23040 18 => Some(DiveAlert::AlertDismissedByKey),
23041 19 => Some(DiveAlert::AlertDismissedByTimeout),
23042 20 => Some(DiveAlert::BatteryLow),
23043 21 => Some(DiveAlert::BatteryCritical),
23044 22 => Some(DiveAlert::SafetyStopStarted),
23045 23 => Some(DiveAlert::ApproachingFirstDecoStop),
23046 24 => Some(DiveAlert::SetpointSwitchAutoLow),
23047 25 => Some(DiveAlert::SetpointSwitchAutoHigh),
23048 26 => Some(DiveAlert::SetpointSwitchManualLow),
23049 27 => Some(DiveAlert::SetpointSwitchManualHigh),
23050 28 => Some(DiveAlert::AutoSetpointSwitchIgnored),
23051 29 => Some(DiveAlert::SwitchedToOpenCircuit),
23052 30 => Some(DiveAlert::SwitchedToClosedCircuit),
23053 32 => Some(DiveAlert::TankBatteryLow),
23054 33 => Some(DiveAlert::Po2CcrDilLow),
23055 34 => Some(DiveAlert::DecoStopCleared),
23056 35 => Some(DiveAlert::ApneaNeutralBuoyancy),
23057 36 => Some(DiveAlert::ApneaTargetDepth),
23058 37 => Some(DiveAlert::ApneaSurface),
23059 38 => Some(DiveAlert::ApneaHighSpeed),
23060 39 => Some(DiveAlert::ApneaLowSpeed),
23061 _ => None,
23062 }
23063 }
23064
23065 pub fn from_str(name: &str) -> Option<Self> {
23067 match name {
23068 "ndl_reached" => Some(DiveAlert::NdlReached),
23069 "gas_switch_prompted" => Some(DiveAlert::GasSwitchPrompted),
23070 "near_surface" => Some(DiveAlert::NearSurface),
23071 "approaching_ndl" => Some(DiveAlert::ApproachingNdl),
23072 "po2_warn" => Some(DiveAlert::Po2Warn),
23073 "po2_crit_high" => Some(DiveAlert::Po2CritHigh),
23074 "po2_crit_low" => Some(DiveAlert::Po2CritLow),
23075 "time_alert" => Some(DiveAlert::TimeAlert),
23076 "depth_alert" => Some(DiveAlert::DepthAlert),
23077 "deco_ceiling_broken" => Some(DiveAlert::DecoCeilingBroken),
23078 "deco_complete" => Some(DiveAlert::DecoComplete),
23079 "safety_stop_broken" => Some(DiveAlert::SafetyStopBroken),
23080 "safety_stop_complete" => Some(DiveAlert::SafetyStopComplete),
23081 "cns_warning" => Some(DiveAlert::CnsWarning),
23082 "cns_critical" => Some(DiveAlert::CnsCritical),
23083 "otu_warning" => Some(DiveAlert::OtuWarning),
23084 "otu_critical" => Some(DiveAlert::OtuCritical),
23085 "ascent_critical" => Some(DiveAlert::AscentCritical),
23086 "alert_dismissed_by_key" => Some(DiveAlert::AlertDismissedByKey),
23087 "alert_dismissed_by_timeout" => Some(DiveAlert::AlertDismissedByTimeout),
23088 "battery_low" => Some(DiveAlert::BatteryLow),
23089 "battery_critical" => Some(DiveAlert::BatteryCritical),
23090 "safety_stop_started" => Some(DiveAlert::SafetyStopStarted),
23091 "approaching_first_deco_stop" => Some(DiveAlert::ApproachingFirstDecoStop),
23092 "setpoint_switch_auto_low" => Some(DiveAlert::SetpointSwitchAutoLow),
23093 "setpoint_switch_auto_high" => Some(DiveAlert::SetpointSwitchAutoHigh),
23094 "setpoint_switch_manual_low" => Some(DiveAlert::SetpointSwitchManualLow),
23095 "setpoint_switch_manual_high" => Some(DiveAlert::SetpointSwitchManualHigh),
23096 "auto_setpoint_switch_ignored" => Some(DiveAlert::AutoSetpointSwitchIgnored),
23097 "switched_to_open_circuit" => Some(DiveAlert::SwitchedToOpenCircuit),
23098 "switched_to_closed_circuit" => Some(DiveAlert::SwitchedToClosedCircuit),
23099 "tank_battery_low" => Some(DiveAlert::TankBatteryLow),
23100 "po2_ccr_dil_low" => Some(DiveAlert::Po2CcrDilLow),
23101 "deco_stop_cleared" => Some(DiveAlert::DecoStopCleared),
23102 "apnea_neutral_buoyancy" => Some(DiveAlert::ApneaNeutralBuoyancy),
23103 "apnea_target_depth" => Some(DiveAlert::ApneaTargetDepth),
23104 "apnea_surface" => Some(DiveAlert::ApneaSurface),
23105 "apnea_high_speed" => Some(DiveAlert::ApneaHighSpeed),
23106 "apnea_low_speed" => Some(DiveAlert::ApneaLowSpeed),
23107 _ => None,
23108 }
23109 }
23110}
23111
23112#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23113#[repr(u8)]
23114#[non_exhaustive]
23115pub enum DiveAlarmType {
23116 Depth = 0,
23117 Time = 1,
23118 Speed = 2,
23119}
23120
23121impl DiveAlarmType {
23122 pub fn as_str(&self) -> &'static str {
23124 match self {
23125 DiveAlarmType::Depth => "depth",
23126 DiveAlarmType::Time => "time",
23127 DiveAlarmType::Speed => "speed",
23128 }
23129 }
23130
23131 pub fn from_value(value: u8) -> Option<Self> {
23133 match value {
23134 0 => Some(DiveAlarmType::Depth),
23135 1 => Some(DiveAlarmType::Time),
23136 2 => Some(DiveAlarmType::Speed),
23137 _ => None,
23138 }
23139 }
23140
23141 pub fn from_str(name: &str) -> Option<Self> {
23143 match name {
23144 "depth" => Some(DiveAlarmType::Depth),
23145 "time" => Some(DiveAlarmType::Time),
23146 "speed" => Some(DiveAlarmType::Speed),
23147 _ => None,
23148 }
23149 }
23150}
23151
23152#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23153#[repr(u8)]
23154#[non_exhaustive]
23155pub enum DiveBacklightMode {
23156 AtDepth = 0,
23157 AlwaysOn = 1,
23158}
23159
23160impl DiveBacklightMode {
23161 pub fn as_str(&self) -> &'static str {
23163 match self {
23164 DiveBacklightMode::AtDepth => "at_depth",
23165 DiveBacklightMode::AlwaysOn => "always_on",
23166 }
23167 }
23168
23169 pub fn from_value(value: u8) -> Option<Self> {
23171 match value {
23172 0 => Some(DiveBacklightMode::AtDepth),
23173 1 => Some(DiveBacklightMode::AlwaysOn),
23174 _ => None,
23175 }
23176 }
23177
23178 pub fn from_str(name: &str) -> Option<Self> {
23180 match name {
23181 "at_depth" => Some(DiveBacklightMode::AtDepth),
23182 "always_on" => Some(DiveBacklightMode::AlwaysOn),
23183 _ => None,
23184 }
23185 }
23186}
23187
23188#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23189#[repr(u8)]
23190#[non_exhaustive]
23191pub enum SleepLevel {
23192 Unmeasurable = 0,
23193 Awake = 1,
23194 Light = 2,
23195 Deep = 3,
23196 Rem = 4,
23197}
23198
23199impl SleepLevel {
23200 pub fn as_str(&self) -> &'static str {
23202 match self {
23203 SleepLevel::Unmeasurable => "unmeasurable",
23204 SleepLevel::Awake => "awake",
23205 SleepLevel::Light => "light",
23206 SleepLevel::Deep => "deep",
23207 SleepLevel::Rem => "rem",
23208 }
23209 }
23210
23211 pub fn from_value(value: u8) -> Option<Self> {
23213 match value {
23214 0 => Some(SleepLevel::Unmeasurable),
23215 1 => Some(SleepLevel::Awake),
23216 2 => Some(SleepLevel::Light),
23217 3 => Some(SleepLevel::Deep),
23218 4 => Some(SleepLevel::Rem),
23219 _ => None,
23220 }
23221 }
23222
23223 pub fn from_str(name: &str) -> Option<Self> {
23225 match name {
23226 "unmeasurable" => Some(SleepLevel::Unmeasurable),
23227 "awake" => Some(SleepLevel::Awake),
23228 "light" => Some(SleepLevel::Light),
23229 "deep" => Some(SleepLevel::Deep),
23230 "rem" => Some(SleepLevel::Rem),
23231 _ => None,
23232 }
23233 }
23234}
23235
23236#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23237#[repr(u8)]
23238#[non_exhaustive]
23239pub enum Spo2MeasurementType {
23240 OffWrist = 0,
23241 SpotCheck = 1,
23242 ContinuousCheck = 2,
23243 Periodic = 3,
23244}
23245
23246impl Spo2MeasurementType {
23247 pub fn as_str(&self) -> &'static str {
23249 match self {
23250 Spo2MeasurementType::OffWrist => "off_wrist",
23251 Spo2MeasurementType::SpotCheck => "spot_check",
23252 Spo2MeasurementType::ContinuousCheck => "continuous_check",
23253 Spo2MeasurementType::Periodic => "periodic",
23254 }
23255 }
23256
23257 pub fn from_value(value: u8) -> Option<Self> {
23259 match value {
23260 0 => Some(Spo2MeasurementType::OffWrist),
23261 1 => Some(Spo2MeasurementType::SpotCheck),
23262 2 => Some(Spo2MeasurementType::ContinuousCheck),
23263 3 => Some(Spo2MeasurementType::Periodic),
23264 _ => None,
23265 }
23266 }
23267
23268 pub fn from_str(name: &str) -> Option<Self> {
23270 match name {
23271 "off_wrist" => Some(Spo2MeasurementType::OffWrist),
23272 "spot_check" => Some(Spo2MeasurementType::SpotCheck),
23273 "continuous_check" => Some(Spo2MeasurementType::ContinuousCheck),
23274 "periodic" => Some(Spo2MeasurementType::Periodic),
23275 _ => None,
23276 }
23277 }
23278}
23279
23280#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23281#[repr(u8)]
23282#[non_exhaustive]
23283pub enum CcrSetpointSwitchMode {
23284 Manual = 0,
23285 Automatic = 1,
23286}
23287
23288impl CcrSetpointSwitchMode {
23289 pub fn as_str(&self) -> &'static str {
23291 match self {
23292 CcrSetpointSwitchMode::Manual => "manual",
23293 CcrSetpointSwitchMode::Automatic => "automatic",
23294 }
23295 }
23296
23297 pub fn from_value(value: u8) -> Option<Self> {
23299 match value {
23300 0 => Some(CcrSetpointSwitchMode::Manual),
23301 1 => Some(CcrSetpointSwitchMode::Automatic),
23302 _ => None,
23303 }
23304 }
23305
23306 pub fn from_str(name: &str) -> Option<Self> {
23308 match name {
23309 "manual" => Some(CcrSetpointSwitchMode::Manual),
23310 "automatic" => Some(CcrSetpointSwitchMode::Automatic),
23311 _ => None,
23312 }
23313 }
23314}
23315
23316#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23317#[repr(u8)]
23318#[non_exhaustive]
23319pub enum DiveGasMode {
23320 OpenCircuit = 0,
23321 ClosedCircuitDiluent = 1,
23322}
23323
23324impl DiveGasMode {
23325 pub fn as_str(&self) -> &'static str {
23327 match self {
23328 DiveGasMode::OpenCircuit => "open_circuit",
23329 DiveGasMode::ClosedCircuitDiluent => "closed_circuit_diluent",
23330 }
23331 }
23332
23333 pub fn from_value(value: u8) -> Option<Self> {
23335 match value {
23336 0 => Some(DiveGasMode::OpenCircuit),
23337 1 => Some(DiveGasMode::ClosedCircuitDiluent),
23338 _ => None,
23339 }
23340 }
23341
23342 pub fn from_str(name: &str) -> Option<Self> {
23344 match name {
23345 "open_circuit" => Some(DiveGasMode::OpenCircuit),
23346 "closed_circuit_diluent" => Some(DiveGasMode::ClosedCircuitDiluent),
23347 _ => None,
23348 }
23349 }
23350}
23351
23352#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23353#[repr(u8)]
23354#[non_exhaustive]
23355pub enum ProjectileType {
23356 Arrow = 0,
23357 RifleCartridge = 1,
23358 PistolCartridge = 2,
23359 Shotshell = 3,
23360 AirRiflePellet = 4,
23361 Other = 5,
23362}
23363
23364impl ProjectileType {
23365 pub fn as_str(&self) -> &'static str {
23367 match self {
23368 ProjectileType::Arrow => "arrow",
23369 ProjectileType::RifleCartridge => "rifle_cartridge",
23370 ProjectileType::PistolCartridge => "pistol_cartridge",
23371 ProjectileType::Shotshell => "shotshell",
23372 ProjectileType::AirRiflePellet => "air_rifle_pellet",
23373 ProjectileType::Other => "other",
23374 }
23375 }
23376
23377 pub fn from_value(value: u8) -> Option<Self> {
23379 match value {
23380 0 => Some(ProjectileType::Arrow),
23381 1 => Some(ProjectileType::RifleCartridge),
23382 2 => Some(ProjectileType::PistolCartridge),
23383 3 => Some(ProjectileType::Shotshell),
23384 4 => Some(ProjectileType::AirRiflePellet),
23385 5 => Some(ProjectileType::Other),
23386 _ => None,
23387 }
23388 }
23389
23390 pub fn from_str(name: &str) -> Option<Self> {
23392 match name {
23393 "arrow" => Some(ProjectileType::Arrow),
23394 "rifle_cartridge" => Some(ProjectileType::RifleCartridge),
23395 "pistol_cartridge" => Some(ProjectileType::PistolCartridge),
23396 "shotshell" => Some(ProjectileType::Shotshell),
23397 "air_rifle_pellet" => Some(ProjectileType::AirRiflePellet),
23398 "other" => Some(ProjectileType::Other),
23399 _ => None,
23400 }
23401 }
23402}
23403
23404#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23405#[repr(u16)]
23406#[non_exhaustive]
23407pub enum FaveroProduct {
23408 AssiomaUno = 10,
23409 AssiomaDuo = 12,
23410}
23411
23412impl FaveroProduct {
23413 pub fn as_str(&self) -> &'static str {
23415 match self {
23416 FaveroProduct::AssiomaUno => "assioma_uno",
23417 FaveroProduct::AssiomaDuo => "assioma_duo",
23418 }
23419 }
23420
23421 pub fn from_value(value: u16) -> Option<Self> {
23423 match value {
23424 10 => Some(FaveroProduct::AssiomaUno),
23425 12 => Some(FaveroProduct::AssiomaDuo),
23426 _ => None,
23427 }
23428 }
23429
23430 pub fn from_str(name: &str) -> Option<Self> {
23432 match name {
23433 "assioma_uno" => Some(FaveroProduct::AssiomaUno),
23434 "assioma_duo" => Some(FaveroProduct::AssiomaDuo),
23435 _ => None,
23436 }
23437 }
23438}
23439
23440#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23441#[repr(u8)]
23442#[non_exhaustive]
23443pub enum SplitType {
23444 AscentSplit = 1,
23445 DescentSplit = 2,
23446 IntervalActive = 3,
23447 IntervalRest = 4,
23448 IntervalWarmup = 5,
23449 IntervalCooldown = 6,
23450 IntervalRecovery = 7,
23451 IntervalOther = 8,
23452 ClimbActive = 9,
23453 ClimbRest = 10,
23454 SurfActive = 11,
23455 RunActive = 12,
23456 RunRest = 13,
23457 WorkoutRound = 14,
23458 RwdRun = 17,
23459 RwdWalk = 18,
23460 WindsurfActive = 21,
23461 RwdStand = 22,
23462 Transition = 23,
23463 SkiLiftSplit = 28,
23464 SkiRunSplit = 29,
23465}
23466
23467impl SplitType {
23468 pub fn as_str(&self) -> &'static str {
23470 match self {
23471 SplitType::AscentSplit => "ascent_split",
23472 SplitType::DescentSplit => "descent_split",
23473 SplitType::IntervalActive => "interval_active",
23474 SplitType::IntervalRest => "interval_rest",
23475 SplitType::IntervalWarmup => "interval_warmup",
23476 SplitType::IntervalCooldown => "interval_cooldown",
23477 SplitType::IntervalRecovery => "interval_recovery",
23478 SplitType::IntervalOther => "interval_other",
23479 SplitType::ClimbActive => "climb_active",
23480 SplitType::ClimbRest => "climb_rest",
23481 SplitType::SurfActive => "surf_active",
23482 SplitType::RunActive => "run_active",
23483 SplitType::RunRest => "run_rest",
23484 SplitType::WorkoutRound => "workout_round",
23485 SplitType::RwdRun => "rwd_run",
23486 SplitType::RwdWalk => "rwd_walk",
23487 SplitType::WindsurfActive => "windsurf_active",
23488 SplitType::RwdStand => "rwd_stand",
23489 SplitType::Transition => "transition",
23490 SplitType::SkiLiftSplit => "ski_lift_split",
23491 SplitType::SkiRunSplit => "ski_run_split",
23492 }
23493 }
23494
23495 pub fn from_value(value: u8) -> Option<Self> {
23497 match value {
23498 1 => Some(SplitType::AscentSplit),
23499 2 => Some(SplitType::DescentSplit),
23500 3 => Some(SplitType::IntervalActive),
23501 4 => Some(SplitType::IntervalRest),
23502 5 => Some(SplitType::IntervalWarmup),
23503 6 => Some(SplitType::IntervalCooldown),
23504 7 => Some(SplitType::IntervalRecovery),
23505 8 => Some(SplitType::IntervalOther),
23506 9 => Some(SplitType::ClimbActive),
23507 10 => Some(SplitType::ClimbRest),
23508 11 => Some(SplitType::SurfActive),
23509 12 => Some(SplitType::RunActive),
23510 13 => Some(SplitType::RunRest),
23511 14 => Some(SplitType::WorkoutRound),
23512 17 => Some(SplitType::RwdRun),
23513 18 => Some(SplitType::RwdWalk),
23514 21 => Some(SplitType::WindsurfActive),
23515 22 => Some(SplitType::RwdStand),
23516 23 => Some(SplitType::Transition),
23517 28 => Some(SplitType::SkiLiftSplit),
23518 29 => Some(SplitType::SkiRunSplit),
23519 _ => None,
23520 }
23521 }
23522
23523 pub fn from_str(name: &str) -> Option<Self> {
23525 match name {
23526 "ascent_split" => Some(SplitType::AscentSplit),
23527 "descent_split" => Some(SplitType::DescentSplit),
23528 "interval_active" => Some(SplitType::IntervalActive),
23529 "interval_rest" => Some(SplitType::IntervalRest),
23530 "interval_warmup" => Some(SplitType::IntervalWarmup),
23531 "interval_cooldown" => Some(SplitType::IntervalCooldown),
23532 "interval_recovery" => Some(SplitType::IntervalRecovery),
23533 "interval_other" => Some(SplitType::IntervalOther),
23534 "climb_active" => Some(SplitType::ClimbActive),
23535 "climb_rest" => Some(SplitType::ClimbRest),
23536 "surf_active" => Some(SplitType::SurfActive),
23537 "run_active" => Some(SplitType::RunActive),
23538 "run_rest" => Some(SplitType::RunRest),
23539 "workout_round" => Some(SplitType::WorkoutRound),
23540 "rwd_run" => Some(SplitType::RwdRun),
23541 "rwd_walk" => Some(SplitType::RwdWalk),
23542 "windsurf_active" => Some(SplitType::WindsurfActive),
23543 "rwd_stand" => Some(SplitType::RwdStand),
23544 "transition" => Some(SplitType::Transition),
23545 "ski_lift_split" => Some(SplitType::SkiLiftSplit),
23546 "ski_run_split" => Some(SplitType::SkiRunSplit),
23547 _ => None,
23548 }
23549 }
23550}
23551
23552#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23553#[repr(u8)]
23554#[non_exhaustive]
23555pub enum ClimbProEvent {
23556 Approach = 0,
23557 Start = 1,
23558 Complete = 2,
23559}
23560
23561impl ClimbProEvent {
23562 pub fn as_str(&self) -> &'static str {
23564 match self {
23565 ClimbProEvent::Approach => "approach",
23566 ClimbProEvent::Start => "start",
23567 ClimbProEvent::Complete => "complete",
23568 }
23569 }
23570
23571 pub fn from_value(value: u8) -> Option<Self> {
23573 match value {
23574 0 => Some(ClimbProEvent::Approach),
23575 1 => Some(ClimbProEvent::Start),
23576 2 => Some(ClimbProEvent::Complete),
23577 _ => None,
23578 }
23579 }
23580
23581 pub fn from_str(name: &str) -> Option<Self> {
23583 match name {
23584 "approach" => Some(ClimbProEvent::Approach),
23585 "start" => Some(ClimbProEvent::Start),
23586 "complete" => Some(ClimbProEvent::Complete),
23587 _ => None,
23588 }
23589 }
23590}
23591
23592#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23593#[repr(u8)]
23594#[non_exhaustive]
23595pub enum GasConsumptionRateType {
23596 PressureSac = 0,
23597 VolumeSac = 1,
23598 Rmv = 2,
23599}
23600
23601impl GasConsumptionRateType {
23602 pub fn as_str(&self) -> &'static str {
23604 match self {
23605 GasConsumptionRateType::PressureSac => "pressure_sac",
23606 GasConsumptionRateType::VolumeSac => "volume_sac",
23607 GasConsumptionRateType::Rmv => "rmv",
23608 }
23609 }
23610
23611 pub fn from_value(value: u8) -> Option<Self> {
23613 match value {
23614 0 => Some(GasConsumptionRateType::PressureSac),
23615 1 => Some(GasConsumptionRateType::VolumeSac),
23616 2 => Some(GasConsumptionRateType::Rmv),
23617 _ => None,
23618 }
23619 }
23620
23621 pub fn from_str(name: &str) -> Option<Self> {
23623 match name {
23624 "pressure_sac" => Some(GasConsumptionRateType::PressureSac),
23625 "volume_sac" => Some(GasConsumptionRateType::VolumeSac),
23626 "rmv" => Some(GasConsumptionRateType::Rmv),
23627 _ => None,
23628 }
23629 }
23630}
23631
23632#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23633#[repr(u8)]
23634#[non_exhaustive]
23635pub enum TapSensitivity {
23636 High = 0,
23637 Medium = 1,
23638 Low = 2,
23639}
23640
23641impl TapSensitivity {
23642 pub fn as_str(&self) -> &'static str {
23644 match self {
23645 TapSensitivity::High => "high",
23646 TapSensitivity::Medium => "medium",
23647 TapSensitivity::Low => "low",
23648 }
23649 }
23650
23651 pub fn from_value(value: u8) -> Option<Self> {
23653 match value {
23654 0 => Some(TapSensitivity::High),
23655 1 => Some(TapSensitivity::Medium),
23656 2 => Some(TapSensitivity::Low),
23657 _ => None,
23658 }
23659 }
23660
23661 pub fn from_str(name: &str) -> Option<Self> {
23663 match name {
23664 "high" => Some(TapSensitivity::High),
23665 "medium" => Some(TapSensitivity::Medium),
23666 "low" => Some(TapSensitivity::Low),
23667 _ => None,
23668 }
23669 }
23670}
23671
23672#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23673#[repr(u8)]
23674#[non_exhaustive]
23675pub enum RadarThreatLevelType {
23676 ThreatUnknown = 0,
23677 ThreatNone = 1,
23678 ThreatApproaching = 2,
23679 ThreatApproachingFast = 3,
23680}
23681
23682impl RadarThreatLevelType {
23683 pub fn as_str(&self) -> &'static str {
23685 match self {
23686 RadarThreatLevelType::ThreatUnknown => "threat_unknown",
23687 RadarThreatLevelType::ThreatNone => "threat_none",
23688 RadarThreatLevelType::ThreatApproaching => "threat_approaching",
23689 RadarThreatLevelType::ThreatApproachingFast => "threat_approaching_fast",
23690 }
23691 }
23692
23693 pub fn from_value(value: u8) -> Option<Self> {
23695 match value {
23696 0 => Some(RadarThreatLevelType::ThreatUnknown),
23697 1 => Some(RadarThreatLevelType::ThreatNone),
23698 2 => Some(RadarThreatLevelType::ThreatApproaching),
23699 3 => Some(RadarThreatLevelType::ThreatApproachingFast),
23700 _ => None,
23701 }
23702 }
23703
23704 pub fn from_str(name: &str) -> Option<Self> {
23706 match name {
23707 "threat_unknown" => Some(RadarThreatLevelType::ThreatUnknown),
23708 "threat_none" => Some(RadarThreatLevelType::ThreatNone),
23709 "threat_approaching" => Some(RadarThreatLevelType::ThreatApproaching),
23710 "threat_approaching_fast" => Some(RadarThreatLevelType::ThreatApproachingFast),
23711 _ => None,
23712 }
23713 }
23714}
23715
23716#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23717#[repr(u8)]
23718#[non_exhaustive]
23719pub enum SleepDisruptionSeverity {
23720 None = 0,
23721 Low = 1,
23722 Medium = 2,
23723 High = 3,
23724}
23725
23726impl SleepDisruptionSeverity {
23727 pub fn as_str(&self) -> &'static str {
23729 match self {
23730 SleepDisruptionSeverity::None => "none",
23731 SleepDisruptionSeverity::Low => "low",
23732 SleepDisruptionSeverity::Medium => "medium",
23733 SleepDisruptionSeverity::High => "high",
23734 }
23735 }
23736
23737 pub fn from_value(value: u8) -> Option<Self> {
23739 match value {
23740 0 => Some(SleepDisruptionSeverity::None),
23741 1 => Some(SleepDisruptionSeverity::Low),
23742 2 => Some(SleepDisruptionSeverity::Medium),
23743 3 => Some(SleepDisruptionSeverity::High),
23744 _ => None,
23745 }
23746 }
23747
23748 pub fn from_str(name: &str) -> Option<Self> {
23750 match name {
23751 "none" => Some(SleepDisruptionSeverity::None),
23752 "low" => Some(SleepDisruptionSeverity::Low),
23753 "medium" => Some(SleepDisruptionSeverity::Medium),
23754 "high" => Some(SleepDisruptionSeverity::High),
23755 _ => None,
23756 }
23757 }
23758}
23759
23760#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23761#[repr(u8)]
23762#[non_exhaustive]
23763pub enum NapPeriodFeedback {
23764 None = 0,
23765 MultipleNapsDuringDay = 1,
23766 JetlagIdealTimingIdealDuration = 2,
23767 JetlagIdealTimingLongDuration = 3,
23768 JetlagLateTimingIdealDuration = 4,
23769 JetlagLateTimingLongDuration = 5,
23770 IdealTimingIdealDurationLowNeed = 6,
23771 IdealTimingIdealDurationHighNeed = 7,
23772 IdealTimingLongDurationLowNeed = 8,
23773 IdealTimingLongDurationHighNeed = 9,
23774 LateTimingIdealDurationLowNeed = 10,
23775 LateTimingIdealDurationHighNeed = 11,
23776 LateTimingLongDurationLowNeed = 12,
23777 LateTimingLongDurationHighNeed = 13,
23778 IdealDurationLowNeed = 14,
23779 IdealDurationHighNeed = 15,
23780 LongDurationLowNeed = 16,
23781 LongDurationHighNeed = 17,
23782}
23783
23784impl NapPeriodFeedback {
23785 pub fn as_str(&self) -> &'static str {
23787 match self {
23788 NapPeriodFeedback::None => "none",
23789 NapPeriodFeedback::MultipleNapsDuringDay => "multiple_naps_during_day",
23790 NapPeriodFeedback::JetlagIdealTimingIdealDuration => {
23791 "jetlag_ideal_timing_ideal_duration"
23792 }
23793 NapPeriodFeedback::JetlagIdealTimingLongDuration => "jetlag_ideal_timing_long_duration",
23794 NapPeriodFeedback::JetlagLateTimingIdealDuration => "jetlag_late_timing_ideal_duration",
23795 NapPeriodFeedback::JetlagLateTimingLongDuration => "jetlag_late_timing_long_duration",
23796 NapPeriodFeedback::IdealTimingIdealDurationLowNeed => {
23797 "ideal_timing_ideal_duration_low_need"
23798 }
23799 NapPeriodFeedback::IdealTimingIdealDurationHighNeed => {
23800 "ideal_timing_ideal_duration_high_need"
23801 }
23802 NapPeriodFeedback::IdealTimingLongDurationLowNeed => {
23803 "ideal_timing_long_duration_low_need"
23804 }
23805 NapPeriodFeedback::IdealTimingLongDurationHighNeed => {
23806 "ideal_timing_long_duration_high_need"
23807 }
23808 NapPeriodFeedback::LateTimingIdealDurationLowNeed => {
23809 "late_timing_ideal_duration_low_need"
23810 }
23811 NapPeriodFeedback::LateTimingIdealDurationHighNeed => {
23812 "late_timing_ideal_duration_high_need"
23813 }
23814 NapPeriodFeedback::LateTimingLongDurationLowNeed => {
23815 "late_timing_long_duration_low_need"
23816 }
23817 NapPeriodFeedback::LateTimingLongDurationHighNeed => {
23818 "late_timing_long_duration_high_need"
23819 }
23820 NapPeriodFeedback::IdealDurationLowNeed => "ideal_duration_low_need",
23821 NapPeriodFeedback::IdealDurationHighNeed => "ideal_duration_high_need",
23822 NapPeriodFeedback::LongDurationLowNeed => "long_duration_low_need",
23823 NapPeriodFeedback::LongDurationHighNeed => "long_duration_high_need",
23824 }
23825 }
23826
23827 pub fn from_value(value: u8) -> Option<Self> {
23829 match value {
23830 0 => Some(NapPeriodFeedback::None),
23831 1 => Some(NapPeriodFeedback::MultipleNapsDuringDay),
23832 2 => Some(NapPeriodFeedback::JetlagIdealTimingIdealDuration),
23833 3 => Some(NapPeriodFeedback::JetlagIdealTimingLongDuration),
23834 4 => Some(NapPeriodFeedback::JetlagLateTimingIdealDuration),
23835 5 => Some(NapPeriodFeedback::JetlagLateTimingLongDuration),
23836 6 => Some(NapPeriodFeedback::IdealTimingIdealDurationLowNeed),
23837 7 => Some(NapPeriodFeedback::IdealTimingIdealDurationHighNeed),
23838 8 => Some(NapPeriodFeedback::IdealTimingLongDurationLowNeed),
23839 9 => Some(NapPeriodFeedback::IdealTimingLongDurationHighNeed),
23840 10 => Some(NapPeriodFeedback::LateTimingIdealDurationLowNeed),
23841 11 => Some(NapPeriodFeedback::LateTimingIdealDurationHighNeed),
23842 12 => Some(NapPeriodFeedback::LateTimingLongDurationLowNeed),
23843 13 => Some(NapPeriodFeedback::LateTimingLongDurationHighNeed),
23844 14 => Some(NapPeriodFeedback::IdealDurationLowNeed),
23845 15 => Some(NapPeriodFeedback::IdealDurationHighNeed),
23846 16 => Some(NapPeriodFeedback::LongDurationLowNeed),
23847 17 => Some(NapPeriodFeedback::LongDurationHighNeed),
23848 _ => None,
23849 }
23850 }
23851
23852 pub fn from_str(name: &str) -> Option<Self> {
23854 match name {
23855 "none" => Some(NapPeriodFeedback::None),
23856 "multiple_naps_during_day" => Some(NapPeriodFeedback::MultipleNapsDuringDay),
23857 "jetlag_ideal_timing_ideal_duration" => {
23858 Some(NapPeriodFeedback::JetlagIdealTimingIdealDuration)
23859 }
23860 "jetlag_ideal_timing_long_duration" => {
23861 Some(NapPeriodFeedback::JetlagIdealTimingLongDuration)
23862 }
23863 "jetlag_late_timing_ideal_duration" => {
23864 Some(NapPeriodFeedback::JetlagLateTimingIdealDuration)
23865 }
23866 "jetlag_late_timing_long_duration" => {
23867 Some(NapPeriodFeedback::JetlagLateTimingLongDuration)
23868 }
23869 "ideal_timing_ideal_duration_low_need" => {
23870 Some(NapPeriodFeedback::IdealTimingIdealDurationLowNeed)
23871 }
23872 "ideal_timing_ideal_duration_high_need" => {
23873 Some(NapPeriodFeedback::IdealTimingIdealDurationHighNeed)
23874 }
23875 "ideal_timing_long_duration_low_need" => {
23876 Some(NapPeriodFeedback::IdealTimingLongDurationLowNeed)
23877 }
23878 "ideal_timing_long_duration_high_need" => {
23879 Some(NapPeriodFeedback::IdealTimingLongDurationHighNeed)
23880 }
23881 "late_timing_ideal_duration_low_need" => {
23882 Some(NapPeriodFeedback::LateTimingIdealDurationLowNeed)
23883 }
23884 "late_timing_ideal_duration_high_need" => {
23885 Some(NapPeriodFeedback::LateTimingIdealDurationHighNeed)
23886 }
23887 "late_timing_long_duration_low_need" => {
23888 Some(NapPeriodFeedback::LateTimingLongDurationLowNeed)
23889 }
23890 "late_timing_long_duration_high_need" => {
23891 Some(NapPeriodFeedback::LateTimingLongDurationHighNeed)
23892 }
23893 "ideal_duration_low_need" => Some(NapPeriodFeedback::IdealDurationLowNeed),
23894 "ideal_duration_high_need" => Some(NapPeriodFeedback::IdealDurationHighNeed),
23895 "long_duration_low_need" => Some(NapPeriodFeedback::LongDurationLowNeed),
23896 "long_duration_high_need" => Some(NapPeriodFeedback::LongDurationHighNeed),
23897 _ => None,
23898 }
23899 }
23900}
23901
23902#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23903#[repr(u8)]
23904#[non_exhaustive]
23905pub enum NapSource {
23906 Automatic = 0,
23907 ManualDevice = 1,
23908 ManualGc = 2,
23909}
23910
23911impl NapSource {
23912 pub fn as_str(&self) -> &'static str {
23914 match self {
23915 NapSource::Automatic => "automatic",
23916 NapSource::ManualDevice => "manual_device",
23917 NapSource::ManualGc => "manual_gc",
23918 }
23919 }
23920
23921 pub fn from_value(value: u8) -> Option<Self> {
23923 match value {
23924 0 => Some(NapSource::Automatic),
23925 1 => Some(NapSource::ManualDevice),
23926 2 => Some(NapSource::ManualGc),
23927 _ => None,
23928 }
23929 }
23930
23931 pub fn from_str(name: &str) -> Option<Self> {
23933 match name {
23934 "automatic" => Some(NapSource::Automatic),
23935 "manual_device" => Some(NapSource::ManualDevice),
23936 "manual_gc" => Some(NapSource::ManualGc),
23937 _ => None,
23938 }
23939 }
23940}
23941
23942#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23943#[repr(u8)]
23944#[non_exhaustive]
23945pub enum MaxMetSpeedSource {
23946 OnboardGps = 0,
23947 ConnectedGps = 1,
23948 Cadence = 2,
23949}
23950
23951impl MaxMetSpeedSource {
23952 pub fn as_str(&self) -> &'static str {
23954 match self {
23955 MaxMetSpeedSource::OnboardGps => "onboard_gps",
23956 MaxMetSpeedSource::ConnectedGps => "connected_gps",
23957 MaxMetSpeedSource::Cadence => "cadence",
23958 }
23959 }
23960
23961 pub fn from_value(value: u8) -> Option<Self> {
23963 match value {
23964 0 => Some(MaxMetSpeedSource::OnboardGps),
23965 1 => Some(MaxMetSpeedSource::ConnectedGps),
23966 2 => Some(MaxMetSpeedSource::Cadence),
23967 _ => None,
23968 }
23969 }
23970
23971 pub fn from_str(name: &str) -> Option<Self> {
23973 match name {
23974 "onboard_gps" => Some(MaxMetSpeedSource::OnboardGps),
23975 "connected_gps" => Some(MaxMetSpeedSource::ConnectedGps),
23976 "cadence" => Some(MaxMetSpeedSource::Cadence),
23977 _ => None,
23978 }
23979 }
23980}
23981
23982#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
23983#[repr(u8)]
23984#[non_exhaustive]
23985pub enum MaxMetHeartRateSource {
23986 Whr = 0,
23987 Hrm = 1,
23988}
23989
23990impl MaxMetHeartRateSource {
23991 pub fn as_str(&self) -> &'static str {
23993 match self {
23994 MaxMetHeartRateSource::Whr => "whr",
23995 MaxMetHeartRateSource::Hrm => "hrm",
23996 }
23997 }
23998
23999 pub fn from_value(value: u8) -> Option<Self> {
24001 match value {
24002 0 => Some(MaxMetHeartRateSource::Whr),
24003 1 => Some(MaxMetHeartRateSource::Hrm),
24004 _ => None,
24005 }
24006 }
24007
24008 pub fn from_str(name: &str) -> Option<Self> {
24010 match name {
24011 "whr" => Some(MaxMetHeartRateSource::Whr),
24012 "hrm" => Some(MaxMetHeartRateSource::Hrm),
24013 _ => None,
24014 }
24015 }
24016}
24017
24018#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
24019#[repr(u8)]
24020#[non_exhaustive]
24021pub enum HrvStatus {
24022 None = 0,
24023 Poor = 1,
24024 Low = 2,
24025 Unbalanced = 3,
24026 Balanced = 4,
24027}
24028
24029impl HrvStatus {
24030 pub fn as_str(&self) -> &'static str {
24032 match self {
24033 HrvStatus::None => "none",
24034 HrvStatus::Poor => "poor",
24035 HrvStatus::Low => "low",
24036 HrvStatus::Unbalanced => "unbalanced",
24037 HrvStatus::Balanced => "balanced",
24038 }
24039 }
24040
24041 pub fn from_value(value: u8) -> Option<Self> {
24043 match value {
24044 0 => Some(HrvStatus::None),
24045 1 => Some(HrvStatus::Poor),
24046 2 => Some(HrvStatus::Low),
24047 3 => Some(HrvStatus::Unbalanced),
24048 4 => Some(HrvStatus::Balanced),
24049 _ => None,
24050 }
24051 }
24052
24053 pub fn from_str(name: &str) -> Option<Self> {
24055 match name {
24056 "none" => Some(HrvStatus::None),
24057 "poor" => Some(HrvStatus::Poor),
24058 "low" => Some(HrvStatus::Low),
24059 "unbalanced" => Some(HrvStatus::Unbalanced),
24060 "balanced" => Some(HrvStatus::Balanced),
24061 _ => None,
24062 }
24063 }
24064}
24065
24066#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
24067#[repr(u8)]
24068#[non_exhaustive]
24069pub enum NoFlyTimeMode {
24070 Standard = 0,
24071 Flat24Hours = 1,
24072}
24073
24074impl NoFlyTimeMode {
24075 pub fn as_str(&self) -> &'static str {
24077 match self {
24078 NoFlyTimeMode::Standard => "standard",
24079 NoFlyTimeMode::Flat24Hours => "flat_24_hours",
24080 }
24081 }
24082
24083 pub fn from_value(value: u8) -> Option<Self> {
24085 match value {
24086 0 => Some(NoFlyTimeMode::Standard),
24087 1 => Some(NoFlyTimeMode::Flat24Hours),
24088 _ => None,
24089 }
24090 }
24091
24092 pub fn from_str(name: &str) -> Option<Self> {
24094 match name {
24095 "standard" => Some(NoFlyTimeMode::Standard),
24096 "flat_24_hours" => Some(NoFlyTimeMode::Flat24Hours),
24097 _ => None,
24098 }
24099 }
24100}
24101
24102pub fn enum_str_by_value(type_name: &str, value: u64) -> Option<&'static str> {
24105 match type_name {
24106 "mesg_num" => MesgNum::from_value(value as u16).map(|v| v.as_str()),
24107 "file" => File::from_value(value as u8).map(|v| v.as_str()),
24108 "checksum" => Checksum::from_value(value as u8).map(|v| v.as_str()),
24109 "file_flags" => FileFlags::from_value(value as u8).map(|v| v.as_str()),
24110 "mesg_count" => MesgCount::from_value(value as u8).map(|v| v.as_str()),
24111 "date_time" => DateTime::from_value(value as u32).map(|v| v.as_str()),
24112 "local_date_time" => LocalDateTime::from_value(value as u32).map(|v| v.as_str()),
24113 "message_index" => MessageIndex::from_value(value as u16).map(|v| v.as_str()),
24114 "device_index" => DeviceIndex::from_value(value as u8).map(|v| v.as_str()),
24115 "gender" => Gender::from_value(value as u8).map(|v| v.as_str()),
24116 "language" => Language::from_value(value as u8).map(|v| v.as_str()),
24117 "language_bits_0" => LanguageBits0::from_value(value as u8).map(|v| v.as_str()),
24118 "language_bits_1" => LanguageBits1::from_value(value as u8).map(|v| v.as_str()),
24119 "language_bits_2" => LanguageBits2::from_value(value as u8).map(|v| v.as_str()),
24120 "language_bits_3" => LanguageBits3::from_value(value as u8).map(|v| v.as_str()),
24121 "language_bits_4" => LanguageBits4::from_value(value as u8).map(|v| v.as_str()),
24122 "time_zone" => TimeZone::from_value(value as u8).map(|v| v.as_str()),
24123 "display_measure" => DisplayMeasure::from_value(value as u8).map(|v| v.as_str()),
24124 "display_heart" => DisplayHeart::from_value(value as u8).map(|v| v.as_str()),
24125 "display_power" => DisplayPower::from_value(value as u8).map(|v| v.as_str()),
24126 "display_position" => DisplayPosition::from_value(value as u8).map(|v| v.as_str()),
24127 "switch" => Switch::from_value(value as u8).map(|v| v.as_str()),
24128 "sport" => Sport::from_value(value as u8).map(|v| v.as_str()),
24129 "sport_bits_0" => SportBits0::from_value(value as u8).map(|v| v.as_str()),
24130 "sport_bits_1" => SportBits1::from_value(value as u8).map(|v| v.as_str()),
24131 "sport_bits_2" => SportBits2::from_value(value as u8).map(|v| v.as_str()),
24132 "sport_bits_3" => SportBits3::from_value(value as u8).map(|v| v.as_str()),
24133 "sport_bits_4" => SportBits4::from_value(value as u8).map(|v| v.as_str()),
24134 "sport_bits_5" => SportBits5::from_value(value as u8).map(|v| v.as_str()),
24135 "sport_bits_6" => SportBits6::from_value(value as u8).map(|v| v.as_str()),
24136 "sub_sport" => SubSport::from_value(value as u8).map(|v| v.as_str()),
24137 "sport_event" => SportEvent::from_value(value as u8).map(|v| v.as_str()),
24138 "activity" => Activity::from_value(value as u8).map(|v| v.as_str()),
24139 "intensity" => Intensity::from_value(value as u8).map(|v| v.as_str()),
24140 "session_trigger" => SessionTrigger::from_value(value as u8).map(|v| v.as_str()),
24141 "autolap_trigger" => AutolapTrigger::from_value(value as u8).map(|v| v.as_str()),
24142 "lap_trigger" => LapTrigger::from_value(value as u8).map(|v| v.as_str()),
24143 "time_mode" => TimeMode::from_value(value as u8).map(|v| v.as_str()),
24144 "backlight_mode" => BacklightMode::from_value(value as u8).map(|v| v.as_str()),
24145 "date_mode" => DateMode::from_value(value as u8).map(|v| v.as_str()),
24146 "backlight_timeout" => BacklightTimeout::from_value(value as u8).map(|v| v.as_str()),
24147 "event" => Event::from_value(value as u8).map(|v| v.as_str()),
24148 "event_type" => EventType::from_value(value as u8).map(|v| v.as_str()),
24149 "timer_trigger" => TimerTrigger::from_value(value as u8).map(|v| v.as_str()),
24150 "fitness_equipment_state" => {
24151 FitnessEquipmentState::from_value(value as u8).map(|v| v.as_str())
24152 }
24153 "tone" => Tone::from_value(value as u8).map(|v| v.as_str()),
24154 "autoscroll" => Autoscroll::from_value(value as u8).map(|v| v.as_str()),
24155 "activity_class" => ActivityClass::from_value(value as u8).map(|v| v.as_str()),
24156 "hr_zone_calc" => HrZoneCalc::from_value(value as u8).map(|v| v.as_str()),
24157 "pwr_zone_calc" => PwrZoneCalc::from_value(value as u8).map(|v| v.as_str()),
24158 "wkt_step_duration" => WktStepDuration::from_value(value as u8).map(|v| v.as_str()),
24159 "wkt_step_target" => WktStepTarget::from_value(value as u8).map(|v| v.as_str()),
24160 "goal" => Goal::from_value(value as u8).map(|v| v.as_str()),
24161 "goal_recurrence" => GoalRecurrence::from_value(value as u8).map(|v| v.as_str()),
24162 "goal_source" => GoalSource::from_value(value as u8).map(|v| v.as_str()),
24163 "schedule" => Schedule::from_value(value as u8).map(|v| v.as_str()),
24164 "course_point" => CoursePoint::from_value(value as u8).map(|v| v.as_str()),
24165 "manufacturer" => Manufacturer::from_value(value as u16).map(|v| v.as_str()),
24166 "garmin_product" => GarminProduct::from_value(value as u16).map(|v| v.as_str()),
24167 "antplus_device_type" => AntplusDeviceType::from_value(value as u8).map(|v| v.as_str()),
24168 "ant_network" => AntNetwork::from_value(value as u8).map(|v| v.as_str()),
24169 "workout_capabilities" => WorkoutCapabilities::from_value(value as u32).map(|v| v.as_str()),
24170 "battery_status" => BatteryStatus::from_value(value as u8).map(|v| v.as_str()),
24171 "hr_type" => HrType::from_value(value as u8).map(|v| v.as_str()),
24172 "course_capabilities" => CourseCapabilities::from_value(value as u32).map(|v| v.as_str()),
24173 "weight" => Weight::from_value(value as u16).map(|v| v.as_str()),
24174 "workout_hr" => WorkoutHr::from_value(value as u32).map(|v| v.as_str()),
24175 "workout_power" => WorkoutPower::from_value(value as u32).map(|v| v.as_str()),
24176 "bp_status" => BpStatus::from_value(value as u8).map(|v| v.as_str()),
24177 "user_local_id" => UserLocalId::from_value(value as u16).map(|v| v.as_str()),
24178 "swim_stroke" => SwimStroke::from_value(value as u8).map(|v| v.as_str()),
24179 "activity_type" => ActivityType::from_value(value as u8).map(|v| v.as_str()),
24180 "activity_subtype" => ActivitySubtype::from_value(value as u8).map(|v| v.as_str()),
24181 "activity_level" => ActivityLevel::from_value(value as u8).map(|v| v.as_str()),
24182 "side" => Side::from_value(value as u8).map(|v| v.as_str()),
24183 "left_right_balance" => LeftRightBalance::from_value(value as u8).map(|v| v.as_str()),
24184 "left_right_balance_100" => {
24185 LeftRightBalance100::from_value(value as u16).map(|v| v.as_str())
24186 }
24187 "length_type" => LengthType::from_value(value as u8).map(|v| v.as_str()),
24188 "day_of_week" => DayOfWeek::from_value(value as u8).map(|v| v.as_str()),
24189 "connectivity_capabilities" => {
24190 ConnectivityCapabilities::from_value(value as u32).map(|v| v.as_str())
24191 }
24192 "weather_report" => WeatherReport::from_value(value as u8).map(|v| v.as_str()),
24193 "weather_status" => WeatherStatus::from_value(value as u8).map(|v| v.as_str()),
24194 "weather_severity" => WeatherSeverity::from_value(value as u8).map(|v| v.as_str()),
24195 "weather_severe_type" => WeatherSevereType::from_value(value as u8).map(|v| v.as_str()),
24196 "stroke_type" => StrokeType::from_value(value as u8).map(|v| v.as_str()),
24197 "body_location" => BodyLocation::from_value(value as u8).map(|v| v.as_str()),
24198 "segment_lap_status" => SegmentLapStatus::from_value(value as u8).map(|v| v.as_str()),
24199 "segment_leaderboard_type" => {
24200 SegmentLeaderboardType::from_value(value as u8).map(|v| v.as_str())
24201 }
24202 "segment_delete_status" => SegmentDeleteStatus::from_value(value as u8).map(|v| v.as_str()),
24203 "segment_selection_type" => {
24204 SegmentSelectionType::from_value(value as u8).map(|v| v.as_str())
24205 }
24206 "source_type" => SourceType::from_value(value as u8).map(|v| v.as_str()),
24207 "local_device_type" => LocalDeviceType::from_value(value as u8).map(|v| v.as_str()),
24208 "ble_device_type" => BleDeviceType::from_value(value as u8).map(|v| v.as_str()),
24209 "ant_channel_id" => AntChannelId::from_value(value as u32).map(|v| v.as_str()),
24210 "display_orientation" => DisplayOrientation::from_value(value as u8).map(|v| v.as_str()),
24211 "workout_equipment" => WorkoutEquipment::from_value(value as u8).map(|v| v.as_str()),
24212 "watchface_mode" => WatchfaceMode::from_value(value as u8).map(|v| v.as_str()),
24213 "digital_watchface_layout" => {
24214 DigitalWatchfaceLayout::from_value(value as u8).map(|v| v.as_str())
24215 }
24216 "analog_watchface_layout" => {
24217 AnalogWatchfaceLayout::from_value(value as u8).map(|v| v.as_str())
24218 }
24219 "rider_position_type" => RiderPositionType::from_value(value as u8).map(|v| v.as_str()),
24220 "power_phase_type" => PowerPhaseType::from_value(value as u8).map(|v| v.as_str()),
24221 "camera_event_type" => CameraEventType::from_value(value as u8).map(|v| v.as_str()),
24222 "sensor_type" => SensorType::from_value(value as u8).map(|v| v.as_str()),
24223 "bike_light_network_config_type" => {
24224 BikeLightNetworkConfigType::from_value(value as u8).map(|v| v.as_str())
24225 }
24226 "comm_timeout_type" => CommTimeoutType::from_value(value as u16).map(|v| v.as_str()),
24227 "camera_orientation_type" => {
24228 CameraOrientationType::from_value(value as u8).map(|v| v.as_str())
24229 }
24230 "attitude_stage" => AttitudeStage::from_value(value as u8).map(|v| v.as_str()),
24231 "attitude_validity" => AttitudeValidity::from_value(value as u16).map(|v| v.as_str()),
24232 "auto_sync_frequency" => AutoSyncFrequency::from_value(value as u8).map(|v| v.as_str()),
24233 "exd_layout" => ExdLayout::from_value(value as u8).map(|v| v.as_str()),
24234 "exd_display_type" => ExdDisplayType::from_value(value as u8).map(|v| v.as_str()),
24235 "exd_data_units" => ExdDataUnits::from_value(value as u8).map(|v| v.as_str()),
24236 "exd_qualifiers" => ExdQualifiers::from_value(value as u8).map(|v| v.as_str()),
24237 "exd_descriptors" => ExdDescriptors::from_value(value as u8).map(|v| v.as_str()),
24238 "auto_activity_detect" => AutoActivityDetect::from_value(value as u32).map(|v| v.as_str()),
24239 "supported_exd_screen_layouts" => {
24240 SupportedExdScreenLayouts::from_value(value as u32).map(|v| v.as_str())
24241 }
24242 "fit_base_type" => FitBaseType::from_value(value as u8).map(|v| v.as_str()),
24243 "turn_type" => TurnType::from_value(value as u8).map(|v| v.as_str()),
24244 "bike_light_beam_angle_mode" => {
24245 BikeLightBeamAngleMode::from_value(value as u8).map(|v| v.as_str())
24246 }
24247 "fit_base_unit" => FitBaseUnit::from_value(value as u16).map(|v| v.as_str()),
24248 "set_type" => SetType::from_value(value as u8).map(|v| v.as_str()),
24249 "max_met_category" => MaxMetCategory::from_value(value as u8).map(|v| v.as_str()),
24250 "exercise_category" => ExerciseCategory::from_value(value as u16).map(|v| v.as_str()),
24251 "bench_press_exercise_name" => {
24252 BenchPressExerciseName::from_value(value as u16).map(|v| v.as_str())
24253 }
24254 "calf_raise_exercise_name" => {
24255 CalfRaiseExerciseName::from_value(value as u16).map(|v| v.as_str())
24256 }
24257 "cardio_exercise_name" => CardioExerciseName::from_value(value as u16).map(|v| v.as_str()),
24258 "carry_exercise_name" => CarryExerciseName::from_value(value as u16).map(|v| v.as_str()),
24259 "chop_exercise_name" => ChopExerciseName::from_value(value as u16).map(|v| v.as_str()),
24260 "core_exercise_name" => CoreExerciseName::from_value(value as u16).map(|v| v.as_str()),
24261 "crunch_exercise_name" => CrunchExerciseName::from_value(value as u16).map(|v| v.as_str()),
24262 "curl_exercise_name" => CurlExerciseName::from_value(value as u16).map(|v| v.as_str()),
24263 "deadlift_exercise_name" => {
24264 DeadliftExerciseName::from_value(value as u16).map(|v| v.as_str())
24265 }
24266 "flye_exercise_name" => FlyeExerciseName::from_value(value as u16).map(|v| v.as_str()),
24267 "hip_raise_exercise_name" => {
24268 HipRaiseExerciseName::from_value(value as u16).map(|v| v.as_str())
24269 }
24270 "hip_stability_exercise_name" => {
24271 HipStabilityExerciseName::from_value(value as u16).map(|v| v.as_str())
24272 }
24273 "hip_swing_exercise_name" => {
24274 HipSwingExerciseName::from_value(value as u16).map(|v| v.as_str())
24275 }
24276 "hyperextension_exercise_name" => {
24277 HyperextensionExerciseName::from_value(value as u16).map(|v| v.as_str())
24278 }
24279 "lateral_raise_exercise_name" => {
24280 LateralRaiseExerciseName::from_value(value as u16).map(|v| v.as_str())
24281 }
24282 "leg_curl_exercise_name" => {
24283 LegCurlExerciseName::from_value(value as u16).map(|v| v.as_str())
24284 }
24285 "leg_raise_exercise_name" => {
24286 LegRaiseExerciseName::from_value(value as u16).map(|v| v.as_str())
24287 }
24288 "lunge_exercise_name" => LungeExerciseName::from_value(value as u16).map(|v| v.as_str()),
24289 "olympic_lift_exercise_name" => {
24290 OlympicLiftExerciseName::from_value(value as u16).map(|v| v.as_str())
24291 }
24292 "plank_exercise_name" => PlankExerciseName::from_value(value as u16).map(|v| v.as_str()),
24293 "plyo_exercise_name" => PlyoExerciseName::from_value(value as u16).map(|v| v.as_str()),
24294 "pull_up_exercise_name" => PullUpExerciseName::from_value(value as u16).map(|v| v.as_str()),
24295 "push_up_exercise_name" => PushUpExerciseName::from_value(value as u16).map(|v| v.as_str()),
24296 "row_exercise_name" => RowExerciseName::from_value(value as u16).map(|v| v.as_str()),
24297 "shoulder_press_exercise_name" => {
24298 ShoulderPressExerciseName::from_value(value as u16).map(|v| v.as_str())
24299 }
24300 "shoulder_stability_exercise_name" => {
24301 ShoulderStabilityExerciseName::from_value(value as u16).map(|v| v.as_str())
24302 }
24303 "shrug_exercise_name" => ShrugExerciseName::from_value(value as u16).map(|v| v.as_str()),
24304 "sit_up_exercise_name" => SitUpExerciseName::from_value(value as u16).map(|v| v.as_str()),
24305 "squat_exercise_name" => SquatExerciseName::from_value(value as u16).map(|v| v.as_str()),
24306 "total_body_exercise_name" => {
24307 TotalBodyExerciseName::from_value(value as u16).map(|v| v.as_str())
24308 }
24309 "move_exercise_name" => MoveExerciseName::from_value(value as u16).map(|v| v.as_str()),
24310 "pose_exercise_name" => PoseExerciseName::from_value(value as u16).map(|v| v.as_str()),
24311 "triceps_extension_exercise_name" => {
24312 TricepsExtensionExerciseName::from_value(value as u16).map(|v| v.as_str())
24313 }
24314 "warm_up_exercise_name" => WarmUpExerciseName::from_value(value as u16).map(|v| v.as_str()),
24315 "run_exercise_name" => RunExerciseName::from_value(value as u16).map(|v| v.as_str()),
24316 "bike_exercise_name" => BikeExerciseName::from_value(value as u16).map(|v| v.as_str()),
24317 "banded_exercises_exercise_name" => {
24318 BandedExercisesExerciseName::from_value(value as u16).map(|v| v.as_str())
24319 }
24320 "battle_rope_exercise_name" => {
24321 BattleRopeExerciseName::from_value(value as u16).map(|v| v.as_str())
24322 }
24323 "elliptical_exercise_name" => {
24324 EllipticalExerciseName::from_value(value as u16).map(|v| v.as_str())
24325 }
24326 "floor_climb_exercise_name" => {
24327 FloorClimbExerciseName::from_value(value as u16).map(|v| v.as_str())
24328 }
24329 "indoor_bike_exercise_name" => {
24330 IndoorBikeExerciseName::from_value(value as u16).map(|v| v.as_str())
24331 }
24332 "indoor_row_exercise_name" => {
24333 IndoorRowExerciseName::from_value(value as u16).map(|v| v.as_str())
24334 }
24335 "ladder_exercise_name" => LadderExerciseName::from_value(value as u16).map(|v| v.as_str()),
24336 "sandbag_exercise_name" => {
24337 SandbagExerciseName::from_value(value as u16).map(|v| v.as_str())
24338 }
24339 "sled_exercise_name" => SledExerciseName::from_value(value as u16).map(|v| v.as_str()),
24340 "sledge_hammer_exercise_name" => {
24341 SledgeHammerExerciseName::from_value(value as u16).map(|v| v.as_str())
24342 }
24343 "stair_stepper_exercise_name" => {
24344 StairStepperExerciseName::from_value(value as u16).map(|v| v.as_str())
24345 }
24346 "suspension_exercise_name" => {
24347 SuspensionExerciseName::from_value(value as u16).map(|v| v.as_str())
24348 }
24349 "tire_exercise_name" => TireExerciseName::from_value(value as u16).map(|v| v.as_str()),
24350 "bike_outdoor_exercise_name" => {
24351 BikeOutdoorExerciseName::from_value(value as u16).map(|v| v.as_str())
24352 }
24353 "run_indoor_exercise_name" => {
24354 RunIndoorExerciseName::from_value(value as u16).map(|v| v.as_str())
24355 }
24356 "water_type" => WaterType::from_value(value as u8).map(|v| v.as_str()),
24357 "tissue_model_type" => TissueModelType::from_value(value as u8).map(|v| v.as_str()),
24358 "dive_gas_status" => DiveGasStatus::from_value(value as u8).map(|v| v.as_str()),
24359 "dive_alert" => DiveAlert::from_value(value as u8).map(|v| v.as_str()),
24360 "dive_alarm_type" => DiveAlarmType::from_value(value as u8).map(|v| v.as_str()),
24361 "dive_backlight_mode" => DiveBacklightMode::from_value(value as u8).map(|v| v.as_str()),
24362 "sleep_level" => SleepLevel::from_value(value as u8).map(|v| v.as_str()),
24363 "spo2_measurement_type" => Spo2MeasurementType::from_value(value as u8).map(|v| v.as_str()),
24364 "ccr_setpoint_switch_mode" => {
24365 CcrSetpointSwitchMode::from_value(value as u8).map(|v| v.as_str())
24366 }
24367 "dive_gas_mode" => DiveGasMode::from_value(value as u8).map(|v| v.as_str()),
24368 "projectile_type" => ProjectileType::from_value(value as u8).map(|v| v.as_str()),
24369 "favero_product" => FaveroProduct::from_value(value as u16).map(|v| v.as_str()),
24370 "split_type" => SplitType::from_value(value as u8).map(|v| v.as_str()),
24371 "climb_pro_event" => ClimbProEvent::from_value(value as u8).map(|v| v.as_str()),
24372 "gas_consumption_rate_type" => {
24373 GasConsumptionRateType::from_value(value as u8).map(|v| v.as_str())
24374 }
24375 "tap_sensitivity" => TapSensitivity::from_value(value as u8).map(|v| v.as_str()),
24376 "radar_threat_level_type" => {
24377 RadarThreatLevelType::from_value(value as u8).map(|v| v.as_str())
24378 }
24379 "sleep_disruption_severity" => {
24380 SleepDisruptionSeverity::from_value(value as u8).map(|v| v.as_str())
24381 }
24382 "nap_period_feedback" => NapPeriodFeedback::from_value(value as u8).map(|v| v.as_str()),
24383 "nap_source" => NapSource::from_value(value as u8).map(|v| v.as_str()),
24384 "max_met_speed_source" => MaxMetSpeedSource::from_value(value as u8).map(|v| v.as_str()),
24385 "max_met_heart_rate_source" => {
24386 MaxMetHeartRateSource::from_value(value as u8).map(|v| v.as_str())
24387 }
24388 "hrv_status" => HrvStatus::from_value(value as u8).map(|v| v.as_str()),
24389 "no_fly_time_mode" => NoFlyTimeMode::from_value(value as u8).map(|v| v.as_str()),
24390 _ => None,
24391 }
24392}
24393
24394pub fn enum_value_by_str(type_name: &str, name: &str) -> Option<u64> {
24397 match type_name {
24398 "mesg_num" => MesgNum::from_name(name).map(|v| v as u64),
24399 "file" => File::from_str(name).map(|v| v as u64),
24400 "checksum" => Checksum::from_str(name).map(|v| v as u64),
24401 "file_flags" => FileFlags::from_str(name).map(|v| v as u64),
24402 "mesg_count" => MesgCount::from_str(name).map(|v| v as u64),
24403 "date_time" => DateTime::from_str(name).map(|v| v as u64),
24404 "local_date_time" => LocalDateTime::from_str(name).map(|v| v as u64),
24405 "message_index" => MessageIndex::from_str(name).map(|v| v as u64),
24406 "device_index" => DeviceIndex::from_str(name).map(|v| v as u64),
24407 "gender" => Gender::from_str(name).map(|v| v as u64),
24408 "language" => Language::from_str(name).map(|v| v as u64),
24409 "language_bits_0" => LanguageBits0::from_str(name).map(|v| v as u64),
24410 "language_bits_1" => LanguageBits1::from_str(name).map(|v| v as u64),
24411 "language_bits_2" => LanguageBits2::from_str(name).map(|v| v as u64),
24412 "language_bits_3" => LanguageBits3::from_str(name).map(|v| v as u64),
24413 "language_bits_4" => LanguageBits4::from_str(name).map(|v| v as u64),
24414 "time_zone" => TimeZone::from_str(name).map(|v| v as u64),
24415 "display_measure" => DisplayMeasure::from_str(name).map(|v| v as u64),
24416 "display_heart" => DisplayHeart::from_str(name).map(|v| v as u64),
24417 "display_power" => DisplayPower::from_str(name).map(|v| v as u64),
24418 "display_position" => DisplayPosition::from_str(name).map(|v| v as u64),
24419 "switch" => Switch::from_str(name).map(|v| v as u64),
24420 "sport" => Sport::from_str(name).map(|v| v as u64),
24421 "sport_bits_0" => SportBits0::from_str(name).map(|v| v as u64),
24422 "sport_bits_1" => SportBits1::from_str(name).map(|v| v as u64),
24423 "sport_bits_2" => SportBits2::from_str(name).map(|v| v as u64),
24424 "sport_bits_3" => SportBits3::from_str(name).map(|v| v as u64),
24425 "sport_bits_4" => SportBits4::from_str(name).map(|v| v as u64),
24426 "sport_bits_5" => SportBits5::from_str(name).map(|v| v as u64),
24427 "sport_bits_6" => SportBits6::from_str(name).map(|v| v as u64),
24428 "sub_sport" => SubSport::from_str(name).map(|v| v as u64),
24429 "sport_event" => SportEvent::from_str(name).map(|v| v as u64),
24430 "activity" => Activity::from_str(name).map(|v| v as u64),
24431 "intensity" => Intensity::from_str(name).map(|v| v as u64),
24432 "session_trigger" => SessionTrigger::from_str(name).map(|v| v as u64),
24433 "autolap_trigger" => AutolapTrigger::from_str(name).map(|v| v as u64),
24434 "lap_trigger" => LapTrigger::from_str(name).map(|v| v as u64),
24435 "time_mode" => TimeMode::from_str(name).map(|v| v as u64),
24436 "backlight_mode" => BacklightMode::from_str(name).map(|v| v as u64),
24437 "date_mode" => DateMode::from_str(name).map(|v| v as u64),
24438 "backlight_timeout" => BacklightTimeout::from_str(name).map(|v| v as u64),
24439 "event" => Event::from_str(name).map(|v| v as u64),
24440 "event_type" => EventType::from_str(name).map(|v| v as u64),
24441 "timer_trigger" => TimerTrigger::from_str(name).map(|v| v as u64),
24442 "fitness_equipment_state" => FitnessEquipmentState::from_str(name).map(|v| v as u64),
24443 "tone" => Tone::from_str(name).map(|v| v as u64),
24444 "autoscroll" => Autoscroll::from_str(name).map(|v| v as u64),
24445 "activity_class" => ActivityClass::from_str(name).map(|v| v as u64),
24446 "hr_zone_calc" => HrZoneCalc::from_str(name).map(|v| v as u64),
24447 "pwr_zone_calc" => PwrZoneCalc::from_str(name).map(|v| v as u64),
24448 "wkt_step_duration" => WktStepDuration::from_str(name).map(|v| v as u64),
24449 "wkt_step_target" => WktStepTarget::from_str(name).map(|v| v as u64),
24450 "goal" => Goal::from_str(name).map(|v| v as u64),
24451 "goal_recurrence" => GoalRecurrence::from_str(name).map(|v| v as u64),
24452 "goal_source" => GoalSource::from_str(name).map(|v| v as u64),
24453 "schedule" => Schedule::from_str(name).map(|v| v as u64),
24454 "course_point" => CoursePoint::from_str(name).map(|v| v as u64),
24455 "manufacturer" => Manufacturer::from_str(name).map(|v| v as u64),
24456 "garmin_product" => GarminProduct::from_str(name).map(|v| v as u64),
24457 "antplus_device_type" => AntplusDeviceType::from_str(name).map(|v| v as u64),
24458 "ant_network" => AntNetwork::from_str(name).map(|v| v as u64),
24459 "workout_capabilities" => WorkoutCapabilities::from_str(name).map(|v| v as u64),
24460 "battery_status" => BatteryStatus::from_str(name).map(|v| v as u64),
24461 "hr_type" => HrType::from_str(name).map(|v| v as u64),
24462 "course_capabilities" => CourseCapabilities::from_str(name).map(|v| v as u64),
24463 "weight" => Weight::from_str(name).map(|v| v as u64),
24464 "workout_hr" => WorkoutHr::from_str(name).map(|v| v as u64),
24465 "workout_power" => WorkoutPower::from_str(name).map(|v| v as u64),
24466 "bp_status" => BpStatus::from_str(name).map(|v| v as u64),
24467 "user_local_id" => UserLocalId::from_str(name).map(|v| v as u64),
24468 "swim_stroke" => SwimStroke::from_str(name).map(|v| v as u64),
24469 "activity_type" => ActivityType::from_str(name).map(|v| v as u64),
24470 "activity_subtype" => ActivitySubtype::from_str(name).map(|v| v as u64),
24471 "activity_level" => ActivityLevel::from_str(name).map(|v| v as u64),
24472 "side" => Side::from_str(name).map(|v| v as u64),
24473 "left_right_balance" => LeftRightBalance::from_str(name).map(|v| v as u64),
24474 "left_right_balance_100" => LeftRightBalance100::from_str(name).map(|v| v as u64),
24475 "length_type" => LengthType::from_str(name).map(|v| v as u64),
24476 "day_of_week" => DayOfWeek::from_str(name).map(|v| v as u64),
24477 "connectivity_capabilities" => ConnectivityCapabilities::from_str(name).map(|v| v as u64),
24478 "weather_report" => WeatherReport::from_str(name).map(|v| v as u64),
24479 "weather_status" => WeatherStatus::from_str(name).map(|v| v as u64),
24480 "weather_severity" => WeatherSeverity::from_str(name).map(|v| v as u64),
24481 "weather_severe_type" => WeatherSevereType::from_str(name).map(|v| v as u64),
24482 "stroke_type" => StrokeType::from_str(name).map(|v| v as u64),
24483 "body_location" => BodyLocation::from_str(name).map(|v| v as u64),
24484 "segment_lap_status" => SegmentLapStatus::from_str(name).map(|v| v as u64),
24485 "segment_leaderboard_type" => SegmentLeaderboardType::from_str(name).map(|v| v as u64),
24486 "segment_delete_status" => SegmentDeleteStatus::from_str(name).map(|v| v as u64),
24487 "segment_selection_type" => SegmentSelectionType::from_str(name).map(|v| v as u64),
24488 "source_type" => SourceType::from_str(name).map(|v| v as u64),
24489 "local_device_type" => LocalDeviceType::from_str(name).map(|v| v as u64),
24490 "ble_device_type" => BleDeviceType::from_str(name).map(|v| v as u64),
24491 "ant_channel_id" => AntChannelId::from_str(name).map(|v| v as u64),
24492 "display_orientation" => DisplayOrientation::from_str(name).map(|v| v as u64),
24493 "workout_equipment" => WorkoutEquipment::from_str(name).map(|v| v as u64),
24494 "watchface_mode" => WatchfaceMode::from_str(name).map(|v| v as u64),
24495 "digital_watchface_layout" => DigitalWatchfaceLayout::from_str(name).map(|v| v as u64),
24496 "analog_watchface_layout" => AnalogWatchfaceLayout::from_str(name).map(|v| v as u64),
24497 "rider_position_type" => RiderPositionType::from_str(name).map(|v| v as u64),
24498 "power_phase_type" => PowerPhaseType::from_str(name).map(|v| v as u64),
24499 "camera_event_type" => CameraEventType::from_str(name).map(|v| v as u64),
24500 "sensor_type" => SensorType::from_str(name).map(|v| v as u64),
24501 "bike_light_network_config_type" => {
24502 BikeLightNetworkConfigType::from_str(name).map(|v| v as u64)
24503 }
24504 "comm_timeout_type" => CommTimeoutType::from_str(name).map(|v| v as u64),
24505 "camera_orientation_type" => CameraOrientationType::from_str(name).map(|v| v as u64),
24506 "attitude_stage" => AttitudeStage::from_str(name).map(|v| v as u64),
24507 "attitude_validity" => AttitudeValidity::from_str(name).map(|v| v as u64),
24508 "auto_sync_frequency" => AutoSyncFrequency::from_str(name).map(|v| v as u64),
24509 "exd_layout" => ExdLayout::from_str(name).map(|v| v as u64),
24510 "exd_display_type" => ExdDisplayType::from_str(name).map(|v| v as u64),
24511 "exd_data_units" => ExdDataUnits::from_str(name).map(|v| v as u64),
24512 "exd_qualifiers" => ExdQualifiers::from_str(name).map(|v| v as u64),
24513 "exd_descriptors" => ExdDescriptors::from_str(name).map(|v| v as u64),
24514 "auto_activity_detect" => AutoActivityDetect::from_str(name).map(|v| v as u64),
24515 "supported_exd_screen_layouts" => {
24516 SupportedExdScreenLayouts::from_str(name).map(|v| v as u64)
24517 }
24518 "fit_base_type" => FitBaseType::from_str(name).map(|v| v as u64),
24519 "turn_type" => TurnType::from_str(name).map(|v| v as u64),
24520 "bike_light_beam_angle_mode" => BikeLightBeamAngleMode::from_str(name).map(|v| v as u64),
24521 "fit_base_unit" => FitBaseUnit::from_str(name).map(|v| v as u64),
24522 "set_type" => SetType::from_str(name).map(|v| v as u64),
24523 "max_met_category" => MaxMetCategory::from_str(name).map(|v| v as u64),
24524 "exercise_category" => ExerciseCategory::from_str(name).map(|v| v as u64),
24525 "bench_press_exercise_name" => BenchPressExerciseName::from_str(name).map(|v| v as u64),
24526 "calf_raise_exercise_name" => CalfRaiseExerciseName::from_str(name).map(|v| v as u64),
24527 "cardio_exercise_name" => CardioExerciseName::from_str(name).map(|v| v as u64),
24528 "carry_exercise_name" => CarryExerciseName::from_str(name).map(|v| v as u64),
24529 "chop_exercise_name" => ChopExerciseName::from_str(name).map(|v| v as u64),
24530 "core_exercise_name" => CoreExerciseName::from_str(name).map(|v| v as u64),
24531 "crunch_exercise_name" => CrunchExerciseName::from_str(name).map(|v| v as u64),
24532 "curl_exercise_name" => CurlExerciseName::from_str(name).map(|v| v as u64),
24533 "deadlift_exercise_name" => DeadliftExerciseName::from_str(name).map(|v| v as u64),
24534 "flye_exercise_name" => FlyeExerciseName::from_str(name).map(|v| v as u64),
24535 "hip_raise_exercise_name" => HipRaiseExerciseName::from_str(name).map(|v| v as u64),
24536 "hip_stability_exercise_name" => HipStabilityExerciseName::from_str(name).map(|v| v as u64),
24537 "hip_swing_exercise_name" => HipSwingExerciseName::from_str(name).map(|v| v as u64),
24538 "hyperextension_exercise_name" => {
24539 HyperextensionExerciseName::from_str(name).map(|v| v as u64)
24540 }
24541 "lateral_raise_exercise_name" => LateralRaiseExerciseName::from_str(name).map(|v| v as u64),
24542 "leg_curl_exercise_name" => LegCurlExerciseName::from_str(name).map(|v| v as u64),
24543 "leg_raise_exercise_name" => LegRaiseExerciseName::from_str(name).map(|v| v as u64),
24544 "lunge_exercise_name" => LungeExerciseName::from_str(name).map(|v| v as u64),
24545 "olympic_lift_exercise_name" => OlympicLiftExerciseName::from_str(name).map(|v| v as u64),
24546 "plank_exercise_name" => PlankExerciseName::from_str(name).map(|v| v as u64),
24547 "plyo_exercise_name" => PlyoExerciseName::from_str(name).map(|v| v as u64),
24548 "pull_up_exercise_name" => PullUpExerciseName::from_str(name).map(|v| v as u64),
24549 "push_up_exercise_name" => PushUpExerciseName::from_str(name).map(|v| v as u64),
24550 "row_exercise_name" => RowExerciseName::from_str(name).map(|v| v as u64),
24551 "shoulder_press_exercise_name" => {
24552 ShoulderPressExerciseName::from_str(name).map(|v| v as u64)
24553 }
24554 "shoulder_stability_exercise_name" => {
24555 ShoulderStabilityExerciseName::from_str(name).map(|v| v as u64)
24556 }
24557 "shrug_exercise_name" => ShrugExerciseName::from_str(name).map(|v| v as u64),
24558 "sit_up_exercise_name" => SitUpExerciseName::from_str(name).map(|v| v as u64),
24559 "squat_exercise_name" => SquatExerciseName::from_str(name).map(|v| v as u64),
24560 "total_body_exercise_name" => TotalBodyExerciseName::from_str(name).map(|v| v as u64),
24561 "move_exercise_name" => MoveExerciseName::from_str(name).map(|v| v as u64),
24562 "pose_exercise_name" => PoseExerciseName::from_str(name).map(|v| v as u64),
24563 "triceps_extension_exercise_name" => {
24564 TricepsExtensionExerciseName::from_str(name).map(|v| v as u64)
24565 }
24566 "warm_up_exercise_name" => WarmUpExerciseName::from_str(name).map(|v| v as u64),
24567 "run_exercise_name" => RunExerciseName::from_str(name).map(|v| v as u64),
24568 "bike_exercise_name" => BikeExerciseName::from_str(name).map(|v| v as u64),
24569 "banded_exercises_exercise_name" => {
24570 BandedExercisesExerciseName::from_str(name).map(|v| v as u64)
24571 }
24572 "battle_rope_exercise_name" => BattleRopeExerciseName::from_str(name).map(|v| v as u64),
24573 "elliptical_exercise_name" => EllipticalExerciseName::from_str(name).map(|v| v as u64),
24574 "floor_climb_exercise_name" => FloorClimbExerciseName::from_str(name).map(|v| v as u64),
24575 "indoor_bike_exercise_name" => IndoorBikeExerciseName::from_str(name).map(|v| v as u64),
24576 "indoor_row_exercise_name" => IndoorRowExerciseName::from_str(name).map(|v| v as u64),
24577 "ladder_exercise_name" => LadderExerciseName::from_str(name).map(|v| v as u64),
24578 "sandbag_exercise_name" => SandbagExerciseName::from_str(name).map(|v| v as u64),
24579 "sled_exercise_name" => SledExerciseName::from_str(name).map(|v| v as u64),
24580 "sledge_hammer_exercise_name" => SledgeHammerExerciseName::from_str(name).map(|v| v as u64),
24581 "stair_stepper_exercise_name" => StairStepperExerciseName::from_str(name).map(|v| v as u64),
24582 "suspension_exercise_name" => SuspensionExerciseName::from_str(name).map(|v| v as u64),
24583 "tire_exercise_name" => TireExerciseName::from_str(name).map(|v| v as u64),
24584 "bike_outdoor_exercise_name" => BikeOutdoorExerciseName::from_str(name).map(|v| v as u64),
24585 "run_indoor_exercise_name" => RunIndoorExerciseName::from_str(name).map(|v| v as u64),
24586 "water_type" => WaterType::from_str(name).map(|v| v as u64),
24587 "tissue_model_type" => TissueModelType::from_str(name).map(|v| v as u64),
24588 "dive_gas_status" => DiveGasStatus::from_str(name).map(|v| v as u64),
24589 "dive_alert" => DiveAlert::from_str(name).map(|v| v as u64),
24590 "dive_alarm_type" => DiveAlarmType::from_str(name).map(|v| v as u64),
24591 "dive_backlight_mode" => DiveBacklightMode::from_str(name).map(|v| v as u64),
24592 "sleep_level" => SleepLevel::from_str(name).map(|v| v as u64),
24593 "spo2_measurement_type" => Spo2MeasurementType::from_str(name).map(|v| v as u64),
24594 "ccr_setpoint_switch_mode" => CcrSetpointSwitchMode::from_str(name).map(|v| v as u64),
24595 "dive_gas_mode" => DiveGasMode::from_str(name).map(|v| v as u64),
24596 "projectile_type" => ProjectileType::from_str(name).map(|v| v as u64),
24597 "favero_product" => FaveroProduct::from_str(name).map(|v| v as u64),
24598 "split_type" => SplitType::from_str(name).map(|v| v as u64),
24599 "climb_pro_event" => ClimbProEvent::from_str(name).map(|v| v as u64),
24600 "gas_consumption_rate_type" => GasConsumptionRateType::from_str(name).map(|v| v as u64),
24601 "tap_sensitivity" => TapSensitivity::from_str(name).map(|v| v as u64),
24602 "radar_threat_level_type" => RadarThreatLevelType::from_str(name).map(|v| v as u64),
24603 "sleep_disruption_severity" => SleepDisruptionSeverity::from_str(name).map(|v| v as u64),
24604 "nap_period_feedback" => NapPeriodFeedback::from_str(name).map(|v| v as u64),
24605 "nap_source" => NapSource::from_str(name).map(|v| v as u64),
24606 "max_met_speed_source" => MaxMetSpeedSource::from_str(name).map(|v| v as u64),
24607 "max_met_heart_rate_source" => MaxMetHeartRateSource::from_str(name).map(|v| v as u64),
24608 "hrv_status" => HrvStatus::from_str(name).map(|v| v as u64),
24609 "no_fly_time_mode" => NoFlyTimeMode::from_str(name).map(|v| v as u64),
24610 _ => None,
24611 }
24612}
24613
24614pub fn base_type_for_type_name(type_name: &str) -> Option<crate::base_type::BaseType> {
24618 use crate::base_type::BaseType;
24619 match type_name {
24620 "mesg_num" => Some(BaseType::UInt16),
24621 "file" => Some(BaseType::Enum),
24622 "checksum" => Some(BaseType::UInt8),
24623 "file_flags" => Some(BaseType::UInt8z),
24624 "mesg_count" => Some(BaseType::Enum),
24625 "date_time" => Some(BaseType::UInt32),
24626 "local_date_time" => Some(BaseType::UInt32),
24627 "message_index" => Some(BaseType::UInt16),
24628 "device_index" => Some(BaseType::UInt8),
24629 "gender" => Some(BaseType::Enum),
24630 "language" => Some(BaseType::Enum),
24631 "language_bits_0" => Some(BaseType::UInt8z),
24632 "language_bits_1" => Some(BaseType::UInt8z),
24633 "language_bits_2" => Some(BaseType::UInt8z),
24634 "language_bits_3" => Some(BaseType::UInt8z),
24635 "language_bits_4" => Some(BaseType::UInt8z),
24636 "time_zone" => Some(BaseType::Enum),
24637 "display_measure" => Some(BaseType::Enum),
24638 "display_heart" => Some(BaseType::Enum),
24639 "display_power" => Some(BaseType::Enum),
24640 "display_position" => Some(BaseType::Enum),
24641 "switch" => Some(BaseType::Enum),
24642 "sport" => Some(BaseType::Enum),
24643 "sport_bits_0" => Some(BaseType::UInt8z),
24644 "sport_bits_1" => Some(BaseType::UInt8z),
24645 "sport_bits_2" => Some(BaseType::UInt8z),
24646 "sport_bits_3" => Some(BaseType::UInt8z),
24647 "sport_bits_4" => Some(BaseType::UInt8z),
24648 "sport_bits_5" => Some(BaseType::UInt8z),
24649 "sport_bits_6" => Some(BaseType::UInt8z),
24650 "sub_sport" => Some(BaseType::Enum),
24651 "sport_event" => Some(BaseType::Enum),
24652 "activity" => Some(BaseType::Enum),
24653 "intensity" => Some(BaseType::Enum),
24654 "session_trigger" => Some(BaseType::Enum),
24655 "autolap_trigger" => Some(BaseType::Enum),
24656 "lap_trigger" => Some(BaseType::Enum),
24657 "time_mode" => Some(BaseType::Enum),
24658 "backlight_mode" => Some(BaseType::Enum),
24659 "date_mode" => Some(BaseType::Enum),
24660 "backlight_timeout" => Some(BaseType::UInt8),
24661 "event" => Some(BaseType::Enum),
24662 "event_type" => Some(BaseType::Enum),
24663 "timer_trigger" => Some(BaseType::Enum),
24664 "fitness_equipment_state" => Some(BaseType::Enum),
24665 "tone" => Some(BaseType::Enum),
24666 "autoscroll" => Some(BaseType::Enum),
24667 "activity_class" => Some(BaseType::Enum),
24668 "hr_zone_calc" => Some(BaseType::Enum),
24669 "pwr_zone_calc" => Some(BaseType::Enum),
24670 "wkt_step_duration" => Some(BaseType::Enum),
24671 "wkt_step_target" => Some(BaseType::Enum),
24672 "goal" => Some(BaseType::Enum),
24673 "goal_recurrence" => Some(BaseType::Enum),
24674 "goal_source" => Some(BaseType::Enum),
24675 "schedule" => Some(BaseType::Enum),
24676 "course_point" => Some(BaseType::Enum),
24677 "manufacturer" => Some(BaseType::UInt16),
24678 "garmin_product" => Some(BaseType::UInt16),
24679 "antplus_device_type" => Some(BaseType::UInt8),
24680 "ant_network" => Some(BaseType::Enum),
24681 "workout_capabilities" => Some(BaseType::UInt32z),
24682 "battery_status" => Some(BaseType::UInt8),
24683 "hr_type" => Some(BaseType::Enum),
24684 "course_capabilities" => Some(BaseType::UInt32z),
24685 "weight" => Some(BaseType::UInt16),
24686 "workout_hr" => Some(BaseType::UInt32),
24687 "workout_power" => Some(BaseType::UInt32),
24688 "bp_status" => Some(BaseType::Enum),
24689 "user_local_id" => Some(BaseType::UInt16),
24690 "swim_stroke" => Some(BaseType::Enum),
24691 "activity_type" => Some(BaseType::Enum),
24692 "activity_subtype" => Some(BaseType::Enum),
24693 "activity_level" => Some(BaseType::Enum),
24694 "side" => Some(BaseType::Enum),
24695 "left_right_balance" => Some(BaseType::UInt8),
24696 "left_right_balance_100" => Some(BaseType::UInt16),
24697 "length_type" => Some(BaseType::Enum),
24698 "day_of_week" => Some(BaseType::Enum),
24699 "connectivity_capabilities" => Some(BaseType::UInt32z),
24700 "weather_report" => Some(BaseType::Enum),
24701 "weather_status" => Some(BaseType::Enum),
24702 "weather_severity" => Some(BaseType::Enum),
24703 "weather_severe_type" => Some(BaseType::Enum),
24704 "stroke_type" => Some(BaseType::Enum),
24705 "body_location" => Some(BaseType::Enum),
24706 "segment_lap_status" => Some(BaseType::Enum),
24707 "segment_leaderboard_type" => Some(BaseType::Enum),
24708 "segment_delete_status" => Some(BaseType::Enum),
24709 "segment_selection_type" => Some(BaseType::Enum),
24710 "source_type" => Some(BaseType::Enum),
24711 "local_device_type" => Some(BaseType::UInt8),
24712 "ble_device_type" => Some(BaseType::UInt8),
24713 "ant_channel_id" => Some(BaseType::UInt32z),
24714 "display_orientation" => Some(BaseType::Enum),
24715 "workout_equipment" => Some(BaseType::Enum),
24716 "watchface_mode" => Some(BaseType::Enum),
24717 "digital_watchface_layout" => Some(BaseType::Enum),
24718 "analog_watchface_layout" => Some(BaseType::Enum),
24719 "rider_position_type" => Some(BaseType::Enum),
24720 "power_phase_type" => Some(BaseType::Enum),
24721 "camera_event_type" => Some(BaseType::Enum),
24722 "sensor_type" => Some(BaseType::Enum),
24723 "bike_light_network_config_type" => Some(BaseType::Enum),
24724 "comm_timeout_type" => Some(BaseType::UInt16),
24725 "camera_orientation_type" => Some(BaseType::Enum),
24726 "attitude_stage" => Some(BaseType::Enum),
24727 "attitude_validity" => Some(BaseType::UInt16),
24728 "auto_sync_frequency" => Some(BaseType::Enum),
24729 "exd_layout" => Some(BaseType::Enum),
24730 "exd_display_type" => Some(BaseType::Enum),
24731 "exd_data_units" => Some(BaseType::Enum),
24732 "exd_qualifiers" => Some(BaseType::Enum),
24733 "exd_descriptors" => Some(BaseType::Enum),
24734 "auto_activity_detect" => Some(BaseType::UInt32),
24735 "supported_exd_screen_layouts" => Some(BaseType::UInt32z),
24736 "fit_base_type" => Some(BaseType::UInt8),
24737 "turn_type" => Some(BaseType::Enum),
24738 "bike_light_beam_angle_mode" => Some(BaseType::UInt8),
24739 "fit_base_unit" => Some(BaseType::UInt16),
24740 "set_type" => Some(BaseType::UInt8),
24741 "max_met_category" => Some(BaseType::Enum),
24742 "exercise_category" => Some(BaseType::UInt16),
24743 "bench_press_exercise_name" => Some(BaseType::UInt16),
24744 "calf_raise_exercise_name" => Some(BaseType::UInt16),
24745 "cardio_exercise_name" => Some(BaseType::UInt16),
24746 "carry_exercise_name" => Some(BaseType::UInt16),
24747 "chop_exercise_name" => Some(BaseType::UInt16),
24748 "core_exercise_name" => Some(BaseType::UInt16),
24749 "crunch_exercise_name" => Some(BaseType::UInt16),
24750 "curl_exercise_name" => Some(BaseType::UInt16),
24751 "deadlift_exercise_name" => Some(BaseType::UInt16),
24752 "flye_exercise_name" => Some(BaseType::UInt16),
24753 "hip_raise_exercise_name" => Some(BaseType::UInt16),
24754 "hip_stability_exercise_name" => Some(BaseType::UInt16),
24755 "hip_swing_exercise_name" => Some(BaseType::UInt16),
24756 "hyperextension_exercise_name" => Some(BaseType::UInt16),
24757 "lateral_raise_exercise_name" => Some(BaseType::UInt16),
24758 "leg_curl_exercise_name" => Some(BaseType::UInt16),
24759 "leg_raise_exercise_name" => Some(BaseType::UInt16),
24760 "lunge_exercise_name" => Some(BaseType::UInt16),
24761 "olympic_lift_exercise_name" => Some(BaseType::UInt16),
24762 "plank_exercise_name" => Some(BaseType::UInt16),
24763 "plyo_exercise_name" => Some(BaseType::UInt16),
24764 "pull_up_exercise_name" => Some(BaseType::UInt16),
24765 "push_up_exercise_name" => Some(BaseType::UInt16),
24766 "row_exercise_name" => Some(BaseType::UInt16),
24767 "shoulder_press_exercise_name" => Some(BaseType::UInt16),
24768 "shoulder_stability_exercise_name" => Some(BaseType::UInt16),
24769 "shrug_exercise_name" => Some(BaseType::UInt16),
24770 "sit_up_exercise_name" => Some(BaseType::UInt16),
24771 "squat_exercise_name" => Some(BaseType::UInt16),
24772 "total_body_exercise_name" => Some(BaseType::UInt16),
24773 "move_exercise_name" => Some(BaseType::UInt16),
24774 "pose_exercise_name" => Some(BaseType::UInt16),
24775 "triceps_extension_exercise_name" => Some(BaseType::UInt16),
24776 "warm_up_exercise_name" => Some(BaseType::UInt16),
24777 "run_exercise_name" => Some(BaseType::UInt16),
24778 "bike_exercise_name" => Some(BaseType::UInt16),
24779 "banded_exercises_exercise_name" => Some(BaseType::UInt16),
24780 "battle_rope_exercise_name" => Some(BaseType::UInt16),
24781 "elliptical_exercise_name" => Some(BaseType::UInt16),
24782 "floor_climb_exercise_name" => Some(BaseType::UInt16),
24783 "indoor_bike_exercise_name" => Some(BaseType::UInt16),
24784 "indoor_row_exercise_name" => Some(BaseType::UInt16),
24785 "ladder_exercise_name" => Some(BaseType::UInt16),
24786 "sandbag_exercise_name" => Some(BaseType::UInt16),
24787 "sled_exercise_name" => Some(BaseType::UInt16),
24788 "sledge_hammer_exercise_name" => Some(BaseType::UInt16),
24789 "stair_stepper_exercise_name" => Some(BaseType::UInt16),
24790 "suspension_exercise_name" => Some(BaseType::UInt16),
24791 "tire_exercise_name" => Some(BaseType::UInt16),
24792 "bike_outdoor_exercise_name" => Some(BaseType::UInt16),
24793 "run_indoor_exercise_name" => Some(BaseType::UInt16),
24794 "water_type" => Some(BaseType::Enum),
24795 "tissue_model_type" => Some(BaseType::Enum),
24796 "dive_gas_status" => Some(BaseType::Enum),
24797 "dive_alert" => Some(BaseType::Enum),
24798 "dive_alarm_type" => Some(BaseType::Enum),
24799 "dive_backlight_mode" => Some(BaseType::Enum),
24800 "sleep_level" => Some(BaseType::Enum),
24801 "spo2_measurement_type" => Some(BaseType::Enum),
24802 "ccr_setpoint_switch_mode" => Some(BaseType::Enum),
24803 "dive_gas_mode" => Some(BaseType::Enum),
24804 "projectile_type" => Some(BaseType::Enum),
24805 "favero_product" => Some(BaseType::UInt16),
24806 "split_type" => Some(BaseType::Enum),
24807 "climb_pro_event" => Some(BaseType::Enum),
24808 "gas_consumption_rate_type" => Some(BaseType::Enum),
24809 "tap_sensitivity" => Some(BaseType::Enum),
24810 "radar_threat_level_type" => Some(BaseType::Enum),
24811 "sleep_disruption_severity" => Some(BaseType::Enum),
24812 "nap_period_feedback" => Some(BaseType::Enum),
24813 "nap_source" => Some(BaseType::Enum),
24814 "max_met_speed_source" => Some(BaseType::Enum),
24815 "max_met_heart_rate_source" => Some(BaseType::Enum),
24816 "hrv_status" => Some(BaseType::Enum),
24817 "no_fly_time_mode" => Some(BaseType::Enum),
24818 _ => None,
24819 }
24820}