rustyfit 0.5.0

This project hosts the Rust implementation for The Flexible and Interoperable Data Transfer (FIT) Protocol
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
// Code generated by fitgen/main.go. DO NOT EDIT.

// Copyright 2025 The RustyFIT Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Skip default formatting, fitgen formats the code for fewer LoC while keeping it readable.
// In general, the rule is one line per struct. If it contains slices, one line per slice's item.
#![cfg_attr(rustfmt, rustfmt_skip)]

use crate::profile::ProfileType;
use crate::profile::typedef::{FitBaseType, MesgNum};
use crate::proto::*;

pub(crate) const MAX_COMPONENT_BITS: usize = 240;

const FR_DEF: FieldReference = FieldReference { num: 0, name: "", base_type: FitBaseType(u8::MAX), profile_type: ProfileType(u16::MAX), array: false, accumulate: false, scale: 1.0, offset: 0.0, units: "", components: &[], sub_fields: &[] };
const SF_DEF: SubField = SubField { name: "", profile_type: ProfileType(u16::MAX), scale: 1.0, offset: 0.0, units: "", components: &[], maps: &[] };

/// Find FieldReference defined in the Global Profile (Profile.xlsx).
pub const fn field_reference<'a>(mesg_num: MesgNum, field_num: u8) -> Option<FieldReference<'a>> {
    match mesg_num {
        MesgNum::FILE_ID => { match field_num {
            0 => Some(FieldReference { name: "type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
            1 => Some(FieldReference { name: "manufacturer", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
            2 => Some(FieldReference { name: "product", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
                    SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 263 /* favero_electronics */ },
                    ], ..SF_DEF },
                    SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 1 /* garmin */ },
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 15 /* dynastream */ },
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 13 /* dynastream_oem */ },
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 89 /* tacx */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            3 => Some(FieldReference { name: "serial_number", num: 3, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::UINT32Z, ..FR_DEF }),
            4 => Some(FieldReference { name: "time_created", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            5 => Some(FieldReference { name: "number", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            8 => Some(FieldReference { name: "product_name", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::FILE_CREATOR => { match field_num {
            0 => Some(FieldReference { name: "software_version", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            1 => Some(FieldReference { name: "hardware_version", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::TIMESTAMP_CORRELATION => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "fractional_timestamp", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "system_timestamp", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            2 => Some(FieldReference { name: "fractional_system_timestamp", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
            3 => Some(FieldReference { name: "local_timestamp", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, units: "s", ..FR_DEF }),
            4 => Some(FieldReference { name: "timestamp_ms", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            5 => Some(FieldReference { name: "system_timestamp_ms", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SOFTWARE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            3 => Some(FieldReference { name: "version", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
            5 => Some(FieldReference { name: "part_number", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SLAVE_DEVICE => { match field_num {
            0 => Some(FieldReference { name: "manufacturer", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
            1 => Some(FieldReference { name: "product", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
                    SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 263 /* favero_electronics */ },
                    ], ..SF_DEF },
                    SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 1 /* garmin */ },
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 15 /* dynastream */ },
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 13 /* dynastream_oem */ },
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 89 /* tacx */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
           _ => None,
        }},
        MesgNum::CAPABILITIES => { match field_num {
            0 => Some(FieldReference { name: "languages", num: 0, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, array: true /* [N] */, ..FR_DEF }),
            1 => Some(FieldReference { name: "sports", num: 1, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::SPORT_BITS_0, array: true /* [N] */, ..FR_DEF }),
            21 => Some(FieldReference { name: "workouts_supported", num: 21, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::WORKOUT_CAPABILITIES, ..FR_DEF }),
            23 => Some(FieldReference { name: "connectivity_supported", num: 23, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::CONNECTIVITY_CAPABILITIES, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::FILE_CAPABILITIES => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
            1 => Some(FieldReference { name: "flags", num: 1, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::FILE_FLAGS, ..FR_DEF }),
            2 => Some(FieldReference { name: "directory", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            3 => Some(FieldReference { name: "max_count", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            4 => Some(FieldReference { name: "max_size", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "bytes", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::MESG_CAPABILITIES => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "file", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
            1 => Some(FieldReference { name: "mesg_num", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
            2 => Some(FieldReference { name: "count_type", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::MESG_COUNT, ..FR_DEF }),
            3 => Some(FieldReference { name: "count", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
                    SubField { name: "num_per_file", profile_type: ProfileType::UINT16, maps: &[
                        SubFieldMap { ref_field_num: 2 /* count_type */, ref_field_value: 0 /* num_per_file */ },
                    ], ..SF_DEF },
                    SubField { name: "max_per_file", profile_type: ProfileType::UINT16, maps: &[
                        SubFieldMap { ref_field_num: 2 /* count_type */, ref_field_value: 1 /* max_per_file */ },
                    ], ..SF_DEF },
                    SubField { name: "max_per_file_type", profile_type: ProfileType::UINT16, maps: &[
                        SubFieldMap { ref_field_num: 2 /* count_type */, ref_field_value: 2 /* max_per_file_type */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
           _ => None,
        }},
        MesgNum::FIELD_CAPABILITIES => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "file", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
            1 => Some(FieldReference { name: "mesg_num", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
            2 => Some(FieldReference { name: "field_num", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            3 => Some(FieldReference { name: "count", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DEVICE_SETTINGS => { match field_num {
            0 => Some(FieldReference { name: "active_time_zone", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            1 => Some(FieldReference { name: "utc_offset", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            2 => Some(FieldReference { name: "time_offset", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, units: "s", ..FR_DEF }),
            4 => Some(FieldReference { name: "time_mode", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::TIME_MODE, array: true /* [N] */, ..FR_DEF }),
            5 => Some(FieldReference { name: "time_zone_offset", num: 5, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, array: true /* [N] */, scale: 4.0, units: "hr", ..FR_DEF }),
            12 => Some(FieldReference { name: "backlight_mode", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::BACKLIGHT_MODE, ..FR_DEF }),
            36 => Some(FieldReference { name: "activity_tracker_enabled", num: 36, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            39 => Some(FieldReference { name: "clock_time", num: 39, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            40 => Some(FieldReference { name: "pages_enabled", num: 40, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, ..FR_DEF }),
            46 => Some(FieldReference { name: "move_alert_enabled", num: 46, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            47 => Some(FieldReference { name: "date_mode", num: 47, base_type: FitBaseType::ENUM, profile_type: ProfileType::DATE_MODE, ..FR_DEF }),
            55 => Some(FieldReference { name: "display_orientation", num: 55, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_ORIENTATION, ..FR_DEF }),
            56 => Some(FieldReference { name: "mounting_side", num: 56, base_type: FitBaseType::ENUM, profile_type: ProfileType::SIDE, ..FR_DEF }),
            57 => Some(FieldReference { name: "default_page", num: 57, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, ..FR_DEF }),
            58 => Some(FieldReference { name: "autosync_min_steps", num: 58, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "steps", ..FR_DEF }),
            59 => Some(FieldReference { name: "autosync_min_time", num: 59, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "minutes", ..FR_DEF }),
            80 => Some(FieldReference { name: "lactate_threshold_autodetect_enabled", num: 80, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            86 => Some(FieldReference { name: "ble_auto_upload_enabled", num: 86, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            89 => Some(FieldReference { name: "auto_sync_frequency", num: 89, base_type: FitBaseType::ENUM, profile_type: ProfileType::AUTO_SYNC_FREQUENCY, ..FR_DEF }),
            90 => Some(FieldReference { name: "auto_activity_detect", num: 90, base_type: FitBaseType::UINT32, profile_type: ProfileType::AUTO_ACTIVITY_DETECT, ..FR_DEF }),
            94 => Some(FieldReference { name: "number_of_screens", num: 94, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            95 => Some(FieldReference { name: "smart_notification_display_orientation", num: 95, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_ORIENTATION, ..FR_DEF }),
            134 => Some(FieldReference { name: "tap_interface", num: 134, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWITCH, ..FR_DEF }),
            174 => Some(FieldReference { name: "tap_sensitivity", num: 174, base_type: FitBaseType::ENUM, profile_type: ProfileType::TAP_SENSITIVITY, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::USER_PROFILE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "friendly_name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            1 => Some(FieldReference { name: "gender", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::GENDER, ..FR_DEF }),
            2 => Some(FieldReference { name: "age", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "years", ..FR_DEF }),
            3 => Some(FieldReference { name: "height", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
            4 => Some(FieldReference { name: "weight", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "kg", ..FR_DEF }),
            5 => Some(FieldReference { name: "language", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::LANGUAGE, ..FR_DEF }),
            6 => Some(FieldReference { name: "elev_setting", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            7 => Some(FieldReference { name: "weight_setting", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            8 => Some(FieldReference { name: "resting_heart_rate", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            9 => Some(FieldReference { name: "default_max_running_heart_rate", num: 9, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            10 => Some(FieldReference { name: "default_max_biking_heart_rate", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            11 => Some(FieldReference { name: "default_max_heart_rate", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            12 => Some(FieldReference { name: "hr_setting", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_HEART, ..FR_DEF }),
            13 => Some(FieldReference { name: "speed_setting", num: 13, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            14 => Some(FieldReference { name: "dist_setting", num: 14, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            16 => Some(FieldReference { name: "power_setting", num: 16, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_POWER, ..FR_DEF }),
            17 => Some(FieldReference { name: "activity_class", num: 17, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_CLASS, ..FR_DEF }),
            18 => Some(FieldReference { name: "position_setting", num: 18, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_POSITION, ..FR_DEF }),
            21 => Some(FieldReference { name: "temperature_setting", num: 21, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            22 => Some(FieldReference { name: "local_id", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::USER_LOCAL_ID, ..FR_DEF }),
            23 => Some(FieldReference { name: "global_id", num: 23, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [6] */, ..FR_DEF }),
            28 => Some(FieldReference { name: "wake_time", num: 28, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCALTIME_INTO_DAY, ..FR_DEF }),
            29 => Some(FieldReference { name: "sleep_time", num: 29, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCALTIME_INTO_DAY, ..FR_DEF }),
            30 => Some(FieldReference { name: "height_setting", num: 30, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            31 => Some(FieldReference { name: "user_running_step_length", num: 31, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m", ..FR_DEF }),
            32 => Some(FieldReference { name: "user_walking_step_length", num: 32, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m", ..FR_DEF }),
            47 => Some(FieldReference { name: "depth_setting", num: 47, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            49 => Some(FieldReference { name: "dive_count", num: 49, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HRM_PROFILE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "enabled", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            1 => Some(FieldReference { name: "hrm_ant_id", num: 1, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
            2 => Some(FieldReference { name: "log_hrv", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            3 => Some(FieldReference { name: "hrm_ant_id_trans_type", num: 3, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SDM_PROFILE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "enabled", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            1 => Some(FieldReference { name: "sdm_ant_id", num: 1, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
            2 => Some(FieldReference { name: "sdm_cal_factor", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
            3 => Some(FieldReference { name: "odometer", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            4 => Some(FieldReference { name: "speed_source", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            5 => Some(FieldReference { name: "sdm_ant_id_trans_type", num: 5, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            7 => Some(FieldReference { name: "odometer_rollover", num: 7, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::BIKE_PROFILE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            1 => Some(FieldReference { name: "sport", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            2 => Some(FieldReference { name: "sub_sport", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            3 => Some(FieldReference { name: "odometer", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            4 => Some(FieldReference { name: "bike_spd_ant_id", num: 4, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
            5 => Some(FieldReference { name: "bike_cad_ant_id", num: 5, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
            6 => Some(FieldReference { name: "bike_spdcad_ant_id", num: 6, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
            7 => Some(FieldReference { name: "bike_power_ant_id", num: 7, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
            8 => Some(FieldReference { name: "custom_wheelsize", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m", ..FR_DEF }),
            9 => Some(FieldReference { name: "auto_wheelsize", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m", ..FR_DEF }),
            10 => Some(FieldReference { name: "bike_weight", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "kg", ..FR_DEF }),
            11 => Some(FieldReference { name: "power_cal_factor", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
            12 => Some(FieldReference { name: "auto_wheel_cal", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            13 => Some(FieldReference { name: "auto_power_zero", num: 13, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            14 => Some(FieldReference { name: "id", num: 14, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            15 => Some(FieldReference { name: "spd_enabled", num: 15, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            16 => Some(FieldReference { name: "cad_enabled", num: 16, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            17 => Some(FieldReference { name: "spdcad_enabled", num: 17, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            18 => Some(FieldReference { name: "power_enabled", num: 18, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            19 => Some(FieldReference { name: "crank_length", num: 19, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, offset: -110.0,units: "mm", ..FR_DEF }),
            20 => Some(FieldReference { name: "enabled", num: 20, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            21 => Some(FieldReference { name: "bike_spd_ant_id_trans_type", num: 21, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            22 => Some(FieldReference { name: "bike_cad_ant_id_trans_type", num: 22, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            23 => Some(FieldReference { name: "bike_spdcad_ant_id_trans_type", num: 23, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            24 => Some(FieldReference { name: "bike_power_ant_id_trans_type", num: 24, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            37 => Some(FieldReference { name: "odometer_rollover", num: 37, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            38 => Some(FieldReference { name: "front_gear_num", num: 38, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            39 => Some(FieldReference { name: "front_gear", num: 39, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, array: true /* [N] */, ..FR_DEF }),
            40 => Some(FieldReference { name: "rear_gear_num", num: 40, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            41 => Some(FieldReference { name: "rear_gear", num: 41, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, array: true /* [N] */, ..FR_DEF }),
            44 => Some(FieldReference { name: "shimano_di2_enabled", num: 44, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::CONNECTIVITY => { match field_num {
            0 => Some(FieldReference { name: "bluetooth_enabled", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            1 => Some(FieldReference { name: "bluetooth_le_enabled", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            2 => Some(FieldReference { name: "ant_enabled", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            3 => Some(FieldReference { name: "name", num: 3, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            4 => Some(FieldReference { name: "live_tracking_enabled", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            5 => Some(FieldReference { name: "weather_conditions_enabled", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            6 => Some(FieldReference { name: "weather_alerts_enabled", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            7 => Some(FieldReference { name: "auto_activity_upload_enabled", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            8 => Some(FieldReference { name: "course_download_enabled", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            9 => Some(FieldReference { name: "workout_download_enabled", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            10 => Some(FieldReference { name: "gps_ephemeris_download_enabled", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            11 => Some(FieldReference { name: "incident_detection_enabled", num: 11, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            12 => Some(FieldReference { name: "grouptrack_enabled", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::WATCHFACE_SETTINGS => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "mode", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::WATCHFACE_MODE, ..FR_DEF }),
            1 => Some(FieldReference { name: "layout", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, sub_fields: &[
                    SubField { name: "digital_layout", profile_type: ProfileType::DIGITAL_WATCHFACE_LAYOUT, maps: &[
                        SubFieldMap { ref_field_num: 0 /* mode */, ref_field_value: 0 /* digital */ },
                    ], ..SF_DEF },
                    SubField { name: "analog_layout", profile_type: ProfileType::ANALOG_WATCHFACE_LAYOUT, maps: &[
                        SubFieldMap { ref_field_num: 0 /* mode */, ref_field_value: 1 /* analog */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
           _ => None,
        }},
        MesgNum::OHR_SETTINGS => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "enabled", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWITCH, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::TIME_IN_ZONE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "reference_mesg", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
            1 => Some(FieldReference { name: "reference_index", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            2 => Some(FieldReference { name: "time_in_hr_zone", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            3 => Some(FieldReference { name: "time_in_speed_zone", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            4 => Some(FieldReference { name: "time_in_cadence_zone", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            5 => Some(FieldReference { name: "time_in_power_zone", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            6 => Some(FieldReference { name: "hr_zone_high_boundary", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "bpm", ..FR_DEF }),
            7 => Some(FieldReference { name: "speed_zone_high_boundary", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 1000.0, units: "m/s", ..FR_DEF }),
            8 => Some(FieldReference { name: "cadence_zone_high_boundary", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "rpm", ..FR_DEF }),
            9 => Some(FieldReference { name: "power_zone_high_boundary", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "watts", ..FR_DEF }),
            10 => Some(FieldReference { name: "hr_calc_type", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::HR_ZONE_CALC, ..FR_DEF }),
            11 => Some(FieldReference { name: "max_heart_rate", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            12 => Some(FieldReference { name: "resting_heart_rate", num: 12, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            13 => Some(FieldReference { name: "threshold_heart_rate", num: 13, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            14 => Some(FieldReference { name: "pwr_calc_type", num: 14, base_type: FitBaseType::ENUM, profile_type: ProfileType::PWR_ZONE_CALC, ..FR_DEF }),
            15 => Some(FieldReference { name: "functional_threshold_power", num: 15, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::ZONES_TARGET => { match field_num {
            1 => Some(FieldReference { name: "max_heart_rate", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            2 => Some(FieldReference { name: "threshold_heart_rate", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            3 => Some(FieldReference { name: "functional_threshold_power", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            5 => Some(FieldReference { name: "hr_calc_type", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::HR_ZONE_CALC, ..FR_DEF }),
            7 => Some(FieldReference { name: "pwr_calc_type", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::PWR_ZONE_CALC, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SPORT => { match field_num {
            0 => Some(FieldReference { name: "sport", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            1 => Some(FieldReference { name: "sub_sport", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            3 => Some(FieldReference { name: "name", num: 3, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HR_ZONE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "high_bpm", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            2 => Some(FieldReference { name: "name", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SPEED_ZONE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "high_value", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            1 => Some(FieldReference { name: "name", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::CADENCE_ZONE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "high_value", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", ..FR_DEF }),
            1 => Some(FieldReference { name: "name", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::POWER_ZONE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "high_value", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            2 => Some(FieldReference { name: "name", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::MET_ZONE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "high_bpm", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            2 => Some(FieldReference { name: "calories", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "kcal / min", ..FR_DEF }),
            3 => Some(FieldReference { name: "fat_calories", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, units: "kcal / min", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::TRAINING_SETTINGS => { match field_num {
            31 => Some(FieldReference { name: "target_distance", num: 31, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            32 => Some(FieldReference { name: "target_speed", num: 32, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            33 => Some(FieldReference { name: "target_time", num: 33, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            153 => Some(FieldReference { name: "precise_target_speed", num: 153, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000000.0, units: "m/s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DIVE_SETTINGS => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            1 => Some(FieldReference { name: "model", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::TISSUE_MODEL_TYPE, ..FR_DEF }),
            2 => Some(FieldReference { name: "gf_low", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            3 => Some(FieldReference { name: "gf_high", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            4 => Some(FieldReference { name: "water_type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::WATER_TYPE, ..FR_DEF }),
            5 => Some(FieldReference { name: "water_density", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kg/m^3", ..FR_DEF }),
            6 => Some(FieldReference { name: "po2_warn", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
            7 => Some(FieldReference { name: "po2_critical", num: 7, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
            8 => Some(FieldReference { name: "po2_deco", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
            9 => Some(FieldReference { name: "safety_stop_enabled", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            10 => Some(FieldReference { name: "bottom_depth", num: 10, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
            11 => Some(FieldReference { name: "bottom_time", num: 11, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            12 => Some(FieldReference { name: "apnea_countdown_enabled", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            13 => Some(FieldReference { name: "apnea_countdown_time", num: 13, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            14 => Some(FieldReference { name: "backlight_mode", num: 14, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_BACKLIGHT_MODE, ..FR_DEF }),
            15 => Some(FieldReference { name: "backlight_brightness", num: 15, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            16 => Some(FieldReference { name: "backlight_timeout", num: 16, base_type: FitBaseType::UINT8, profile_type: ProfileType::BACKLIGHT_TIMEOUT, ..FR_DEF }),
            17 => Some(FieldReference { name: "repeat_dive_interval", num: 17, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            18 => Some(FieldReference { name: "safety_stop_time", num: 18, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            19 => Some(FieldReference { name: "heart_rate_source_type", num: 19, base_type: FitBaseType::ENUM, profile_type: ProfileType::SOURCE_TYPE, ..FR_DEF }),
            20 => Some(FieldReference { name: "heart_rate_source", num: 20, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, sub_fields: &[
                    SubField { name: "heart_rate_antplus_device_type", profile_type: ProfileType::ANTPLUS_DEVICE_TYPE, maps: &[
                        SubFieldMap { ref_field_num: 19 /* heart_rate_source_type */, ref_field_value: 1 /* antplus */ },
                    ], ..SF_DEF },
                    SubField { name: "heart_rate_local_device_type", profile_type: ProfileType::LOCAL_DEVICE_TYPE, maps: &[
                        SubFieldMap { ref_field_num: 19 /* heart_rate_source_type */, ref_field_value: 5 /* local */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            21 => Some(FieldReference { name: "travel_gas", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            22 => Some(FieldReference { name: "ccr_low_setpoint_switch_mode", num: 22, base_type: FitBaseType::ENUM, profile_type: ProfileType::CCR_SETPOINT_SWITCH_MODE, ..FR_DEF }),
            23 => Some(FieldReference { name: "ccr_low_setpoint", num: 23, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
            24 => Some(FieldReference { name: "ccr_low_setpoint_depth", num: 24, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            25 => Some(FieldReference { name: "ccr_high_setpoint_switch_mode", num: 25, base_type: FitBaseType::ENUM, profile_type: ProfileType::CCR_SETPOINT_SWITCH_MODE, ..FR_DEF }),
            26 => Some(FieldReference { name: "ccr_high_setpoint", num: 26, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
            27 => Some(FieldReference { name: "ccr_high_setpoint_depth", num: 27, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            29 => Some(FieldReference { name: "gas_consumption_display", num: 29, base_type: FitBaseType::ENUM, profile_type: ProfileType::GAS_CONSUMPTION_RATE_TYPE, ..FR_DEF }),
            30 => Some(FieldReference { name: "up_key_enabled", num: 30, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            35 => Some(FieldReference { name: "dive_sounds", num: 35, base_type: FitBaseType::ENUM, profile_type: ProfileType::TONE, ..FR_DEF }),
            36 => Some(FieldReference { name: "last_stop_multiple", num: 36, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, ..FR_DEF }),
            37 => Some(FieldReference { name: "no_fly_time_mode", num: 37, base_type: FitBaseType::ENUM, profile_type: ProfileType::NO_FLY_TIME_MODE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DIVE_ALARM => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "depth", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            1 => Some(FieldReference { name: "time", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "s", ..FR_DEF }),
            2 => Some(FieldReference { name: "enabled", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            3 => Some(FieldReference { name: "alarm_type", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_ALARM_TYPE, ..FR_DEF }),
            4 => Some(FieldReference { name: "sound", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::TONE, ..FR_DEF }),
            5 => Some(FieldReference { name: "dive_types", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, array: true /* [N] */, ..FR_DEF }),
            6 => Some(FieldReference { name: "id", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            7 => Some(FieldReference { name: "popup_enabled", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            8 => Some(FieldReference { name: "trigger_on_descent", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            9 => Some(FieldReference { name: "trigger_on_ascent", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            10 => Some(FieldReference { name: "repeating", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            11 => Some(FieldReference { name: "speed", num: 11, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "mps", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DIVE_APNEA_ALARM => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "depth", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            1 => Some(FieldReference { name: "time", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "s", ..FR_DEF }),
            2 => Some(FieldReference { name: "enabled", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            3 => Some(FieldReference { name: "alarm_type", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_ALARM_TYPE, ..FR_DEF }),
            4 => Some(FieldReference { name: "sound", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::TONE, ..FR_DEF }),
            5 => Some(FieldReference { name: "dive_types", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, array: true /* [N] */, ..FR_DEF }),
            6 => Some(FieldReference { name: "id", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            7 => Some(FieldReference { name: "popup_enabled", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            8 => Some(FieldReference { name: "trigger_on_descent", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            9 => Some(FieldReference { name: "trigger_on_ascent", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            10 => Some(FieldReference { name: "repeating", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            11 => Some(FieldReference { name: "speed", num: 11, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "mps", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DIVE_GAS => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "helium_content", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            1 => Some(FieldReference { name: "oxygen_content", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            2 => Some(FieldReference { name: "status", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_GAS_STATUS, ..FR_DEF }),
            3 => Some(FieldReference { name: "mode", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_GAS_MODE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::GOAL => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "sport", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            1 => Some(FieldReference { name: "sub_sport", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            2 => Some(FieldReference { name: "start_date", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            3 => Some(FieldReference { name: "end_date", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            4 => Some(FieldReference { name: "type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::GOAL, ..FR_DEF }),
            5 => Some(FieldReference { name: "value", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            6 => Some(FieldReference { name: "repeat", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            7 => Some(FieldReference { name: "target_value", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            8 => Some(FieldReference { name: "recurrence", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::GOAL_RECURRENCE, ..FR_DEF }),
            9 => Some(FieldReference { name: "recurrence_value", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            10 => Some(FieldReference { name: "enabled", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            11 => Some(FieldReference { name: "source", num: 11, base_type: FitBaseType::ENUM, profile_type: ProfileType::GOAL_SOURCE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::ACTIVITY => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "total_timer_time", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "num_sessions", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            2 => Some(FieldReference { name: "type", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY, ..FR_DEF }),
            3 => Some(FieldReference { name: "event", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
            4 => Some(FieldReference { name: "event_type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
            5 => Some(FieldReference { name: "local_timestamp", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, ..FR_DEF }),
            6 => Some(FieldReference { name: "event_group", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SESSION => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
            1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
            2 => Some(FieldReference { name: "start_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            3 => Some(FieldReference { name: "start_position_lat", num: 3, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            4 => Some(FieldReference { name: "start_position_long", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            5 => Some(FieldReference { name: "sport", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            6 => Some(FieldReference { name: "sub_sport", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            7 => Some(FieldReference { name: "total_elapsed_time", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            8 => Some(FieldReference { name: "total_timer_time", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            9 => Some(FieldReference { name: "total_distance", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            10 => Some(FieldReference { name: "total_cycles", num: 10, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "cycles", sub_fields: &[
                    SubField { name: "total_strides", profile_type: ProfileType::UINT32, units: "strides", maps: &[
                        SubFieldMap { ref_field_num: 5 /* sport */, ref_field_value: 1 /* running */ },
                        SubFieldMap { ref_field_num: 5 /* sport */, ref_field_value: 11 /* walking */ },
                    ], ..SF_DEF },
                    SubField { name: "total_strokes", profile_type: ProfileType::UINT32, units: "strokes", maps: &[
                        SubFieldMap { ref_field_num: 5 /* sport */, ref_field_value: 2 /* cycling */ },
                        SubFieldMap { ref_field_num: 5 /* sport */, ref_field_value: 5 /* swimming */ },
                        SubFieldMap { ref_field_num: 5 /* sport */, ref_field_value: 15 /* rowing */ },
                        SubFieldMap { ref_field_num: 5 /* sport */, ref_field_value: 37 /* stand_up_paddleboarding */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            11 => Some(FieldReference { name: "total_calories", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            13 => Some(FieldReference { name: "total_fat_calories", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            14 => Some(FieldReference { name: "avg_speed", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
                    Component { field_num: 124 /* enhanced_avg_speed */, scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            15 => Some(FieldReference { name: "max_speed", num: 15, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
                    Component { field_num: 125 /* enhanced_max_speed */, scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            16 => Some(FieldReference { name: "avg_heart_rate", num: 16, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            17 => Some(FieldReference { name: "max_heart_rate", num: 17, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            18 => Some(FieldReference { name: "avg_cadence", num: 18, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", sub_fields: &[
                    SubField { name: "avg_running_cadence", profile_type: ProfileType::UINT8, units: "strides/min", maps: &[
                        SubFieldMap { ref_field_num: 5 /* sport */, ref_field_value: 1 /* running */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            19 => Some(FieldReference { name: "max_cadence", num: 19, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", sub_fields: &[
                    SubField { name: "max_running_cadence", profile_type: ProfileType::UINT8, units: "strides/min", maps: &[
                        SubFieldMap { ref_field_num: 5 /* sport */, ref_field_value: 1 /* running */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            20 => Some(FieldReference { name: "avg_power", num: 20, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            21 => Some(FieldReference { name: "max_power", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            22 => Some(FieldReference { name: "total_ascent", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            23 => Some(FieldReference { name: "total_descent", num: 23, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            24 => Some(FieldReference { name: "total_training_effect", num: 24, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, ..FR_DEF }),
            25 => Some(FieldReference { name: "first_lap_index", num: 25, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            26 => Some(FieldReference { name: "num_laps", num: 26, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            27 => Some(FieldReference { name: "event_group", num: 27, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            28 => Some(FieldReference { name: "trigger", num: 28, base_type: FitBaseType::ENUM, profile_type: ProfileType::SESSION_TRIGGER, ..FR_DEF }),
            29 => Some(FieldReference { name: "nec_lat", num: 29, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            30 => Some(FieldReference { name: "nec_long", num: 30, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            31 => Some(FieldReference { name: "swc_lat", num: 31, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            32 => Some(FieldReference { name: "swc_long", num: 32, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            33 => Some(FieldReference { name: "num_lengths", num: 33, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "lengths", ..FR_DEF }),
            34 => Some(FieldReference { name: "normalized_power", num: 34, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            35 => Some(FieldReference { name: "training_stress_score", num: 35, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "tss", ..FR_DEF }),
            36 => Some(FieldReference { name: "intensity_factor", num: 36, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "if", ..FR_DEF }),
            37 => Some(FieldReference { name: "left_right_balance", num: 37, base_type: FitBaseType::UINT16, profile_type: ProfileType::LEFT_RIGHT_BALANCE_100, ..FR_DEF }),
            38 => Some(FieldReference { name: "end_position_lat", num: 38, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            39 => Some(FieldReference { name: "end_position_long", num: 39, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            41 => Some(FieldReference { name: "avg_stroke_count", num: 41, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 10.0, units: "strokes/lap", ..FR_DEF }),
            42 => Some(FieldReference { name: "avg_stroke_distance", num: 42, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
            43 => Some(FieldReference { name: "swim_stroke", num: 43, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWIM_STROKE, units: "swim_stroke", ..FR_DEF }),
            44 => Some(FieldReference { name: "pool_length", num: 44, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
            45 => Some(FieldReference { name: "threshold_power", num: 45, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            46 => Some(FieldReference { name: "pool_length_unit", num: 46, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            47 => Some(FieldReference { name: "num_active_lengths", num: 47, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "lengths", ..FR_DEF }),
            48 => Some(FieldReference { name: "total_work", num: 48, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "J", ..FR_DEF }),
            49 => Some(FieldReference { name: "avg_altitude", num: 49, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 126 /* enhanced_avg_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            50 => Some(FieldReference { name: "max_altitude", num: 50, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 128 /* enhanced_max_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            51 => Some(FieldReference { name: "gps_accuracy", num: 51, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "m", ..FR_DEF }),
            52 => Some(FieldReference { name: "avg_grade", num: 52, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            53 => Some(FieldReference { name: "avg_pos_grade", num: 53, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            54 => Some(FieldReference { name: "avg_neg_grade", num: 54, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            55 => Some(FieldReference { name: "max_pos_grade", num: 55, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            56 => Some(FieldReference { name: "max_neg_grade", num: 56, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            57 => Some(FieldReference { name: "avg_temperature", num: 57, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            58 => Some(FieldReference { name: "max_temperature", num: 58, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            59 => Some(FieldReference { name: "total_moving_time", num: 59, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            60 => Some(FieldReference { name: "avg_pos_vertical_speed", num: 60, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            61 => Some(FieldReference { name: "avg_neg_vertical_speed", num: 61, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            62 => Some(FieldReference { name: "max_pos_vertical_speed", num: 62, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            63 => Some(FieldReference { name: "max_neg_vertical_speed", num: 63, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            64 => Some(FieldReference { name: "min_heart_rate", num: 64, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            65 => Some(FieldReference { name: "time_in_hr_zone", num: 65, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            66 => Some(FieldReference { name: "time_in_speed_zone", num: 66, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            67 => Some(FieldReference { name: "time_in_cadence_zone", num: 67, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            68 => Some(FieldReference { name: "time_in_power_zone", num: 68, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            69 => Some(FieldReference { name: "avg_lap_time", num: 69, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            70 => Some(FieldReference { name: "best_lap_index", num: 70, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            71 => Some(FieldReference { name: "min_altitude", num: 71, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 127 /* enhanced_min_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            82 => Some(FieldReference { name: "player_score", num: 82, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            83 => Some(FieldReference { name: "opponent_score", num: 83, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            84 => Some(FieldReference { name: "opponent_name", num: 84, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            85 => Some(FieldReference { name: "stroke_count", num: 85, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            86 => Some(FieldReference { name: "zone_count", num: 86, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            87 => Some(FieldReference { name: "max_ball_speed", num: 87, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m/s", ..FR_DEF }),
            88 => Some(FieldReference { name: "avg_ball_speed", num: 88, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m/s", ..FR_DEF }),
            89 => Some(FieldReference { name: "avg_vertical_oscillation", num: 89, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
            90 => Some(FieldReference { name: "avg_stance_time_percent", num: 90, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            91 => Some(FieldReference { name: "avg_stance_time", num: 91, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "ms", ..FR_DEF }),
            92 => Some(FieldReference { name: "avg_fractional_cadence", num: 92, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
            93 => Some(FieldReference { name: "max_fractional_cadence", num: 93, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
            94 => Some(FieldReference { name: "total_fractional_cycles", num: 94, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "cycles", ..FR_DEF }),
            95 => Some(FieldReference { name: "avg_total_hemoglobin_conc", num: 95, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 100.0, units: "g/dL", ..FR_DEF }),
            96 => Some(FieldReference { name: "min_total_hemoglobin_conc", num: 96, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 100.0, units: "g/dL", ..FR_DEF }),
            97 => Some(FieldReference { name: "max_total_hemoglobin_conc", num: 97, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 100.0, units: "g/dL", ..FR_DEF }),
            98 => Some(FieldReference { name: "avg_saturated_hemoglobin_percent", num: 98, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 10.0, units: "%", ..FR_DEF }),
            99 => Some(FieldReference { name: "min_saturated_hemoglobin_percent", num: 99, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 10.0, units: "%", ..FR_DEF }),
            100 => Some(FieldReference { name: "max_saturated_hemoglobin_percent", num: 100, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 10.0, units: "%", ..FR_DEF }),
            101 => Some(FieldReference { name: "avg_left_torque_effectiveness", num: 101, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            102 => Some(FieldReference { name: "avg_right_torque_effectiveness", num: 102, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            103 => Some(FieldReference { name: "avg_left_pedal_smoothness", num: 103, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            104 => Some(FieldReference { name: "avg_right_pedal_smoothness", num: 104, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            105 => Some(FieldReference { name: "avg_combined_pedal_smoothness", num: 105, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            110 => Some(FieldReference { name: "sport_profile_name", num: 110, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            111 => Some(FieldReference { name: "sport_index", num: 111, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            112 => Some(FieldReference { name: "time_standing", num: 112, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            113 => Some(FieldReference { name: "stand_count", num: 113, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            114 => Some(FieldReference { name: "avg_left_pco", num: 114, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
            115 => Some(FieldReference { name: "avg_right_pco", num: 115, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
            116 => Some(FieldReference { name: "avg_left_power_phase", num: 116, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            117 => Some(FieldReference { name: "avg_left_power_phase_peak", num: 117, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            118 => Some(FieldReference { name: "avg_right_power_phase", num: 118, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            119 => Some(FieldReference { name: "avg_right_power_phase_peak", num: 119, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            120 => Some(FieldReference { name: "avg_power_position", num: 120, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "watts", ..FR_DEF }),
            121 => Some(FieldReference { name: "max_power_position", num: 121, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "watts", ..FR_DEF }),
            122 => Some(FieldReference { name: "avg_cadence_position", num: 122, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "rpm", ..FR_DEF }),
            123 => Some(FieldReference { name: "max_cadence_position", num: 123, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "rpm", ..FR_DEF }),
            124 => Some(FieldReference { name: "enhanced_avg_speed", num: 124, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            125 => Some(FieldReference { name: "enhanced_max_speed", num: 125, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            126 => Some(FieldReference { name: "enhanced_avg_altitude", num: 126, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            127 => Some(FieldReference { name: "enhanced_min_altitude", num: 127, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            128 => Some(FieldReference { name: "enhanced_max_altitude", num: 128, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            129 => Some(FieldReference { name: "avg_lev_motor_power", num: 129, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            130 => Some(FieldReference { name: "max_lev_motor_power", num: 130, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            131 => Some(FieldReference { name: "lev_battery_consumption", num: 131, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            132 => Some(FieldReference { name: "avg_vertical_ratio", num: 132, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            133 => Some(FieldReference { name: "avg_stance_time_balance", num: 133, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            134 => Some(FieldReference { name: "avg_step_length", num: 134, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
            137 => Some(FieldReference { name: "total_anaerobic_training_effect", num: 137, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, ..FR_DEF }),
            139 => Some(FieldReference { name: "avg_vam", num: 139, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            140 => Some(FieldReference { name: "avg_depth", num: 140, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            141 => Some(FieldReference { name: "max_depth", num: 141, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            142 => Some(FieldReference { name: "surface_interval", num: 142, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            143 => Some(FieldReference { name: "start_cns", num: 143, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            144 => Some(FieldReference { name: "end_cns", num: 144, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            145 => Some(FieldReference { name: "start_n2", num: 145, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
            146 => Some(FieldReference { name: "end_n2", num: 146, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
            147 => Some(FieldReference { name: "avg_respiration_rate", num: 147, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
                    Component { field_num: 169 /* enhanced_avg_respiration_rate */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            148 => Some(FieldReference { name: "max_respiration_rate", num: 148, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
                    Component { field_num: 170 /* enhanced_max_respiration_rate */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            149 => Some(FieldReference { name: "min_respiration_rate", num: 149, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
                    Component { field_num: 180 /* enhanced_min_respiration_rate */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            150 => Some(FieldReference { name: "min_temperature", num: 150, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            155 => Some(FieldReference { name: "o2_toxicity", num: 155, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "OTUs", ..FR_DEF }),
            156 => Some(FieldReference { name: "dive_number", num: 156, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            168 => Some(FieldReference { name: "training_load_peak", num: 168, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 65536.0, ..FR_DEF }),
            169 => Some(FieldReference { name: "enhanced_avg_respiration_rate", num: 169, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
            170 => Some(FieldReference { name: "enhanced_max_respiration_rate", num: 170, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
            180 => Some(FieldReference { name: "enhanced_min_respiration_rate", num: 180, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
            181 => Some(FieldReference { name: "total_grit", num: 181, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
            182 => Some(FieldReference { name: "total_flow", num: 182, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
            183 => Some(FieldReference { name: "jump_count", num: 183, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            186 => Some(FieldReference { name: "avg_grit", num: 186, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
            187 => Some(FieldReference { name: "avg_flow", num: 187, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
            192 => Some(FieldReference { name: "workout_feel", num: 192, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            193 => Some(FieldReference { name: "workout_rpe", num: 193, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            194 => Some(FieldReference { name: "avg_spo2", num: 194, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            195 => Some(FieldReference { name: "avg_stress", num: 195, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            196 => Some(FieldReference { name: "metabolic_calories", num: 196, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            197 => Some(FieldReference { name: "sdrr_hrv", num: 197, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "mS", ..FR_DEF }),
            198 => Some(FieldReference { name: "rmssd_hrv", num: 198, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "mS", ..FR_DEF }),
            199 => Some(FieldReference { name: "total_fractional_ascent", num: 199, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
            200 => Some(FieldReference { name: "total_fractional_descent", num: 200, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
            208 => Some(FieldReference { name: "avg_core_temperature", num: 208, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
            209 => Some(FieldReference { name: "min_core_temperature", num: 209, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
            210 => Some(FieldReference { name: "max_core_temperature", num: 210, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::LAP => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
            1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
            2 => Some(FieldReference { name: "start_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            3 => Some(FieldReference { name: "start_position_lat", num: 3, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            4 => Some(FieldReference { name: "start_position_long", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            5 => Some(FieldReference { name: "end_position_lat", num: 5, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            6 => Some(FieldReference { name: "end_position_long", num: 6, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            7 => Some(FieldReference { name: "total_elapsed_time", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            8 => Some(FieldReference { name: "total_timer_time", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            9 => Some(FieldReference { name: "total_distance", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            10 => Some(FieldReference { name: "total_cycles", num: 10, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "cycles", sub_fields: &[
                    SubField { name: "total_strides", profile_type: ProfileType::UINT32, units: "strides", maps: &[
                        SubFieldMap { ref_field_num: 25 /* sport */, ref_field_value: 1 /* running */ },
                        SubFieldMap { ref_field_num: 25 /* sport */, ref_field_value: 11 /* walking */ },
                    ], ..SF_DEF },
                    SubField { name: "total_strokes", profile_type: ProfileType::UINT32, units: "strokes", maps: &[
                        SubFieldMap { ref_field_num: 25 /* sport */, ref_field_value: 2 /* cycling */ },
                        SubFieldMap { ref_field_num: 25 /* sport */, ref_field_value: 5 /* swimming */ },
                        SubFieldMap { ref_field_num: 25 /* sport */, ref_field_value: 15 /* rowing */ },
                        SubFieldMap { ref_field_num: 25 /* sport */, ref_field_value: 37 /* stand_up_paddleboarding */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            11 => Some(FieldReference { name: "total_calories", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            12 => Some(FieldReference { name: "total_fat_calories", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            13 => Some(FieldReference { name: "avg_speed", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
                    Component { field_num: 110 /* enhanced_avg_speed */, scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            14 => Some(FieldReference { name: "max_speed", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
                    Component { field_num: 111 /* enhanced_max_speed */, scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            15 => Some(FieldReference { name: "avg_heart_rate", num: 15, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            16 => Some(FieldReference { name: "max_heart_rate", num: 16, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            17 => Some(FieldReference { name: "avg_cadence", num: 17, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", sub_fields: &[
                    SubField { name: "avg_running_cadence", profile_type: ProfileType::UINT8, units: "strides/min", maps: &[
                        SubFieldMap { ref_field_num: 25 /* sport */, ref_field_value: 1 /* running */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            18 => Some(FieldReference { name: "max_cadence", num: 18, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", sub_fields: &[
                    SubField { name: "max_running_cadence", profile_type: ProfileType::UINT8, units: "strides/min", maps: &[
                        SubFieldMap { ref_field_num: 25 /* sport */, ref_field_value: 1 /* running */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            19 => Some(FieldReference { name: "avg_power", num: 19, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            20 => Some(FieldReference { name: "max_power", num: 20, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            21 => Some(FieldReference { name: "total_ascent", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            22 => Some(FieldReference { name: "total_descent", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            23 => Some(FieldReference { name: "intensity", num: 23, base_type: FitBaseType::ENUM, profile_type: ProfileType::INTENSITY, ..FR_DEF }),
            24 => Some(FieldReference { name: "lap_trigger", num: 24, base_type: FitBaseType::ENUM, profile_type: ProfileType::LAP_TRIGGER, ..FR_DEF }),
            25 => Some(FieldReference { name: "sport", num: 25, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            26 => Some(FieldReference { name: "event_group", num: 26, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            32 => Some(FieldReference { name: "num_lengths", num: 32, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "lengths", ..FR_DEF }),
            33 => Some(FieldReference { name: "normalized_power", num: 33, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            34 => Some(FieldReference { name: "left_right_balance", num: 34, base_type: FitBaseType::UINT16, profile_type: ProfileType::LEFT_RIGHT_BALANCE_100, ..FR_DEF }),
            35 => Some(FieldReference { name: "first_length_index", num: 35, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            37 => Some(FieldReference { name: "avg_stroke_distance", num: 37, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
            38 => Some(FieldReference { name: "swim_stroke", num: 38, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWIM_STROKE, ..FR_DEF }),
            39 => Some(FieldReference { name: "sub_sport", num: 39, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            40 => Some(FieldReference { name: "num_active_lengths", num: 40, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "lengths", ..FR_DEF }),
            41 => Some(FieldReference { name: "total_work", num: 41, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "J", ..FR_DEF }),
            42 => Some(FieldReference { name: "avg_altitude", num: 42, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 112 /* enhanced_avg_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            43 => Some(FieldReference { name: "max_altitude", num: 43, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 114 /* enhanced_max_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            44 => Some(FieldReference { name: "gps_accuracy", num: 44, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "m", ..FR_DEF }),
            45 => Some(FieldReference { name: "avg_grade", num: 45, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            46 => Some(FieldReference { name: "avg_pos_grade", num: 46, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            47 => Some(FieldReference { name: "avg_neg_grade", num: 47, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            48 => Some(FieldReference { name: "max_pos_grade", num: 48, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            49 => Some(FieldReference { name: "max_neg_grade", num: 49, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            50 => Some(FieldReference { name: "avg_temperature", num: 50, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            51 => Some(FieldReference { name: "max_temperature", num: 51, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            52 => Some(FieldReference { name: "total_moving_time", num: 52, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            53 => Some(FieldReference { name: "avg_pos_vertical_speed", num: 53, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            54 => Some(FieldReference { name: "avg_neg_vertical_speed", num: 54, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            55 => Some(FieldReference { name: "max_pos_vertical_speed", num: 55, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            56 => Some(FieldReference { name: "max_neg_vertical_speed", num: 56, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            57 => Some(FieldReference { name: "time_in_hr_zone", num: 57, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            58 => Some(FieldReference { name: "time_in_speed_zone", num: 58, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            59 => Some(FieldReference { name: "time_in_cadence_zone", num: 59, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            60 => Some(FieldReference { name: "time_in_power_zone", num: 60, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            61 => Some(FieldReference { name: "repetition_num", num: 61, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            62 => Some(FieldReference { name: "min_altitude", num: 62, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 113 /* enhanced_min_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            63 => Some(FieldReference { name: "min_heart_rate", num: 63, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            71 => Some(FieldReference { name: "wkt_step_index", num: 71, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            74 => Some(FieldReference { name: "opponent_score", num: 74, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            75 => Some(FieldReference { name: "stroke_count", num: 75, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            76 => Some(FieldReference { name: "zone_count", num: 76, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            77 => Some(FieldReference { name: "avg_vertical_oscillation", num: 77, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
            78 => Some(FieldReference { name: "avg_stance_time_percent", num: 78, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            79 => Some(FieldReference { name: "avg_stance_time", num: 79, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "ms", ..FR_DEF }),
            80 => Some(FieldReference { name: "avg_fractional_cadence", num: 80, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
            81 => Some(FieldReference { name: "max_fractional_cadence", num: 81, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
            82 => Some(FieldReference { name: "total_fractional_cycles", num: 82, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "cycles", ..FR_DEF }),
            83 => Some(FieldReference { name: "player_score", num: 83, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            84 => Some(FieldReference { name: "avg_total_hemoglobin_conc", num: 84, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 100.0, units: "g/dL", ..FR_DEF }),
            85 => Some(FieldReference { name: "min_total_hemoglobin_conc", num: 85, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 100.0, units: "g/dL", ..FR_DEF }),
            86 => Some(FieldReference { name: "max_total_hemoglobin_conc", num: 86, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 100.0, units: "g/dL", ..FR_DEF }),
            87 => Some(FieldReference { name: "avg_saturated_hemoglobin_percent", num: 87, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 10.0, units: "%", ..FR_DEF }),
            88 => Some(FieldReference { name: "min_saturated_hemoglobin_percent", num: 88, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 10.0, units: "%", ..FR_DEF }),
            89 => Some(FieldReference { name: "max_saturated_hemoglobin_percent", num: 89, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 10.0, units: "%", ..FR_DEF }),
            91 => Some(FieldReference { name: "avg_left_torque_effectiveness", num: 91, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            92 => Some(FieldReference { name: "avg_right_torque_effectiveness", num: 92, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            93 => Some(FieldReference { name: "avg_left_pedal_smoothness", num: 93, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            94 => Some(FieldReference { name: "avg_right_pedal_smoothness", num: 94, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            95 => Some(FieldReference { name: "avg_combined_pedal_smoothness", num: 95, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            98 => Some(FieldReference { name: "time_standing", num: 98, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            99 => Some(FieldReference { name: "stand_count", num: 99, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            100 => Some(FieldReference { name: "avg_left_pco", num: 100, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
            101 => Some(FieldReference { name: "avg_right_pco", num: 101, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
            102 => Some(FieldReference { name: "avg_left_power_phase", num: 102, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            103 => Some(FieldReference { name: "avg_left_power_phase_peak", num: 103, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            104 => Some(FieldReference { name: "avg_right_power_phase", num: 104, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            105 => Some(FieldReference { name: "avg_right_power_phase_peak", num: 105, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            106 => Some(FieldReference { name: "avg_power_position", num: 106, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "watts", ..FR_DEF }),
            107 => Some(FieldReference { name: "max_power_position", num: 107, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "watts", ..FR_DEF }),
            108 => Some(FieldReference { name: "avg_cadence_position", num: 108, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "rpm", ..FR_DEF }),
            109 => Some(FieldReference { name: "max_cadence_position", num: 109, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "rpm", ..FR_DEF }),
            110 => Some(FieldReference { name: "enhanced_avg_speed", num: 110, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            111 => Some(FieldReference { name: "enhanced_max_speed", num: 111, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            112 => Some(FieldReference { name: "enhanced_avg_altitude", num: 112, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            113 => Some(FieldReference { name: "enhanced_min_altitude", num: 113, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            114 => Some(FieldReference { name: "enhanced_max_altitude", num: 114, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            115 => Some(FieldReference { name: "avg_lev_motor_power", num: 115, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            116 => Some(FieldReference { name: "max_lev_motor_power", num: 116, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            117 => Some(FieldReference { name: "lev_battery_consumption", num: 117, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            118 => Some(FieldReference { name: "avg_vertical_ratio", num: 118, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            119 => Some(FieldReference { name: "avg_stance_time_balance", num: 119, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            120 => Some(FieldReference { name: "avg_step_length", num: 120, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
            121 => Some(FieldReference { name: "avg_vam", num: 121, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            122 => Some(FieldReference { name: "avg_depth", num: 122, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            123 => Some(FieldReference { name: "max_depth", num: 123, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            124 => Some(FieldReference { name: "min_temperature", num: 124, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            136 => Some(FieldReference { name: "enhanced_avg_respiration_rate", num: 136, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
            137 => Some(FieldReference { name: "enhanced_max_respiration_rate", num: 137, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
            147 => Some(FieldReference { name: "avg_respiration_rate", num: 147, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
                    Component { field_num: 136 /* enhanced_avg_respiration_rate */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            148 => Some(FieldReference { name: "max_respiration_rate", num: 148, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
                    Component { field_num: 137 /* enhanced_max_respiration_rate */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            149 => Some(FieldReference { name: "total_grit", num: 149, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
            150 => Some(FieldReference { name: "total_flow", num: 150, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
            151 => Some(FieldReference { name: "jump_count", num: 151, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            153 => Some(FieldReference { name: "avg_grit", num: 153, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
            154 => Some(FieldReference { name: "avg_flow", num: 154, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
            156 => Some(FieldReference { name: "total_fractional_ascent", num: 156, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
            157 => Some(FieldReference { name: "total_fractional_descent", num: 157, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
            158 => Some(FieldReference { name: "avg_core_temperature", num: 158, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
            159 => Some(FieldReference { name: "min_core_temperature", num: 159, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
            160 => Some(FieldReference { name: "max_core_temperature", num: 160, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::LENGTH => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
            1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
            2 => Some(FieldReference { name: "start_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            3 => Some(FieldReference { name: "total_elapsed_time", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            4 => Some(FieldReference { name: "total_timer_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            5 => Some(FieldReference { name: "total_strokes", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "strokes", ..FR_DEF }),
            6 => Some(FieldReference { name: "avg_speed", num: 6, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            7 => Some(FieldReference { name: "swim_stroke", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWIM_STROKE, units: "swim_stroke", ..FR_DEF }),
            9 => Some(FieldReference { name: "avg_swimming_cadence", num: 9, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "strokes/min", ..FR_DEF }),
            10 => Some(FieldReference { name: "event_group", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            11 => Some(FieldReference { name: "total_calories", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            12 => Some(FieldReference { name: "length_type", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::LENGTH_TYPE, ..FR_DEF }),
            18 => Some(FieldReference { name: "player_score", num: 18, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            19 => Some(FieldReference { name: "opponent_score", num: 19, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            20 => Some(FieldReference { name: "stroke_count", num: 20, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            21 => Some(FieldReference { name: "zone_count", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            22 => Some(FieldReference { name: "enhanced_avg_respiration_rate", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
            23 => Some(FieldReference { name: "enhanced_max_respiration_rate", num: 23, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
            24 => Some(FieldReference { name: "avg_respiration_rate", num: 24, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
                    Component { field_num: 22 /* enhanced_avg_respiration_rate */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            25 => Some(FieldReference { name: "max_respiration_rate", num: 25, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
                    Component { field_num: 23 /* enhanced_max_respiration_rate */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
           _ => None,
        }},
        MesgNum::RECORD => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "position_lat", num: 0, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            1 => Some(FieldReference { name: "position_long", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            2 => Some(FieldReference { name: "altitude", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 78 /* enhanced_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            3 => Some(FieldReference { name: "heart_rate", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            4 => Some(FieldReference { name: "cadence", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", ..FR_DEF }),
            5 => Some(FieldReference { name: "distance", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, accumulate: true, scale: 100.0, units: "m", ..FR_DEF }),
            6 => Some(FieldReference { name: "speed", num: 6, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
                    Component { field_num: 73 /* enhanced_speed */, scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            7 => Some(FieldReference { name: "power", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            8 => Some(FieldReference { name: "compressed_speed_distance", num: 8, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [3] */, units: "m/s,m", components: &[
                    Component { field_num: 6 /* speed */, scale: 100.0, offset: 0.0, accumulate: false, bits: 12 },
                    Component { field_num: 5 /* distance */, scale: 16.0, offset: 0.0, accumulate: true, bits: 12 }
                ], ..FR_DEF }),
            9 => Some(FieldReference { name: "grade", num: 9, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            10 => Some(FieldReference { name: "resistance", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            11 => Some(FieldReference { name: "time_from_course", num: 11, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            12 => Some(FieldReference { name: "cycle_length", num: 12, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
            13 => Some(FieldReference { name: "temperature", num: 13, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            17 => Some(FieldReference { name: "speed_1s", num: 17, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 16.0, units: "m/s", ..FR_DEF }),
            18 => Some(FieldReference { name: "cycles", num: 18, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, accumulate: true, units: "cycles", components: &[
                    Component { field_num: 19 /* total_cycles */, scale: 1.0, offset: 0.0, accumulate: true, bits: 8 }
                ], ..FR_DEF }),
            19 => Some(FieldReference { name: "total_cycles", num: 19, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, accumulate: true, units: "cycles", ..FR_DEF }),
            28 => Some(FieldReference { name: "compressed_accumulated_power", num: 28, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, accumulate: true, units: "watts", components: &[
                    Component { field_num: 29 /* accumulated_power */, scale: 1.0, offset: 0.0, accumulate: true, bits: 16 }
                ], ..FR_DEF }),
            29 => Some(FieldReference { name: "accumulated_power", num: 29, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, accumulate: true, units: "watts", ..FR_DEF }),
            30 => Some(FieldReference { name: "left_right_balance", num: 30, base_type: FitBaseType::UINT8, profile_type: ProfileType::LEFT_RIGHT_BALANCE, ..FR_DEF }),
            31 => Some(FieldReference { name: "gps_accuracy", num: 31, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "m", ..FR_DEF }),
            32 => Some(FieldReference { name: "vertical_speed", num: 32, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            33 => Some(FieldReference { name: "calories", num: 33, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            39 => Some(FieldReference { name: "vertical_oscillation", num: 39, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
            40 => Some(FieldReference { name: "stance_time_percent", num: 40, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            41 => Some(FieldReference { name: "stance_time", num: 41, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "ms", ..FR_DEF }),
            42 => Some(FieldReference { name: "activity_type", num: 42, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_TYPE, ..FR_DEF }),
            43 => Some(FieldReference { name: "left_torque_effectiveness", num: 43, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            44 => Some(FieldReference { name: "right_torque_effectiveness", num: 44, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            45 => Some(FieldReference { name: "left_pedal_smoothness", num: 45, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            46 => Some(FieldReference { name: "right_pedal_smoothness", num: 46, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            47 => Some(FieldReference { name: "combined_pedal_smoothness", num: 47, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            48 => Some(FieldReference { name: "time128", num: 48, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "s", ..FR_DEF }),
            49 => Some(FieldReference { name: "stroke_type", num: 49, base_type: FitBaseType::ENUM, profile_type: ProfileType::STROKE_TYPE, ..FR_DEF }),
            50 => Some(FieldReference { name: "zone", num: 50, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            51 => Some(FieldReference { name: "ball_speed", num: 51, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m/s", ..FR_DEF }),
            52 => Some(FieldReference { name: "cadence256", num: 52, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 256.0, units: "rpm", ..FR_DEF }),
            53 => Some(FieldReference { name: "fractional_cadence", num: 53, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
            54 => Some(FieldReference { name: "total_hemoglobin_conc", num: 54, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "g/dL", ..FR_DEF }),
            55 => Some(FieldReference { name: "total_hemoglobin_conc_min", num: 55, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "g/dL", ..FR_DEF }),
            56 => Some(FieldReference { name: "total_hemoglobin_conc_max", num: 56, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "g/dL", ..FR_DEF }),
            57 => Some(FieldReference { name: "saturated_hemoglobin_percent", num: 57, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
            58 => Some(FieldReference { name: "saturated_hemoglobin_percent_min", num: 58, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
            59 => Some(FieldReference { name: "saturated_hemoglobin_percent_max", num: 59, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
            62 => Some(FieldReference { name: "device_index", num: 62, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
            67 => Some(FieldReference { name: "left_pco", num: 67, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
            68 => Some(FieldReference { name: "right_pco", num: 68, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
            69 => Some(FieldReference { name: "left_power_phase", num: 69, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            70 => Some(FieldReference { name: "left_power_phase_peak", num: 70, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            71 => Some(FieldReference { name: "right_power_phase", num: 71, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            72 => Some(FieldReference { name: "right_power_phase_peak", num: 72, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            73 => Some(FieldReference { name: "enhanced_speed", num: 73, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            78 => Some(FieldReference { name: "enhanced_altitude", num: 78, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            81 => Some(FieldReference { name: "battery_soc", num: 81, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            82 => Some(FieldReference { name: "motor_power", num: 82, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            83 => Some(FieldReference { name: "vertical_ratio", num: 83, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            84 => Some(FieldReference { name: "stance_time_balance", num: 84, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
            85 => Some(FieldReference { name: "step_length", num: 85, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
            87 => Some(FieldReference { name: "cycle_length16", num: 87, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
            91 => Some(FieldReference { name: "absolute_pressure", num: 91, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "Pa", ..FR_DEF }),
            92 => Some(FieldReference { name: "depth", num: 92, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            93 => Some(FieldReference { name: "next_stop_depth", num: 93, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            94 => Some(FieldReference { name: "next_stop_time", num: 94, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            95 => Some(FieldReference { name: "time_to_surface", num: 95, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            96 => Some(FieldReference { name: "ndl_time", num: 96, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            97 => Some(FieldReference { name: "cns_load", num: 97, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            98 => Some(FieldReference { name: "n2_load", num: 98, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
            99 => Some(FieldReference { name: "respiration_rate", num: 99, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "s", components: &[
                    Component { field_num: 108 /* enhanced_respiration_rate */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            108 => Some(FieldReference { name: "enhanced_respiration_rate", num: 108, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
            114 => Some(FieldReference { name: "grit", num: 114, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
            115 => Some(FieldReference { name: "flow", num: 115, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
            116 => Some(FieldReference { name: "current_stress", num: 116, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
            117 => Some(FieldReference { name: "ebike_travel_range", num: 117, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "km", ..FR_DEF }),
            118 => Some(FieldReference { name: "ebike_battery_level", num: 118, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            119 => Some(FieldReference { name: "ebike_assist_mode", num: 119, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "depends on sensor", ..FR_DEF }),
            120 => Some(FieldReference { name: "ebike_assist_level_percent", num: 120, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            123 => Some(FieldReference { name: "air_time_remaining", num: 123, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            124 => Some(FieldReference { name: "pressure_sac", num: 124, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar/min", ..FR_DEF }),
            125 => Some(FieldReference { name: "volume_sac", num: 125, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "L/min", ..FR_DEF }),
            126 => Some(FieldReference { name: "rmv", num: 126, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "L/min", ..FR_DEF }),
            127 => Some(FieldReference { name: "ascent_rate", num: 127, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            129 => Some(FieldReference { name: "po2", num: 129, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
            139 => Some(FieldReference { name: "core_temperature", num: 139, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::EVENT => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
            1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
            2 => Some(FieldReference { name: "data16", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, components: &[
                    Component { field_num: 3 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            3 => Some(FieldReference { name: "data", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "timer_trigger", profile_type: ProfileType::TIMER_TRIGGER, maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 0 /* timer */ },
                    ], ..SF_DEF },
                    SubField { name: "course_point_index", profile_type: ProfileType::MESSAGE_INDEX, maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 10 /* course_point */ },
                    ], ..SF_DEF },
                    SubField { name: "battery_level", profile_type: ProfileType::UINT16, scale: 1000.0, units: "V", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 11 /* battery */ },
                    ], ..SF_DEF },
                    SubField { name: "virtual_partner_speed", profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 12 /* virtual_partner_pace */ },
                    ], ..SF_DEF },
                    SubField { name: "hr_high_alert", profile_type: ProfileType::UINT8, units: "bpm", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 13 /* hr_high_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "hr_low_alert", profile_type: ProfileType::UINT8, units: "bpm", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 14 /* hr_low_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "speed_high_alert", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 15 /* speed_high_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "speed_low_alert", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 16 /* speed_low_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "cad_high_alert", profile_type: ProfileType::UINT16, units: "rpm", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 17 /* cad_high_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "cad_low_alert", profile_type: ProfileType::UINT16, units: "rpm", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 18 /* cad_low_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "power_high_alert", profile_type: ProfileType::UINT16, units: "watts", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 19 /* power_high_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "power_low_alert", profile_type: ProfileType::UINT16, units: "watts", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 20 /* power_low_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "time_duration_alert", profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 23 /* time_duration_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "distance_duration_alert", profile_type: ProfileType::UINT32, scale: 100.0, units: "m", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 24 /* distance_duration_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "calorie_duration_alert", profile_type: ProfileType::UINT32, units: "calories", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 25 /* calorie_duration_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "fitness_equipment_state", profile_type: ProfileType::FITNESS_EQUIPMENT_STATE, maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 27 /* fitness_equipment */ },
                    ], ..SF_DEF },
                    SubField { name: "sport_point", profile_type: ProfileType::UINT32, components: &[
                        Component { field_num: 7 /* score */, scale: 1.0, offset: 0.0, accumulate: false, bits: 16 },
                        Component { field_num: 8 /* opponent_score */, scale: 1.0, offset: 0.0, accumulate: false, bits: 16 }
                    ], maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 33 /* sport_point */ },
                    ], ..SF_DEF },
                    SubField { name: "gear_change_data", profile_type: ProfileType::UINT32, components: &[
                        Component { field_num: 11 /* rear_gear_num */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                        Component { field_num: 12 /* rear_gear */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                        Component { field_num: 9 /* front_gear_num */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                        Component { field_num: 10 /* front_gear */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                    ], maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 42 /* front_gear_change */ },
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 43 /* rear_gear_change */ },
                    ], ..SF_DEF },
                    SubField { name: "rider_position", profile_type: ProfileType::RIDER_POSITION_TYPE, maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 44 /* rider_position_change */ },
                    ], ..SF_DEF },
                    SubField { name: "comm_timeout", profile_type: ProfileType::COMM_TIMEOUT_TYPE, maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 47 /* comm_timeout */ },
                    ], ..SF_DEF },
                    SubField { name: "dive_alert", profile_type: ProfileType::DIVE_ALERT, maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 56 /* dive_alert */ },
                    ], ..SF_DEF },
                    SubField { name: "auto_activity_detect_duration", profile_type: ProfileType::UINT16, units: "min", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 54 /* auto_activity_detect */ },
                    ], ..SF_DEF },
                    SubField { name: "radar_threat_alert", profile_type: ProfileType::UINT32, components: &[
                        Component { field_num: 21 /* radar_threat_level_max */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                        Component { field_num: 22 /* radar_threat_count */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                        Component { field_num: 23 /* radar_threat_avg_approach_speed */, scale: 10.0, offset: 0.0, accumulate: false, bits: 8 },
                        Component { field_num: 24 /* radar_threat_max_approach_speed */, scale: 10.0, offset: 0.0, accumulate: false, bits: 8 }
                    ], maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 75 /* radar_threat_alert */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            4 => Some(FieldReference { name: "event_group", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            7 => Some(FieldReference { name: "score", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            8 => Some(FieldReference { name: "opponent_score", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            9 => Some(FieldReference { name: "front_gear_num", num: 9, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            10 => Some(FieldReference { name: "front_gear", num: 10, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            11 => Some(FieldReference { name: "rear_gear_num", num: 11, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            12 => Some(FieldReference { name: "rear_gear", num: 12, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            13 => Some(FieldReference { name: "device_index", num: 13, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
            14 => Some(FieldReference { name: "activity_type", num: 14, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_TYPE, ..FR_DEF }),
            15 => Some(FieldReference { name: "start_timestamp", num: 15, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", sub_fields: &[
                    SubField { name: "auto_activity_detect_start_timestamp", profile_type: ProfileType::DATE_TIME, units: "s", maps: &[
                        SubFieldMap { ref_field_num: 0 /* event */, ref_field_value: 54 /* auto_activity_detect */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            21 => Some(FieldReference { name: "radar_threat_level_max", num: 21, base_type: FitBaseType::ENUM, profile_type: ProfileType::RADAR_THREAT_LEVEL_TYPE, ..FR_DEF }),
            22 => Some(FieldReference { name: "radar_threat_count", num: 22, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            23 => Some(FieldReference { name: "radar_threat_avg_approach_speed", num: 23, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, units: "m/s", ..FR_DEF }),
            24 => Some(FieldReference { name: "radar_threat_max_approach_speed", num: 24, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, units: "m/s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DEVICE_INFO => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "device_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "device_type", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, sub_fields: &[
                    SubField { name: "ble_device_type", profile_type: ProfileType::BLE_DEVICE_TYPE, maps: &[
                        SubFieldMap { ref_field_num: 25 /* source_type */, ref_field_value: 3 /* bluetooth_low_energy */ },
                    ], ..SF_DEF },
                    SubField { name: "antplus_device_type", profile_type: ProfileType::ANTPLUS_DEVICE_TYPE, maps: &[
                        SubFieldMap { ref_field_num: 25 /* source_type */, ref_field_value: 1 /* antplus */ },
                    ], ..SF_DEF },
                    SubField { name: "ant_device_type", profile_type: ProfileType::UINT8, maps: &[
                        SubFieldMap { ref_field_num: 25 /* source_type */, ref_field_value: 0 /* ant */ },
                    ], ..SF_DEF },
                    SubField { name: "local_device_type", profile_type: ProfileType::LOCAL_DEVICE_TYPE, maps: &[
                        SubFieldMap { ref_field_num: 25 /* source_type */, ref_field_value: 5 /* local */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            2 => Some(FieldReference { name: "manufacturer", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
            3 => Some(FieldReference { name: "serial_number", num: 3, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::UINT32Z, ..FR_DEF }),
            4 => Some(FieldReference { name: "product", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
                    SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 2 /* manufacturer */, ref_field_value: 263 /* favero_electronics */ },
                    ], ..SF_DEF },
                    SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 2 /* manufacturer */, ref_field_value: 1 /* garmin */ },
                        SubFieldMap { ref_field_num: 2 /* manufacturer */, ref_field_value: 15 /* dynastream */ },
                        SubFieldMap { ref_field_num: 2 /* manufacturer */, ref_field_value: 13 /* dynastream_oem */ },
                        SubFieldMap { ref_field_num: 2 /* manufacturer */, ref_field_value: 89 /* tacx */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            5 => Some(FieldReference { name: "software_version", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
            6 => Some(FieldReference { name: "hardware_version", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            7 => Some(FieldReference { name: "cum_operating_time", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            10 => Some(FieldReference { name: "battery_voltage", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 256.0, units: "V", ..FR_DEF }),
            11 => Some(FieldReference { name: "battery_status", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::BATTERY_STATUS, ..FR_DEF }),
            18 => Some(FieldReference { name: "sensor_position", num: 18, base_type: FitBaseType::ENUM, profile_type: ProfileType::BODY_LOCATION, ..FR_DEF }),
            19 => Some(FieldReference { name: "descriptor", num: 19, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            20 => Some(FieldReference { name: "ant_transmission_type", num: 20, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            21 => Some(FieldReference { name: "ant_device_number", num: 21, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
            22 => Some(FieldReference { name: "ant_network", num: 22, base_type: FitBaseType::ENUM, profile_type: ProfileType::ANT_NETWORK, ..FR_DEF }),
            25 => Some(FieldReference { name: "source_type", num: 25, base_type: FitBaseType::ENUM, profile_type: ProfileType::SOURCE_TYPE, ..FR_DEF }),
            27 => Some(FieldReference { name: "product_name", num: 27, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            32 => Some(FieldReference { name: "battery_level", num: 32, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "%", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DEVICE_AUX_BATTERY_INFO => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "device_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "battery_voltage", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 256.0, units: "V", ..FR_DEF }),
            2 => Some(FieldReference { name: "battery_status", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::BATTERY_STATUS, ..FR_DEF }),
            3 => Some(FieldReference { name: "battery_identifier", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::TRAINING_FILE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
            1 => Some(FieldReference { name: "manufacturer", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
            2 => Some(FieldReference { name: "product", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
                    SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 263 /* favero_electronics */ },
                    ], ..SF_DEF },
                    SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 1 /* garmin */ },
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 15 /* dynastream */ },
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 13 /* dynastream_oem */ },
                        SubFieldMap { ref_field_num: 1 /* manufacturer */, ref_field_value: 89 /* tacx */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            3 => Some(FieldReference { name: "serial_number", num: 3, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::UINT32Z, ..FR_DEF }),
            4 => Some(FieldReference { name: "time_created", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::WEATHER_CONDITIONS => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "weather_report", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::WEATHER_REPORT, ..FR_DEF }),
            1 => Some(FieldReference { name: "temperature", num: 1, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            2 => Some(FieldReference { name: "condition", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::WEATHER_STATUS, ..FR_DEF }),
            3 => Some(FieldReference { name: "wind_direction", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "degrees", ..FR_DEF }),
            4 => Some(FieldReference { name: "wind_speed", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            5 => Some(FieldReference { name: "precipitation_probability", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            6 => Some(FieldReference { name: "temperature_feels_like", num: 6, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            7 => Some(FieldReference { name: "relative_humidity", num: 7, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            8 => Some(FieldReference { name: "location", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            9 => Some(FieldReference { name: "observed_at_time", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            10 => Some(FieldReference { name: "observed_location_lat", num: 10, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            11 => Some(FieldReference { name: "observed_location_long", num: 11, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            12 => Some(FieldReference { name: "day_of_week", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::DAY_OF_WEEK, ..FR_DEF }),
            13 => Some(FieldReference { name: "high_temperature", num: 13, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            14 => Some(FieldReference { name: "low_temperature", num: 14, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::WEATHER_ALERT => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "report_id", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            1 => Some(FieldReference { name: "issue_time", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            2 => Some(FieldReference { name: "expire_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            3 => Some(FieldReference { name: "severity", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::WEATHER_SEVERITY, ..FR_DEF }),
            4 => Some(FieldReference { name: "type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::WEATHER_SEVERE_TYPE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::GPS_METADATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "position_lat", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            2 => Some(FieldReference { name: "position_long", num: 2, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            3 => Some(FieldReference { name: "enhanced_altitude", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            4 => Some(FieldReference { name: "enhanced_speed", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            5 => Some(FieldReference { name: "heading", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "degrees", ..FR_DEF }),
            6 => Some(FieldReference { name: "utc_timestamp", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            7 => Some(FieldReference { name: "velocity", num: 7, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [3] */, scale: 100.0, units: "m/s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::CAMERA_EVENT => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "camera_event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::CAMERA_EVENT_TYPE, ..FR_DEF }),
            2 => Some(FieldReference { name: "camera_file_uuid", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            3 => Some(FieldReference { name: "camera_orientation", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::CAMERA_ORIENTATION_TYPE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::GYROSCOPE_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "sample_time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "ms", ..FR_DEF }),
            2 => Some(FieldReference { name: "gyro_x", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            3 => Some(FieldReference { name: "gyro_y", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            4 => Some(FieldReference { name: "gyro_z", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            5 => Some(FieldReference { name: "calibrated_gyro_x", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "deg/s", ..FR_DEF }),
            6 => Some(FieldReference { name: "calibrated_gyro_y", num: 6, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "deg/s", ..FR_DEF }),
            7 => Some(FieldReference { name: "calibrated_gyro_z", num: 7, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "deg/s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::ACCELEROMETER_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "sample_time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "ms", ..FR_DEF }),
            2 => Some(FieldReference { name: "accel_x", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            3 => Some(FieldReference { name: "accel_y", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            4 => Some(FieldReference { name: "accel_z", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            5 => Some(FieldReference { name: "calibrated_accel_x", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "g", ..FR_DEF }),
            6 => Some(FieldReference { name: "calibrated_accel_y", num: 6, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "g", ..FR_DEF }),
            7 => Some(FieldReference { name: "calibrated_accel_z", num: 7, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "g", ..FR_DEF }),
            8 => Some(FieldReference { name: "compressed_calibrated_accel_x", num: 8, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, units: "mG", ..FR_DEF }),
            9 => Some(FieldReference { name: "compressed_calibrated_accel_y", num: 9, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, units: "mG", ..FR_DEF }),
            10 => Some(FieldReference { name: "compressed_calibrated_accel_z", num: 10, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, units: "mG", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::MAGNETOMETER_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "sample_time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "ms", ..FR_DEF }),
            2 => Some(FieldReference { name: "mag_x", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            3 => Some(FieldReference { name: "mag_y", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            4 => Some(FieldReference { name: "mag_z", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "counts", ..FR_DEF }),
            5 => Some(FieldReference { name: "calibrated_mag_x", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "G", ..FR_DEF }),
            6 => Some(FieldReference { name: "calibrated_mag_y", num: 6, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "G", ..FR_DEF }),
            7 => Some(FieldReference { name: "calibrated_mag_z", num: 7, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true /* [N] */, units: "G", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::BAROMETER_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "sample_time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "ms", ..FR_DEF }),
            2 => Some(FieldReference { name: "baro_pres", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, units: "Pa", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::THREE_D_SENSOR_CALIBRATION => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "sensor_type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SENSOR_TYPE, ..FR_DEF }),
            1 => Some(FieldReference { name: "calibration_factor", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "accel_cal_factor", profile_type: ProfileType::UINT32, units: "g", maps: &[
                        SubFieldMap { ref_field_num: 0 /* sensor_type */, ref_field_value: 0 /* accelerometer */ },
                    ], ..SF_DEF },
                    SubField { name: "gyro_cal_factor", profile_type: ProfileType::UINT32, units: "deg/s", maps: &[
                        SubFieldMap { ref_field_num: 0 /* sensor_type */, ref_field_value: 1 /* gyroscope */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            2 => Some(FieldReference { name: "calibration_divisor", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "counts", ..FR_DEF }),
            3 => Some(FieldReference { name: "level_shift", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            4 => Some(FieldReference { name: "offset_cal", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, array: true /* [3] */, ..FR_DEF }),
            5 => Some(FieldReference { name: "orientation_matrix", num: 5, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, array: true /* [9] */, scale: 65535.0, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::ONE_D_SENSOR_CALIBRATION => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "sensor_type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SENSOR_TYPE, ..FR_DEF }),
            1 => Some(FieldReference { name: "calibration_factor", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "baro_cal_factor", profile_type: ProfileType::UINT32, units: "Pa", maps: &[
                        SubFieldMap { ref_field_num: 0 /* sensor_type */, ref_field_value: 3 /* barometer */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            2 => Some(FieldReference { name: "calibration_divisor", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "counts", ..FR_DEF }),
            3 => Some(FieldReference { name: "level_shift", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            4 => Some(FieldReference { name: "offset_cal", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::VIDEO_FRAME => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "frame_number", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::OBDII_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "ms", ..FR_DEF }),
            2 => Some(FieldReference { name: "pid", num: 2, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, ..FR_DEF }),
            3 => Some(FieldReference { name: "raw_data", num: 3, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, ..FR_DEF }),
            4 => Some(FieldReference { name: "pid_data_size", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, ..FR_DEF }),
            5 => Some(FieldReference { name: "system_time", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, ..FR_DEF }),
            6 => Some(FieldReference { name: "start_timestamp", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            7 => Some(FieldReference { name: "start_timestamp_ms", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::NMEA_SENTENCE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "sentence", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::AVIATION_ATTITUDE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "system_time", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, units: "ms", ..FR_DEF }),
            2 => Some(FieldReference { name: "pitch", num: 2, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 10430.38, units: "radians", ..FR_DEF }),
            3 => Some(FieldReference { name: "roll", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 10430.38, units: "radians", ..FR_DEF }),
            4 => Some(FieldReference { name: "accel_lateral", num: 4, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 100.0, units: "m/s^2", ..FR_DEF }),
            5 => Some(FieldReference { name: "accel_normal", num: 5, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 100.0, units: "m/s^2", ..FR_DEF }),
            6 => Some(FieldReference { name: "turn_rate", num: 6, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 1024.0, units: "radians/second", ..FR_DEF }),
            7 => Some(FieldReference { name: "stage", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::ATTITUDE_STAGE, array: true /* [N] */, ..FR_DEF }),
            8 => Some(FieldReference { name: "attitude_stage_complete", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "%", ..FR_DEF }),
            9 => Some(FieldReference { name: "track", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 10430.38, units: "radians", ..FR_DEF }),
            10 => Some(FieldReference { name: "validity", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::ATTITUDE_VALIDITY, array: true /* [N] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::VIDEO => { match field_num {
            0 => Some(FieldReference { name: "url", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            1 => Some(FieldReference { name: "hosting_provider", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            2 => Some(FieldReference { name: "duration", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "ms", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::VIDEO_TITLE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "message_count", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            1 => Some(FieldReference { name: "text", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::VIDEO_DESCRIPTION => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "message_count", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            1 => Some(FieldReference { name: "text", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::VIDEO_CLIP => { match field_num {
            0 => Some(FieldReference { name: "clip_number", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            1 => Some(FieldReference { name: "start_timestamp", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            2 => Some(FieldReference { name: "start_timestamp_ms", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            3 => Some(FieldReference { name: "end_timestamp", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            4 => Some(FieldReference { name: "end_timestamp_ms", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            6 => Some(FieldReference { name: "clip_start", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "ms", ..FR_DEF }),
            7 => Some(FieldReference { name: "clip_end", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "ms", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SET => { match field_num {
            254 => Some(FieldReference { name: "timestamp", num: 254, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "duration", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            3 => Some(FieldReference { name: "repetitions", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            4 => Some(FieldReference { name: "weight", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 16.0, units: "kg", ..FR_DEF }),
            5 => Some(FieldReference { name: "set_type", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::SET_TYPE, ..FR_DEF }),
            6 => Some(FieldReference { name: "start_time", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            7 => Some(FieldReference { name: "category", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::EXERCISE_CATEGORY, array: true /* [N] */, ..FR_DEF }),
            8 => Some(FieldReference { name: "category_subtype", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, ..FR_DEF }),
            9 => Some(FieldReference { name: "weight_display_unit", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::FIT_BASE_UNIT, ..FR_DEF }),
            10 => Some(FieldReference { name: "message_index", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            11 => Some(FieldReference { name: "wkt_step_index", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::JUMP => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "distance", num: 0, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "m", ..FR_DEF }),
            1 => Some(FieldReference { name: "height", num: 1, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "m", ..FR_DEF }),
            2 => Some(FieldReference { name: "rotations", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            3 => Some(FieldReference { name: "hang_time", num: 3, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "s", ..FR_DEF }),
            4 => Some(FieldReference { name: "score", num: 4, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
            5 => Some(FieldReference { name: "position_lat", num: 5, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            6 => Some(FieldReference { name: "position_long", num: 6, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            7 => Some(FieldReference { name: "speed", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
                    Component { field_num: 8 /* enhanced_speed */, scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            8 => Some(FieldReference { name: "enhanced_speed", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SPLIT => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "split_type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPLIT_TYPE, ..FR_DEF }),
            1 => Some(FieldReference { name: "total_elapsed_time", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            2 => Some(FieldReference { name: "total_timer_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            3 => Some(FieldReference { name: "total_distance", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            4 => Some(FieldReference { name: "avg_speed", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            9 => Some(FieldReference { name: "start_time", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            13 => Some(FieldReference { name: "total_ascent", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            14 => Some(FieldReference { name: "total_descent", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            21 => Some(FieldReference { name: "start_position_lat", num: 21, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            22 => Some(FieldReference { name: "start_position_long", num: 22, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            23 => Some(FieldReference { name: "end_position_lat", num: 23, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            24 => Some(FieldReference { name: "end_position_long", num: 24, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            25 => Some(FieldReference { name: "max_speed", num: 25, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            26 => Some(FieldReference { name: "avg_vert_speed", num: 26, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            27 => Some(FieldReference { name: "end_time", num: 27, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            28 => Some(FieldReference { name: "total_calories", num: 28, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "kcal", ..FR_DEF }),
            74 => Some(FieldReference { name: "start_elevation", num: 74, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            110 => Some(FieldReference { name: "total_moving_time", num: 110, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SPLIT_SUMMARY => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "split_type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPLIT_TYPE, ..FR_DEF }),
            3 => Some(FieldReference { name: "num_splits", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            4 => Some(FieldReference { name: "total_timer_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            5 => Some(FieldReference { name: "total_distance", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            6 => Some(FieldReference { name: "avg_speed", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            7 => Some(FieldReference { name: "max_speed", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            8 => Some(FieldReference { name: "total_ascent", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            9 => Some(FieldReference { name: "total_descent", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            10 => Some(FieldReference { name: "avg_heart_rate", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            11 => Some(FieldReference { name: "max_heart_rate", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            12 => Some(FieldReference { name: "avg_vert_speed", num: 12, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            13 => Some(FieldReference { name: "total_calories", num: 13, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "kcal", ..FR_DEF }),
            77 => Some(FieldReference { name: "total_moving_time", num: 77, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::CLIMB_PRO => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "position_lat", num: 0, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            1 => Some(FieldReference { name: "position_long", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            2 => Some(FieldReference { name: "climb_pro_event", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::CLIMB_PRO_EVENT, ..FR_DEF }),
            3 => Some(FieldReference { name: "climb_number", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            4 => Some(FieldReference { name: "climb_category", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            5 => Some(FieldReference { name: "current_dist", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "m", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::FIELD_DESCRIPTION => { match field_num {
            0 => Some(FieldReference { name: "developer_data_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            1 => Some(FieldReference { name: "field_definition_number", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            2 => Some(FieldReference { name: "fit_base_type_id", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::FIT_BASE_TYPE, ..FR_DEF }),
            3 => Some(FieldReference { name: "field_name", num: 3, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true /* [N] */, ..FR_DEF }),
            4 => Some(FieldReference { name: "array", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            5 => Some(FieldReference { name: "components", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            6 => Some(FieldReference { name: "scale", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            7 => Some(FieldReference { name: "offset", num: 7, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, ..FR_DEF }),
            8 => Some(FieldReference { name: "units", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true /* [N] */, ..FR_DEF }),
            9 => Some(FieldReference { name: "bits", num: 9, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            10 => Some(FieldReference { name: "accumulate", num: 10, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            13 => Some(FieldReference { name: "fit_base_unit_id", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::FIT_BASE_UNIT, ..FR_DEF }),
            14 => Some(FieldReference { name: "native_mesg_num", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
            15 => Some(FieldReference { name: "native_field_num", num: 15, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DEVELOPER_DATA_ID => { match field_num {
            0 => Some(FieldReference { name: "developer_id", num: 0, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, ..FR_DEF }),
            1 => Some(FieldReference { name: "application_id", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, ..FR_DEF }),
            2 => Some(FieldReference { name: "manufacturer_id", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
            3 => Some(FieldReference { name: "developer_data_index", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            4 => Some(FieldReference { name: "application_version", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::COURSE => { match field_num {
            4 => Some(FieldReference { name: "sport", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            5 => Some(FieldReference { name: "name", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            6 => Some(FieldReference { name: "capabilities", num: 6, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::COURSE_CAPABILITIES, ..FR_DEF }),
            7 => Some(FieldReference { name: "sub_sport", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::COURSE_POINT => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "timestamp", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            2 => Some(FieldReference { name: "position_lat", num: 2, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            3 => Some(FieldReference { name: "position_long", num: 3, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            4 => Some(FieldReference { name: "distance", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            5 => Some(FieldReference { name: "type", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::COURSE_POINT, ..FR_DEF }),
            6 => Some(FieldReference { name: "name", num: 6, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            8 => Some(FieldReference { name: "favorite", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SEGMENT_ID => { match field_num {
            0 => Some(FieldReference { name: "name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            1 => Some(FieldReference { name: "uuid", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            2 => Some(FieldReference { name: "sport", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            3 => Some(FieldReference { name: "enabled", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            4 => Some(FieldReference { name: "user_profile_primary_key", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            5 => Some(FieldReference { name: "device_id", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            6 => Some(FieldReference { name: "default_race_leader", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            7 => Some(FieldReference { name: "delete_status", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_DELETE_STATUS, ..FR_DEF }),
            8 => Some(FieldReference { name: "selection_type", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_SELECTION_TYPE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SEGMENT_LEADERBOARD_ENTRY => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            1 => Some(FieldReference { name: "type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_LEADERBOARD_TYPE, ..FR_DEF }),
            2 => Some(FieldReference { name: "group_primary_key", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            3 => Some(FieldReference { name: "activity_id", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            4 => Some(FieldReference { name: "segment_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            5 => Some(FieldReference { name: "activity_id_string", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SEGMENT_POINT => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "position_lat", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            2 => Some(FieldReference { name: "position_long", num: 2, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            3 => Some(FieldReference { name: "distance", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            4 => Some(FieldReference { name: "altitude", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 6 /* enhanced_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            5 => Some(FieldReference { name: "leader_time", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            6 => Some(FieldReference { name: "enhanced_altitude", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SEGMENT_LAP => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
            1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
            2 => Some(FieldReference { name: "start_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            3 => Some(FieldReference { name: "start_position_lat", num: 3, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            4 => Some(FieldReference { name: "start_position_long", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            5 => Some(FieldReference { name: "end_position_lat", num: 5, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            6 => Some(FieldReference { name: "end_position_long", num: 6, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            7 => Some(FieldReference { name: "total_elapsed_time", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            8 => Some(FieldReference { name: "total_timer_time", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            9 => Some(FieldReference { name: "total_distance", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            10 => Some(FieldReference { name: "total_cycles", num: 10, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "cycles", sub_fields: &[
                    SubField { name: "total_strokes", profile_type: ProfileType::UINT32, units: "strokes", maps: &[
                        SubFieldMap { ref_field_num: 23 /* sport */, ref_field_value: 2 /* cycling */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            11 => Some(FieldReference { name: "total_calories", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            12 => Some(FieldReference { name: "total_fat_calories", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            13 => Some(FieldReference { name: "avg_speed", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            14 => Some(FieldReference { name: "max_speed", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            15 => Some(FieldReference { name: "avg_heart_rate", num: 15, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            16 => Some(FieldReference { name: "max_heart_rate", num: 16, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            17 => Some(FieldReference { name: "avg_cadence", num: 17, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", ..FR_DEF }),
            18 => Some(FieldReference { name: "max_cadence", num: 18, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", ..FR_DEF }),
            19 => Some(FieldReference { name: "avg_power", num: 19, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            20 => Some(FieldReference { name: "max_power", num: 20, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            21 => Some(FieldReference { name: "total_ascent", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            22 => Some(FieldReference { name: "total_descent", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
            23 => Some(FieldReference { name: "sport", num: 23, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            24 => Some(FieldReference { name: "event_group", num: 24, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            25 => Some(FieldReference { name: "nec_lat", num: 25, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            26 => Some(FieldReference { name: "nec_long", num: 26, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            27 => Some(FieldReference { name: "swc_lat", num: 27, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            28 => Some(FieldReference { name: "swc_long", num: 28, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
            29 => Some(FieldReference { name: "name", num: 29, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            30 => Some(FieldReference { name: "normalized_power", num: 30, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
            31 => Some(FieldReference { name: "left_right_balance", num: 31, base_type: FitBaseType::UINT16, profile_type: ProfileType::LEFT_RIGHT_BALANCE_100, ..FR_DEF }),
            32 => Some(FieldReference { name: "sub_sport", num: 32, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            33 => Some(FieldReference { name: "total_work", num: 33, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "J", ..FR_DEF }),
            34 => Some(FieldReference { name: "avg_altitude", num: 34, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 91 /* enhanced_avg_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            35 => Some(FieldReference { name: "max_altitude", num: 35, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 92 /* enhanced_max_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            36 => Some(FieldReference { name: "gps_accuracy", num: 36, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "m", ..FR_DEF }),
            37 => Some(FieldReference { name: "avg_grade", num: 37, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            38 => Some(FieldReference { name: "avg_pos_grade", num: 38, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            39 => Some(FieldReference { name: "avg_neg_grade", num: 39, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            40 => Some(FieldReference { name: "max_pos_grade", num: 40, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            41 => Some(FieldReference { name: "max_neg_grade", num: 41, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
            42 => Some(FieldReference { name: "avg_temperature", num: 42, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            43 => Some(FieldReference { name: "max_temperature", num: 43, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
            44 => Some(FieldReference { name: "total_moving_time", num: 44, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            45 => Some(FieldReference { name: "avg_pos_vertical_speed", num: 45, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            46 => Some(FieldReference { name: "avg_neg_vertical_speed", num: 46, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            47 => Some(FieldReference { name: "max_pos_vertical_speed", num: 47, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            48 => Some(FieldReference { name: "max_neg_vertical_speed", num: 48, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
            49 => Some(FieldReference { name: "time_in_hr_zone", num: 49, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            50 => Some(FieldReference { name: "time_in_speed_zone", num: 50, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            51 => Some(FieldReference { name: "time_in_cadence_zone", num: 51, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            52 => Some(FieldReference { name: "time_in_power_zone", num: 52, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
            53 => Some(FieldReference { name: "repetition_num", num: 53, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            54 => Some(FieldReference { name: "min_altitude", num: 54, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
                    Component { field_num: 93 /* enhanced_min_altitude */, scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
                ], ..FR_DEF }),
            55 => Some(FieldReference { name: "min_heart_rate", num: 55, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            56 => Some(FieldReference { name: "active_time", num: 56, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            57 => Some(FieldReference { name: "wkt_step_index", num: 57, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            58 => Some(FieldReference { name: "sport_event", num: 58, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT_EVENT, ..FR_DEF }),
            59 => Some(FieldReference { name: "avg_left_torque_effectiveness", num: 59, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            60 => Some(FieldReference { name: "avg_right_torque_effectiveness", num: 60, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            61 => Some(FieldReference { name: "avg_left_pedal_smoothness", num: 61, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            62 => Some(FieldReference { name: "avg_right_pedal_smoothness", num: 62, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            63 => Some(FieldReference { name: "avg_combined_pedal_smoothness", num: 63, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
            64 => Some(FieldReference { name: "status", num: 64, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_LAP_STATUS, ..FR_DEF }),
            65 => Some(FieldReference { name: "uuid", num: 65, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            66 => Some(FieldReference { name: "avg_fractional_cadence", num: 66, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
            67 => Some(FieldReference { name: "max_fractional_cadence", num: 67, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
            68 => Some(FieldReference { name: "total_fractional_cycles", num: 68, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "cycles", ..FR_DEF }),
            69 => Some(FieldReference { name: "front_gear_shift_count", num: 69, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            70 => Some(FieldReference { name: "rear_gear_shift_count", num: 70, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            71 => Some(FieldReference { name: "time_standing", num: 71, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            72 => Some(FieldReference { name: "stand_count", num: 72, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            73 => Some(FieldReference { name: "avg_left_pco", num: 73, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
            74 => Some(FieldReference { name: "avg_right_pco", num: 74, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
            75 => Some(FieldReference { name: "avg_left_power_phase", num: 75, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            76 => Some(FieldReference { name: "avg_left_power_phase_peak", num: 76, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            77 => Some(FieldReference { name: "avg_right_power_phase", num: 77, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            78 => Some(FieldReference { name: "avg_right_power_phase_peak", num: 78, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, scale: 0.7111111, units: "degrees", ..FR_DEF }),
            79 => Some(FieldReference { name: "avg_power_position", num: 79, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "watts", ..FR_DEF }),
            80 => Some(FieldReference { name: "max_power_position", num: 80, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "watts", ..FR_DEF }),
            81 => Some(FieldReference { name: "avg_cadence_position", num: 81, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "rpm", ..FR_DEF }),
            82 => Some(FieldReference { name: "max_cadence_position", num: 82, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "rpm", ..FR_DEF }),
            83 => Some(FieldReference { name: "manufacturer", num: 83, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
            84 => Some(FieldReference { name: "total_grit", num: 84, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
            85 => Some(FieldReference { name: "total_flow", num: 85, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
            86 => Some(FieldReference { name: "avg_grit", num: 86, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
            87 => Some(FieldReference { name: "avg_flow", num: 87, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
            89 => Some(FieldReference { name: "total_fractional_ascent", num: 89, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
            90 => Some(FieldReference { name: "total_fractional_descent", num: 90, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
            91 => Some(FieldReference { name: "enhanced_avg_altitude", num: 91, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            92 => Some(FieldReference { name: "enhanced_max_altitude", num: 92, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
            93 => Some(FieldReference { name: "enhanced_min_altitude", num: 93, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SEGMENT_FILE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "file_uuid", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            3 => Some(FieldReference { name: "enabled", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            4 => Some(FieldReference { name: "user_profile_primary_key", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            7 => Some(FieldReference { name: "leader_type", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_LEADERBOARD_TYPE, array: true /* [N] */, ..FR_DEF }),
            8 => Some(FieldReference { name: "leader_group_primary_key", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, ..FR_DEF }),
            9 => Some(FieldReference { name: "leader_activity_id", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, ..FR_DEF }),
            10 => Some(FieldReference { name: "leader_activity_id_string", num: 10, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true /* [N] */, ..FR_DEF }),
            11 => Some(FieldReference { name: "default_race_leader", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::WORKOUT => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            4 => Some(FieldReference { name: "sport", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            5 => Some(FieldReference { name: "capabilities", num: 5, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::WORKOUT_CAPABILITIES, ..FR_DEF }),
            6 => Some(FieldReference { name: "num_valid_steps", num: 6, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            8 => Some(FieldReference { name: "wkt_name", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            11 => Some(FieldReference { name: "sub_sport", num: 11, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            14 => Some(FieldReference { name: "pool_length", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
            15 => Some(FieldReference { name: "pool_length_unit", num: 15, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
            17 => Some(FieldReference { name: "wkt_description", num: 17, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::WORKOUT_SESSION => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "sport", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            1 => Some(FieldReference { name: "sub_sport", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            2 => Some(FieldReference { name: "num_valid_steps", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            3 => Some(FieldReference { name: "first_step_index", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            4 => Some(FieldReference { name: "pool_length", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
            5 => Some(FieldReference { name: "pool_length_unit", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::WORKOUT_STEP => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "wkt_step_name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            1 => Some(FieldReference { name: "duration_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::WKT_STEP_DURATION, ..FR_DEF }),
            2 => Some(FieldReference { name: "duration_value", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "duration_time", profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 0 /* time */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 28 /* repetition_time */ },
                    ], ..SF_DEF },
                    SubField { name: "duration_distance", profile_type: ProfileType::UINT32, scale: 100.0, units: "m", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 1 /* distance */ },
                    ], ..SF_DEF },
                    SubField { name: "duration_hr", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 2 /* hr_less_than */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 3 /* hr_greater_than */ },
                    ], ..SF_DEF },
                    SubField { name: "duration_calories", profile_type: ProfileType::UINT32, units: "calories", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 4 /* calories */ },
                    ], ..SF_DEF },
                    SubField { name: "duration_step", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 6 /* repeat_until_steps_cmplt */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 7 /* repeat_until_time */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 8 /* repeat_until_distance */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 9 /* repeat_until_calories */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 10 /* repeat_until_hr_less_than */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 11 /* repeat_until_hr_greater_than */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 12 /* repeat_until_power_less_than */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 13 /* repeat_until_power_greater_than */ },
                    ], ..SF_DEF },
                    SubField { name: "duration_power", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 14 /* power_less_than */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 15 /* power_greater_than */ },
                    ], ..SF_DEF },
                    SubField { name: "duration_reps", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 29 /* reps */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            3 => Some(FieldReference { name: "target_type", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::WKT_STEP_TARGET, ..FR_DEF }),
            4 => Some(FieldReference { name: "target_value", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "target_speed_zone", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 0 /* speed */ },
                    ], ..SF_DEF },
                    SubField { name: "target_hr_zone", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 1 /* heart_rate */ },
                    ], ..SF_DEF },
                    SubField { name: "target_cadence_zone", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 3 /* cadence */ },
                    ], ..SF_DEF },
                    SubField { name: "target_power_zone", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 4 /* power */ },
                    ], ..SF_DEF },
                    SubField { name: "repeat_steps", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 6 /* repeat_until_steps_cmplt */ },
                    ], ..SF_DEF },
                    SubField { name: "repeat_time", profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 7 /* repeat_until_time */ },
                    ], ..SF_DEF },
                    SubField { name: "repeat_distance", profile_type: ProfileType::UINT32, scale: 100.0, units: "m", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 8 /* repeat_until_distance */ },
                    ], ..SF_DEF },
                    SubField { name: "repeat_calories", profile_type: ProfileType::UINT32, units: "calories", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 9 /* repeat_until_calories */ },
                    ], ..SF_DEF },
                    SubField { name: "repeat_hr", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 10 /* repeat_until_hr_less_than */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 11 /* repeat_until_hr_greater_than */ },
                    ], ..SF_DEF },
                    SubField { name: "repeat_power", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 12 /* repeat_until_power_less_than */ },
                        SubFieldMap { ref_field_num: 1 /* duration_type */, ref_field_value: 13 /* repeat_until_power_greater_than */ },
                    ], ..SF_DEF },
                    SubField { name: "target_stroke_type", profile_type: ProfileType::SWIM_STROKE, maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 11 /* swim_stroke */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            5 => Some(FieldReference { name: "custom_target_value_low", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "custom_target_speed_low", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 0 /* speed */ },
                    ], ..SF_DEF },
                    SubField { name: "custom_target_heart_rate_low", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 1 /* heart_rate */ },
                    ], ..SF_DEF },
                    SubField { name: "custom_target_cadence_low", profile_type: ProfileType::UINT32, units: "rpm", maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 3 /* cadence */ },
                    ], ..SF_DEF },
                    SubField { name: "custom_target_power_low", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 4 /* power */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            6 => Some(FieldReference { name: "custom_target_value_high", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "custom_target_speed_high", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 0 /* speed */ },
                    ], ..SF_DEF },
                    SubField { name: "custom_target_heart_rate_high", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 1 /* heart_rate */ },
                    ], ..SF_DEF },
                    SubField { name: "custom_target_cadence_high", profile_type: ProfileType::UINT32, units: "rpm", maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 3 /* cadence */ },
                    ], ..SF_DEF },
                    SubField { name: "custom_target_power_high", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
                        SubFieldMap { ref_field_num: 3 /* target_type */, ref_field_value: 4 /* power */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            7 => Some(FieldReference { name: "intensity", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::INTENSITY, ..FR_DEF }),
            8 => Some(FieldReference { name: "notes", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
            9 => Some(FieldReference { name: "equipment", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::WORKOUT_EQUIPMENT, ..FR_DEF }),
            10 => Some(FieldReference { name: "exercise_category", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::EXERCISE_CATEGORY, ..FR_DEF }),
            11 => Some(FieldReference { name: "exercise_name", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            12 => Some(FieldReference { name: "exercise_weight", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "kg", ..FR_DEF }),
            13 => Some(FieldReference { name: "weight_display_unit", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::FIT_BASE_UNIT, ..FR_DEF }),
            19 => Some(FieldReference { name: "secondary_target_type", num: 19, base_type: FitBaseType::ENUM, profile_type: ProfileType::WKT_STEP_TARGET, ..FR_DEF }),
            20 => Some(FieldReference { name: "secondary_target_value", num: 20, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "secondary_target_speed_zone", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 0 /* speed */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_target_hr_zone", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 1 /* heart_rate */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_target_cadence_zone", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 3 /* cadence */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_target_power_zone", profile_type: ProfileType::UINT32, maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 4 /* power */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_target_stroke_type", profile_type: ProfileType::SWIM_STROKE, maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 11 /* swim_stroke */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            21 => Some(FieldReference { name: "secondary_custom_target_value_low", num: 21, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "secondary_custom_target_speed_low", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 0 /* speed */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_custom_target_heart_rate_low", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 1 /* heart_rate */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_custom_target_cadence_low", profile_type: ProfileType::UINT32, units: "rpm", maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 3 /* cadence */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_custom_target_power_low", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 4 /* power */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            22 => Some(FieldReference { name: "secondary_custom_target_value_high", num: 22, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
                    SubField { name: "secondary_custom_target_speed_high", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 0 /* speed */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_custom_target_heart_rate_high", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 1 /* heart_rate */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_custom_target_cadence_high", profile_type: ProfileType::UINT32, units: "rpm", maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 3 /* cadence */ },
                    ], ..SF_DEF },
                    SubField { name: "secondary_custom_target_power_high", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
                        SubFieldMap { ref_field_num: 19 /* secondary_target_type */, ref_field_value: 4 /* power */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
           _ => None,
        }},
        MesgNum::EXERCISE_TITLE => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            0 => Some(FieldReference { name: "exercise_category", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::EXERCISE_CATEGORY, ..FR_DEF }),
            1 => Some(FieldReference { name: "exercise_name", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            2 => Some(FieldReference { name: "wkt_step_name", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true /* [N] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SCHEDULE => { match field_num {
            0 => Some(FieldReference { name: "manufacturer", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
            1 => Some(FieldReference { name: "product", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
                    SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 263 /* favero_electronics */ },
                    ], ..SF_DEF },
                    SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 1 /* garmin */ },
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 15 /* dynastream */ },
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 13 /* dynastream_oem */ },
                        SubFieldMap { ref_field_num: 0 /* manufacturer */, ref_field_value: 89 /* tacx */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            2 => Some(FieldReference { name: "serial_number", num: 2, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::UINT32Z, ..FR_DEF }),
            3 => Some(FieldReference { name: "time_created", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            4 => Some(FieldReference { name: "completed", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            5 => Some(FieldReference { name: "type", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SCHEDULE, ..FR_DEF }),
            6 => Some(FieldReference { name: "scheduled_time", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::TOTALS => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timer_time", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "distance", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "m", ..FR_DEF }),
            2 => Some(FieldReference { name: "calories", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "kcal", ..FR_DEF }),
            3 => Some(FieldReference { name: "sport", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            4 => Some(FieldReference { name: "elapsed_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            5 => Some(FieldReference { name: "sessions", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            6 => Some(FieldReference { name: "active_time", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            9 => Some(FieldReference { name: "sport_index", num: 9, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::WEIGHT_SCALE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "weight", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::WEIGHT, scale: 100.0, units: "kg", ..FR_DEF }),
            1 => Some(FieldReference { name: "percent_fat", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "%", ..FR_DEF }),
            2 => Some(FieldReference { name: "percent_hydration", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "%", ..FR_DEF }),
            3 => Some(FieldReference { name: "visceral_fat_mass", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "kg", ..FR_DEF }),
            4 => Some(FieldReference { name: "bone_mass", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "kg", ..FR_DEF }),
            5 => Some(FieldReference { name: "muscle_mass", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "kg", ..FR_DEF }),
            7 => Some(FieldReference { name: "basal_met", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 4.0, units: "kcal/day", ..FR_DEF }),
            8 => Some(FieldReference { name: "physique_rating", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            9 => Some(FieldReference { name: "active_met", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 4.0, units: "kcal/day", ..FR_DEF }),
            10 => Some(FieldReference { name: "metabolic_age", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "years", ..FR_DEF }),
            11 => Some(FieldReference { name: "visceral_fat_rating", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            12 => Some(FieldReference { name: "user_profile_index", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            13 => Some(FieldReference { name: "bmi", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "kg/m^2", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::BLOOD_PRESSURE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "systolic_pressure", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
            1 => Some(FieldReference { name: "diastolic_pressure", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
            2 => Some(FieldReference { name: "mean_arterial_pressure", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
            3 => Some(FieldReference { name: "map_3_sample_mean", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
            4 => Some(FieldReference { name: "map_morning_values", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
            5 => Some(FieldReference { name: "map_evening_values", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
            6 => Some(FieldReference { name: "heart_rate", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            7 => Some(FieldReference { name: "heart_rate_type", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::HR_TYPE, ..FR_DEF }),
            8 => Some(FieldReference { name: "status", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BP_STATUS, ..FR_DEF }),
            9 => Some(FieldReference { name: "user_profile_index", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::MONITORING_INFO => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "local_timestamp", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "activity_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_TYPE, array: true /* [N] */, ..FR_DEF }),
            3 => Some(FieldReference { name: "cycles_to_distance", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 5000.0, units: "m/cycle", ..FR_DEF }),
            4 => Some(FieldReference { name: "cycles_to_calories", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 5000.0, units: "kcal/cycle", ..FR_DEF }),
            5 => Some(FieldReference { name: "resting_metabolic_rate", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal / day", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::MONITORING => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "device_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
            1 => Some(FieldReference { name: "calories", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            2 => Some(FieldReference { name: "distance", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
            3 => Some(FieldReference { name: "cycles", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 2.0, units: "cycles", sub_fields: &[
                    SubField { name: "steps", profile_type: ProfileType::UINT32, units: "steps", maps: &[
                        SubFieldMap { ref_field_num: 5 /* activity_type */, ref_field_value: 6 /* walking */ },
                        SubFieldMap { ref_field_num: 5 /* activity_type */, ref_field_value: 1 /* running */ },
                    ], ..SF_DEF },
                    SubField { name: "strokes", profile_type: ProfileType::UINT32, scale: 2.0, units: "strokes", maps: &[
                        SubFieldMap { ref_field_num: 5 /* activity_type */, ref_field_value: 2 /* cycling */ },
                        SubFieldMap { ref_field_num: 5 /* activity_type */, ref_field_value: 5 /* swimming */ },
                    ], ..SF_DEF }
                ], ..FR_DEF }),
            4 => Some(FieldReference { name: "active_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            5 => Some(FieldReference { name: "activity_type", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_TYPE, ..FR_DEF }),
            6 => Some(FieldReference { name: "activity_subtype", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_SUBTYPE, ..FR_DEF }),
            7 => Some(FieldReference { name: "activity_level", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_LEVEL, ..FR_DEF }),
            8 => Some(FieldReference { name: "distance_16", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "100 * m", ..FR_DEF }),
            9 => Some(FieldReference { name: "cycles_16", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "2 * cycles (steps)", ..FR_DEF }),
            10 => Some(FieldReference { name: "active_time_16", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            11 => Some(FieldReference { name: "local_timestamp", num: 11, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, ..FR_DEF }),
            12 => Some(FieldReference { name: "temperature", num: 12, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "C", ..FR_DEF }),
            14 => Some(FieldReference { name: "temperature_min", num: 14, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "C", ..FR_DEF }),
            15 => Some(FieldReference { name: "temperature_max", num: 15, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "C", ..FR_DEF }),
            16 => Some(FieldReference { name: "activity_time", num: 16, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [8] */, units: "minutes", ..FR_DEF }),
            19 => Some(FieldReference { name: "active_calories", num: 19, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
            24 => Some(FieldReference { name: "current_activity_type_intensity", num: 24, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, components: &[
                    Component { field_num: 5 /* activity_type */, scale: 1.0, offset: 0.0, accumulate: false, bits: 5 },
                    Component { field_num: 28 /* intensity */, scale: 1.0, offset: 0.0, accumulate: false, bits: 3 }
                ], ..FR_DEF }),
            25 => Some(FieldReference { name: "timestamp_min_8", num: 25, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "min", ..FR_DEF }),
            26 => Some(FieldReference { name: "timestamp_16", num: 26, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            27 => Some(FieldReference { name: "heart_rate", num: 27, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            28 => Some(FieldReference { name: "intensity", num: 28, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, ..FR_DEF }),
            29 => Some(FieldReference { name: "duration_min", num: 29, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "min", ..FR_DEF }),
            30 => Some(FieldReference { name: "duration", num: 30, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            31 => Some(FieldReference { name: "ascent", num: 31, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            32 => Some(FieldReference { name: "descent", num: 32, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            33 => Some(FieldReference { name: "moderate_activity_minutes", num: 33, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "minutes", ..FR_DEF }),
            34 => Some(FieldReference { name: "vigorous_activity_minutes", num: 34, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "minutes", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::MONITORING_HR_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "resting_heart_rate", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
            1 => Some(FieldReference { name: "current_day_resting_heart_rate", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SPO2_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "reading_spo2", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            1 => Some(FieldReference { name: "reading_confidence", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            2 => Some(FieldReference { name: "mode", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPO2_MEASUREMENT_TYPE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HR => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "fractional_timestamp", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "time256", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 256.0, units: "s", components: &[
                    Component { field_num: 0 /* fractional_timestamp */, scale: 256.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            6 => Some(FieldReference { name: "filtered_bpm", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "bpm", ..FR_DEF }),
            9 => Some(FieldReference { name: "event_timestamp", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, accumulate: true, scale: 1024.0, units: "s", ..FR_DEF }),
            10 => Some(FieldReference { name: "event_timestamp_12", num: 10, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, accumulate: true, units: "s", components: &[
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
                    Component { field_num: 9 /* event_timestamp */, scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 }
                ], ..FR_DEF }),
           _ => None,
        }},
        MesgNum::STRESS_LEVEL => { match field_num {
            0 => Some(FieldReference { name: "stress_level_value", num: 0, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, ..FR_DEF }),
            1 => Some(FieldReference { name: "stress_level_time", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::MAX_MET_DATA => { match field_num {
            0 => Some(FieldReference { name: "update_time", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            2 => Some(FieldReference { name: "vo2_max", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mL/kg/min", ..FR_DEF }),
            5 => Some(FieldReference { name: "sport", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
            6 => Some(FieldReference { name: "sub_sport", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
            8 => Some(FieldReference { name: "max_met_category", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::MAX_MET_CATEGORY, ..FR_DEF }),
            9 => Some(FieldReference { name: "calibrated_data", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            12 => Some(FieldReference { name: "hr_source", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::MAX_MET_HEART_RATE_SOURCE, ..FR_DEF }),
            13 => Some(FieldReference { name: "speed_source", num: 13, base_type: FitBaseType::ENUM, profile_type: ProfileType::MAX_MET_SPEED_SOURCE, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_BODY_BATTERY_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "level", num: 1, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, array: true /* [N] */, units: "percent", ..FR_DEF }),
            2 => Some(FieldReference { name: "charged", num: 2, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, ..FR_DEF }),
            3 => Some(FieldReference { name: "uncharged", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_EVENT => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "event_id", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_ACCELEROMETER_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "sampling_interval", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            2 => Some(FieldReference { name: "accel_x", num: 2, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 1.024, units: "mG", ..FR_DEF }),
            3 => Some(FieldReference { name: "accel_y", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 1.024, units: "mG", ..FR_DEF }),
            4 => Some(FieldReference { name: "accel_z", num: 4, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 1.024, units: "mG", ..FR_DEF }),
            5 => Some(FieldReference { name: "timestamp_32k", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_GYROSCOPE_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "sampling_interval", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "1/32768 s", ..FR_DEF }),
            2 => Some(FieldReference { name: "gyro_x", num: 2, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 28.57143, units: "deg/s", ..FR_DEF }),
            3 => Some(FieldReference { name: "gyro_y", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 28.57143, units: "deg/s", ..FR_DEF }),
            4 => Some(FieldReference { name: "gyro_z", num: 4, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 28.57143, units: "deg/s", ..FR_DEF }),
            5 => Some(FieldReference { name: "timestamp_32k", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "1/32768 s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_STEP_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "steps", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true /* [N] */, units: "steps", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_SPO2_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "reading_spo2", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "percent", ..FR_DEF }),
            2 => Some(FieldReference { name: "confidence", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_STRESS_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "stress_level", num: 1, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, array: true /* [N] */, units: "s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_RESPIRATION_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "respiration_rate", num: 1, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true /* [N] */, scale: 100.0, units: "breaths/min", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_HEART_RATE_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "status", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            2 => Some(FieldReference { name: "heart_rate", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, units: "bpm", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_CONFIGURATION_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "data", num: 0, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, ..FR_DEF }),
            1 => Some(FieldReference { name: "data_size", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HSA_WRIST_TEMPERATURE_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "value", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 1000.0, units: "degC", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::MEMO_GLOB => { match field_num {
            250 => Some(FieldReference { name: "part_index", num: 250, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            0 => Some(FieldReference { name: "memo", num: 0, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, ..FR_DEF }),
            1 => Some(FieldReference { name: "mesg_num", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
            2 => Some(FieldReference { name: "parent_index", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            3 => Some(FieldReference { name: "field_num", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            4 => Some(FieldReference { name: "data", num: 4, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, array: true /* [N] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SLEEP_LEVEL => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "sleep_level", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SLEEP_LEVEL, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::ANT_CHANNEL_ID => { match field_num {
            0 => Some(FieldReference { name: "channel_number", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            1 => Some(FieldReference { name: "device_type", num: 1, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            2 => Some(FieldReference { name: "device_number", num: 2, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
            3 => Some(FieldReference { name: "transmission_type", num: 3, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
            4 => Some(FieldReference { name: "device_index", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::ANT_RX => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "fractional_timestamp", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "mesg_id", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, ..FR_DEF }),
            2 => Some(FieldReference { name: "mesg_data", num: 2, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, components: &[
                    Component { field_num: 3 /* channel_number */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            3 => Some(FieldReference { name: "channel_number", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            4 => Some(FieldReference { name: "data", num: 4, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::ANT_TX => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "fractional_timestamp", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "mesg_id", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, ..FR_DEF }),
            2 => Some(FieldReference { name: "mesg_data", num: 2, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, components: &[
                    Component { field_num: 3 /* channel_number */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
                    Component { field_num: 4 /* data */, scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
                ], ..FR_DEF }),
            3 => Some(FieldReference { name: "channel_number", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            4 => Some(FieldReference { name: "data", num: 4, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true /* [N] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::EXD_SCREEN_CONFIGURATION => { match field_num {
            0 => Some(FieldReference { name: "screen_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            1 => Some(FieldReference { name: "field_count", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            2 => Some(FieldReference { name: "layout", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_LAYOUT, ..FR_DEF }),
            3 => Some(FieldReference { name: "screen_enabled", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::EXD_DATA_FIELD_CONFIGURATION => { match field_num {
            0 => Some(FieldReference { name: "screen_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            1 => Some(FieldReference { name: "concept_field", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, components: &[
                    Component { field_num: 2 /* field_id */, scale: 1.0, offset: 0.0, accumulate: false, bits: 4 },
                    Component { field_num: 3 /* concept_count */, scale: 1.0, offset: 0.0, accumulate: false, bits: 4 }
                ], ..FR_DEF }),
            2 => Some(FieldReference { name: "field_id", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            3 => Some(FieldReference { name: "concept_count", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            4 => Some(FieldReference { name: "display_type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_DISPLAY_TYPE, ..FR_DEF }),
            5 => Some(FieldReference { name: "title", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true /* [32] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::EXD_DATA_CONCEPT_CONFIGURATION => { match field_num {
            0 => Some(FieldReference { name: "screen_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            1 => Some(FieldReference { name: "concept_field", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, components: &[
                    Component { field_num: 2 /* field_id */, scale: 1.0, offset: 0.0, accumulate: false, bits: 4 },
                    Component { field_num: 3 /* concept_index */, scale: 1.0, offset: 0.0, accumulate: false, bits: 4 }
                ], ..FR_DEF }),
            2 => Some(FieldReference { name: "field_id", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            3 => Some(FieldReference { name: "concept_index", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            4 => Some(FieldReference { name: "data_page", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            5 => Some(FieldReference { name: "concept_key", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            6 => Some(FieldReference { name: "scaling", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            8 => Some(FieldReference { name: "data_units", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_DATA_UNITS, ..FR_DEF }),
            9 => Some(FieldReference { name: "qualifier", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_QUALIFIERS, ..FR_DEF }),
            10 => Some(FieldReference { name: "descriptor", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_DESCRIPTORS, ..FR_DEF }),
            11 => Some(FieldReference { name: "is_signed", num: 11, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::DIVE_SUMMARY => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "reference_mesg", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
            1 => Some(FieldReference { name: "reference_index", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            2 => Some(FieldReference { name: "avg_depth", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            3 => Some(FieldReference { name: "max_depth", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
            4 => Some(FieldReference { name: "surface_interval", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
            5 => Some(FieldReference { name: "start_cns", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            6 => Some(FieldReference { name: "end_cns", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
            7 => Some(FieldReference { name: "start_n2", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
            8 => Some(FieldReference { name: "end_n2", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
            9 => Some(FieldReference { name: "o2_toxicity", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "OTUs", ..FR_DEF }),
            10 => Some(FieldReference { name: "dive_number", num: 10, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            11 => Some(FieldReference { name: "bottom_time", num: 11, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            12 => Some(FieldReference { name: "avg_pressure_sac", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar/min", ..FR_DEF }),
            13 => Some(FieldReference { name: "avg_volume_sac", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "L/min", ..FR_DEF }),
            14 => Some(FieldReference { name: "avg_rmv", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "L/min", ..FR_DEF }),
            15 => Some(FieldReference { name: "descent_time", num: 15, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            16 => Some(FieldReference { name: "ascent_time", num: 16, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
            17 => Some(FieldReference { name: "avg_ascent_rate", num: 17, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            22 => Some(FieldReference { name: "avg_descent_rate", num: 22, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            23 => Some(FieldReference { name: "max_ascent_rate", num: 23, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            24 => Some(FieldReference { name: "max_descent_rate", num: 24, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            25 => Some(FieldReference { name: "hang_time", num: 25, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::AAD_ACCEL_FEATURES => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "time", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
            1 => Some(FieldReference { name: "energy_total", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
            2 => Some(FieldReference { name: "zero_cross_cnt", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            3 => Some(FieldReference { name: "instance", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            4 => Some(FieldReference { name: "time_above_threshold", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 25.0, units: "s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HRV => { match field_num {
            0 => Some(FieldReference { name: "time", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, scale: 1000.0, units: "s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::BEAT_INTERVALS => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "time", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "ms", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HRV_STATUS_SUMMARY => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "weekly_average", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "last_night_average", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
            2 => Some(FieldReference { name: "last_night_5_min_high", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
            3 => Some(FieldReference { name: "baseline_low_upper", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
            4 => Some(FieldReference { name: "baseline_balanced_lower", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
            5 => Some(FieldReference { name: "baseline_balanced_upper", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
            6 => Some(FieldReference { name: "status", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::HRV_STATUS, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::HRV_VALUE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "value", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::RAW_BBI => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
            1 => Some(FieldReference { name: "data", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, components: &[
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 2 /* time */, scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
                    Component { field_num: 3 /* quality */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
                    Component { field_num: 4 /* gap */, scale: 1.0, offset: 0.0, accumulate: false, bits: 1 }
                ], ..FR_DEF }),
            2 => Some(FieldReference { name: "time", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true /* [N] */, units: "ms", ..FR_DEF }),
            3 => Some(FieldReference { name: "quality", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, ..FR_DEF }),
            4 => Some(FieldReference { name: "gap", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true /* [N] */, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::RESPIRATION_RATE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "respiration_rate", num: 0, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "breaths/min", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::CHRONO_SHOT_SESSION => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "min_speed", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            1 => Some(FieldReference { name: "max_speed", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            2 => Some(FieldReference { name: "avg_speed", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            3 => Some(FieldReference { name: "shot_count", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
            4 => Some(FieldReference { name: "projectile_type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::PROJECTILE_TYPE, ..FR_DEF }),
            5 => Some(FieldReference { name: "grain_weight", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 10.0, units: "gr", ..FR_DEF }),
            6 => Some(FieldReference { name: "standard_deviation", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::CHRONO_SHOT_DATA => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "shot_speed", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
            1 => Some(FieldReference { name: "shot_num", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::TANK_UPDATE => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "sensor", num: 0, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::ANT_CHANNEL_ID, ..FR_DEF }),
            1 => Some(FieldReference { name: "pressure", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::TANK_SUMMARY => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
            0 => Some(FieldReference { name: "sensor", num: 0, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::ANT_CHANNEL_ID, ..FR_DEF }),
            1 => Some(FieldReference { name: "start_pressure", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar", ..FR_DEF }),
            2 => Some(FieldReference { name: "end_pressure", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar", ..FR_DEF }),
            3 => Some(FieldReference { name: "volume_used", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "L", ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SLEEP_ASSESSMENT => { match field_num {
            0 => Some(FieldReference { name: "combined_awake_score", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            1 => Some(FieldReference { name: "awake_time_score", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            2 => Some(FieldReference { name: "awakenings_count_score", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            3 => Some(FieldReference { name: "deep_sleep_score", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            4 => Some(FieldReference { name: "sleep_duration_score", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            5 => Some(FieldReference { name: "light_sleep_score", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            6 => Some(FieldReference { name: "overall_sleep_score", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            7 => Some(FieldReference { name: "sleep_quality_score", num: 7, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            8 => Some(FieldReference { name: "sleep_recovery_score", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            9 => Some(FieldReference { name: "rem_sleep_score", num: 9, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            10 => Some(FieldReference { name: "sleep_restlessness_score", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            11 => Some(FieldReference { name: "awakenings_count", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            14 => Some(FieldReference { name: "interruptions_score", num: 14, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
            15 => Some(FieldReference { name: "average_stress_during_sleep", num: 15, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SLEEP_DISRUPTION_SEVERITY_PERIOD => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "severity", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SLEEP_DISRUPTION_SEVERITY, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SLEEP_DISRUPTION_OVERNIGHT_SEVERITY => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "severity", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SLEEP_DISRUPTION_SEVERITY, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::NAP_EVENT => { match field_num {
            254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "start_time", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "seconds", ..FR_DEF }),
            1 => Some(FieldReference { name: "start_timezone_offset", num: 1, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, units: "minutes", ..FR_DEF }),
            2 => Some(FieldReference { name: "end_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "seconds", ..FR_DEF }),
            3 => Some(FieldReference { name: "end_timezone_offset", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, units: "minutes", ..FR_DEF }),
            4 => Some(FieldReference { name: "feedback", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::NAP_PERIOD_FEEDBACK, ..FR_DEF }),
            5 => Some(FieldReference { name: "is_deleted", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
            6 => Some(FieldReference { name: "source", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::NAP_SOURCE, ..FR_DEF }),
            7 => Some(FieldReference { name: "update_timestamp", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
           _ => None,
        }},
        MesgNum::SKIN_TEMP_OVERNIGHT => { match field_num {
            253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
            0 => Some(FieldReference { name: "local_timestamp", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, ..FR_DEF }),
            1 => Some(FieldReference { name: "average_deviation", num: 1, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
            2 => Some(FieldReference { name: "average_7_day_deviation", num: 2, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
            4 => Some(FieldReference { name: "nightly_value", num: 4, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
           _ => None,
        }},
        _ => None
    }
}