mavlink-message-definitions 0.6.7

MAVLink message definitions in MAVInspect format
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
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
<?xml version="1.0"?>
<mavlink>
  <include>standard.xml</include>
  <version>3</version>
  <dialect>0</dialect>
  <enums>
    <enum name="FIRMWARE_VERSION_TYPE">
      <description>These values define the type of firmware release.  These values indicate the first version or release of this type.  For example the first alpha release would be 64, the second would be 65.</description>
      <entry value="0" name="FIRMWARE_VERSION_TYPE_DEV">
        <description>development release</description>
      </entry>
      <entry value="64" name="FIRMWARE_VERSION_TYPE_ALPHA">
        <description>alpha release</description>
      </entry>
      <entry value="128" name="FIRMWARE_VERSION_TYPE_BETA">
        <description>beta release</description>
      </entry>
      <entry value="192" name="FIRMWARE_VERSION_TYPE_RC">
        <description>release candidate</description>
      </entry>
      <entry value="255" name="FIRMWARE_VERSION_TYPE_OFFICIAL">
        <description>official stable release</description>
      </entry>
    </enum>
    <enum name="HL_FAILURE_FLAG" bitmask="true">
      <description>Flags to report failure cases over the high latency telemetry.</description>
      <entry value="1" name="HL_FAILURE_FLAG_GPS">
        <description>GPS failure.</description>
      </entry>
      <entry value="2" name="HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE">
        <description>Differential pressure sensor failure.</description>
      </entry>
      <entry value="4" name="HL_FAILURE_FLAG_ABSOLUTE_PRESSURE">
        <description>Absolute pressure sensor failure.</description>
      </entry>
      <entry value="8" name="HL_FAILURE_FLAG_3D_ACCEL">
        <description>Accelerometer sensor failure.</description>
      </entry>
      <entry value="16" name="HL_FAILURE_FLAG_3D_GYRO">
        <description>Gyroscope sensor failure.</description>
      </entry>
      <entry value="32" name="HL_FAILURE_FLAG_3D_MAG">
        <description>Magnetometer sensor failure.</description>
      </entry>
      <entry value="64" name="HL_FAILURE_FLAG_TERRAIN">
        <description>Terrain subsystem failure.</description>
      </entry>
      <entry value="128" name="HL_FAILURE_FLAG_BATTERY">
        <description>Battery failure/critical low battery.</description>
      </entry>
      <entry value="256" name="HL_FAILURE_FLAG_RC_RECEIVER">
        <description>RC receiver failure/no RC connection.</description>
      </entry>
      <entry value="512" name="HL_FAILURE_FLAG_OFFBOARD_LINK">
        <description>Offboard link failure.</description>
      </entry>
      <entry value="1024" name="HL_FAILURE_FLAG_ENGINE">
        <description>Engine failure.</description>
      </entry>
      <entry value="2048" name="HL_FAILURE_FLAG_GEOFENCE">
        <description>Geofence violation.</description>
      </entry>
      <entry value="4096" name="HL_FAILURE_FLAG_ESTIMATOR">
        <description>Estimator failure, for example measurement rejection or large variances.</description>
      </entry>
      <entry value="8192" name="HL_FAILURE_FLAG_MISSION">
        <description>Mission failure.</description>
      </entry>
    </enum>
    <enum name="MAV_GOTO">
      <description>Actions that may be specified in MAV_CMD_OVERRIDE_GOTO to override mission execution.</description>
      <entry value="0" name="MAV_GOTO_DO_HOLD">
        <description>Hold at the current position.</description>
      </entry>
      <entry value="1" name="MAV_GOTO_DO_CONTINUE">
        <description>Continue with the next item in mission execution.</description>
      </entry>
      <entry value="2" name="MAV_GOTO_HOLD_AT_CURRENT_POSITION">
        <description>Hold at the current position of the system</description>
      </entry>
      <entry value="3" name="MAV_GOTO_HOLD_AT_SPECIFIED_POSITION">
        <description>Hold at the position specified in the parameters of the DO_HOLD action</description>
      </entry>
    </enum>
    <enum name="MAV_MODE">
      <deprecated since="2025-02" replaced_by="MAV_MODE_FLAG">Using MAV_MODE to set modes is less predictable than using standard modes (MAV_STANDARD_MODE) or custom modes (MAV_MODE_FLAG_CUSTOM_MODE_ENABLED).</deprecated>
      <description>Predefined OR-combined MAV_MODE_FLAG values. These can simplify using the flags when setting modes. Note that manual input is enabled in all modes as a safety override.</description>
      <entry value="0" name="MAV_MODE_PREFLIGHT">
        <description>System is not ready to fly, booting, calibrating, etc. No flag is set.</description>
      </entry>
      <entry value="80" name="MAV_MODE_STABILIZE_DISARMED">
        <description>System is allowed to be active, under assisted RC control (MAV_MODE_FLAG_SAFETY_ARMED, MAV_MODE_FLAG_STABILIZE_ENABLED)</description>
      </entry>
      <entry value="208" name="MAV_MODE_STABILIZE_ARMED">
        <description>System is allowed to be active, under assisted RC control (MAV_MODE_FLAG_SAFETY_ARMED, MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, MAV_MODE_FLAG_STABILIZE_ENABLED)</description>
      </entry>
      <entry value="64" name="MAV_MODE_MANUAL_DISARMED">
        <description>System is allowed to be active, under manual (RC) control, no stabilization (MAV_MODE_FLAG_MANUAL_INPUT_ENABLED)</description>
      </entry>
      <entry value="192" name="MAV_MODE_MANUAL_ARMED">
        <description>System is allowed to be active, under manual (RC) control, no stabilization (MAV_MODE_FLAG_SAFETY_ARMED, MAV_MODE_FLAG_MANUAL_INPUT_ENABLED)</description>
      </entry>
      <entry value="88" name="MAV_MODE_GUIDED_DISARMED">
        <description>System is allowed to be active, under autonomous control, manual setpoint (MAV_MODE_FLAG_SAFETY_ARMED, MAV_MODE_FLAG_STABILIZE_ENABLED, MAV_MODE_FLAG_GUIDED_ENABLED)</description>
      </entry>
      <entry value="216" name="MAV_MODE_GUIDED_ARMED">
        <description>System is allowed to be active, under autonomous control, manual setpoint (MAV_MODE_FLAG_SAFETY_ARMED, MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, MAV_MODE_FLAG_STABILIZE_ENABLED, MAV_MODE_FLAG_GUIDED_ENABLED)</description>
      </entry>
      <entry value="92" name="MAV_MODE_AUTO_DISARMED">
        <description>System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by waypoints). (MAV_MODE_FLAG_SAFETY_ARMED, MAV_MODE_FLAG_STABILIZE_ENABLED, MAV_MODE_FLAG_GUIDED_ENABLED, MAV_MODE_FLAG_AUTO_ENABLED).</description>
      </entry>
      <entry value="220" name="MAV_MODE_AUTO_ARMED">
        <description>System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by waypoints). (MAV_MODE_FLAG_SAFETY_ARMED, MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, MAV_MODE_FLAG_STABILIZE_ENABLED, MAV_MODE_FLAG_GUIDED_ENABLED,MAV_MODE_FLAG_AUTO_ENABLED).</description>
      </entry>
      <entry value="66" name="MAV_MODE_TEST_DISARMED">
        <description>UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only. (MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, MAV_MODE_FLAG_TEST_ENABLED).</description>
      </entry>
      <entry value="194" name="MAV_MODE_TEST_ARMED">
        <description>UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only (MAV_MODE_FLAG_SAFETY_ARMED, MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, MAV_MODE_FLAG_TEST_ENABLED)</description>
      </entry>
    </enum>
    <enum name="MAV_SYS_STATUS_SENSOR" bitmask="true">
      <description>These encode the sensors whose status is sent as part of the SYS_STATUS message.</description>
      <entry value="1" name="MAV_SYS_STATUS_SENSOR_3D_GYRO">
        <description>0x01 3D gyro</description>
      </entry>
      <entry value="2" name="MAV_SYS_STATUS_SENSOR_3D_ACCEL">
        <description>0x02 3D accelerometer</description>
      </entry>
      <entry value="4" name="MAV_SYS_STATUS_SENSOR_3D_MAG">
        <description>0x04 3D magnetometer</description>
      </entry>
      <entry value="8" name="MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE">
        <description>0x08 absolute pressure</description>
      </entry>
      <entry value="16" name="MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE">
        <description>0x10 differential pressure</description>
      </entry>
      <entry value="32" name="MAV_SYS_STATUS_SENSOR_GPS">
        <description>0x20 GPS</description>
      </entry>
      <entry value="64" name="MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW">
        <description>0x40 optical flow</description>
      </entry>
      <entry value="128" name="MAV_SYS_STATUS_SENSOR_VISION_POSITION">
        <description>0x80 computer vision position</description>
      </entry>
      <entry value="256" name="MAV_SYS_STATUS_SENSOR_LASER_POSITION">
        <description>0x100 laser based position</description>
      </entry>
      <entry value="512" name="MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH">
        <description>0x200 external ground truth (Vicon or Leica)</description>
      </entry>
      <entry value="1024" name="MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL">
        <description>0x400 3D angular rate control</description>
      </entry>
      <entry value="2048" name="MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION">
        <description>0x800 attitude stabilization</description>
      </entry>
      <entry value="4096" name="MAV_SYS_STATUS_SENSOR_YAW_POSITION">
        <description>0x1000 yaw position</description>
      </entry>
      <entry value="8192" name="MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL">
        <description>0x2000 z/altitude control</description>
      </entry>
      <entry value="16384" name="MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL">
        <description>0x4000 x/y position control</description>
      </entry>
      <entry value="32768" name="MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS">
        <description>0x8000 motor outputs / control</description>
      </entry>
      <entry value="65536" name="MAV_SYS_STATUS_SENSOR_RC_RECEIVER">
        <description>0x10000 RC receiver</description>
      </entry>
      <entry value="131072" name="MAV_SYS_STATUS_SENSOR_3D_GYRO2">
        <description>0x20000 2nd 3D gyro</description>
      </entry>
      <entry value="262144" name="MAV_SYS_STATUS_SENSOR_3D_ACCEL2">
        <description>0x40000 2nd 3D accelerometer</description>
      </entry>
      <entry value="524288" name="MAV_SYS_STATUS_SENSOR_3D_MAG2">
        <description>0x80000 2nd 3D magnetometer</description>
      </entry>
      <entry value="1048576" name="MAV_SYS_STATUS_GEOFENCE">
        <description>0x100000 geofence</description>
      </entry>
      <entry value="2097152" name="MAV_SYS_STATUS_AHRS">
        <description>0x200000 AHRS subsystem health</description>
      </entry>
      <entry value="4194304" name="MAV_SYS_STATUS_TERRAIN">
        <description>0x400000 Terrain subsystem health</description>
      </entry>
      <entry value="8388608" name="MAV_SYS_STATUS_REVERSE_MOTOR">
        <description>0x800000 Motors are reversed</description>
      </entry>
      <entry value="16777216" name="MAV_SYS_STATUS_LOGGING">
        <description>0x1000000 Logging</description>
      </entry>
      <entry value="33554432" name="MAV_SYS_STATUS_SENSOR_BATTERY">
        <description>0x2000000 Battery</description>
      </entry>
      <entry value="67108864" name="MAV_SYS_STATUS_SENSOR_PROXIMITY">
        <description>0x4000000 Proximity</description>
      </entry>
      <entry value="134217728" name="MAV_SYS_STATUS_SENSOR_SATCOM">
        <description>0x8000000 Satellite Communication </description>
      </entry>
      <entry value="268435456" name="MAV_SYS_STATUS_PREARM_CHECK">
        <description>0x10000000 pre-arm check status. Always healthy when armed</description>
      </entry>
      <entry value="536870912" name="MAV_SYS_STATUS_OBSTACLE_AVOIDANCE">
        <description>0x20000000 Avoidance/collision prevention</description>
      </entry>
      <entry value="1073741824" name="MAV_SYS_STATUS_SENSOR_PROPULSION">
        <description>0x40000000 propulsion (actuator, esc, motor or propellor)</description>
      </entry>
      <entry value="2147483648" name="MAV_SYS_STATUS_EXTENSION_USED">
        <description>0x80000000 Extended bit-field are used for further sensor status bits (needs to be set in onboard_control_sensors_present only)</description>
      </entry>
    </enum>
    <enum name="MAV_SYS_STATUS_SENSOR_EXTENDED" bitmask="true">
      <description>These encode the sensors whose status is sent as part of the SYS_STATUS message in the extended fields.</description>
      <entry value="1" name="MAV_SYS_STATUS_RECOVERY_SYSTEM">
        <description>0x01 Recovery system (parachute, balloon, retracts etc)</description>
      </entry>
    </enum>
    <enum name="MAV_FRAME">
      <description>Coordinate frames used by MAVLink. Not all frames are supported by all commands, messages, or vehicles.

      Global frames use the following naming conventions:
      - "GLOBAL": Global coordinate frame with WGS84 latitude/longitude and altitude positive over mean sea level (MSL) by default.
        The following modifiers may be used with "GLOBAL":
        - "RELATIVE_ALT": Altitude is relative to the vehicle home position rather than MSL.
        - "TERRAIN_ALT": Altitude is relative to ground level rather than MSL.
        - "INT": Latitude/longitude (in degrees) are scaled by multiplying by 1E7.

      Local frames use the following naming conventions:
      - "LOCAL": Origin of local frame is fixed relative to earth. Unless otherwise specified this origin is the origin of the vehicle position-estimator ("EKF").
      - "BODY": Origin of local frame travels with the vehicle. NOTE, "BODY" does NOT indicate alignment of frame axis with vehicle attitude.
      - "OFFSET": Deprecated synonym for "BODY" (origin travels with the vehicle). Not to be used for new frames.

      Some deprecated frames do not follow these conventions (e.g. MAV_FRAME_BODY_NED and MAV_FRAME_BODY_OFFSET_NED).
 </description>
      <entry value="0" name="MAV_FRAME_GLOBAL">
        <description>Global (WGS84) coordinate frame + altitude relative to mean sea level (MSL).</description>
      </entry>
      <entry value="1" name="MAV_FRAME_LOCAL_NED">
        <description>NED local tangent frame (x: North, y: East, z: Down) with origin fixed relative to earth.</description>
      </entry>
      <entry value="2" name="MAV_FRAME_MISSION">
        <description>NOT a coordinate frame, indicates a mission command.</description>
      </entry>
      <entry value="3" name="MAV_FRAME_GLOBAL_RELATIVE_ALT">
        <description>
          Global (WGS84) coordinate frame + altitude relative to the home position.
        </description>
      </entry>
      <entry value="4" name="MAV_FRAME_LOCAL_ENU">
        <description>ENU local tangent frame (x: East, y: North, z: Up) with origin fixed relative to earth.</description>
      </entry>
      <entry value="5" name="MAV_FRAME_GLOBAL_INT">
        <deprecated since="2024-03" replaced_by="MAV_FRAME_GLOBAL">Use MAV_FRAME_GLOBAL in COMMAND_INT (and elsewhere) as a synonymous replacement.</deprecated>
        <description>Global (WGS84) coordinate frame (scaled) + altitude relative to mean sea level (MSL).</description>
      </entry>
      <entry value="6" name="MAV_FRAME_GLOBAL_RELATIVE_ALT_INT">
        <deprecated since="2024-03" replaced_by="MAV_FRAME_GLOBAL_RELATIVE_ALT">Use MAV_FRAME_GLOBAL_RELATIVE_ALT in COMMAND_INT (and elsewhere) as a synonymous replacement.</deprecated>
        <description>Global (WGS84) coordinate frame (scaled) + altitude relative to the home position. </description>
      </entry>
      <entry value="7" name="MAV_FRAME_LOCAL_OFFSET_NED">
        <description>NED local tangent frame (x: North, y: East, z: Down) with origin that travels with the vehicle.</description>
      </entry>
      <entry value="8" name="MAV_FRAME_BODY_NED">
        <deprecated since="2019-08" replaced_by="MAV_FRAME_BODY_FRD"/>
        <description>Same as MAV_FRAME_LOCAL_NED when used to represent position values. Same as MAV_FRAME_BODY_FRD when used with velocity/acceleration values.</description>
      </entry>
      <entry value="9" name="MAV_FRAME_BODY_OFFSET_NED">
        <deprecated since="2019-08" replaced_by="MAV_FRAME_BODY_FRD"/>
        <description>This is the same as MAV_FRAME_BODY_FRD.</description>
      </entry>
      <entry value="10" name="MAV_FRAME_GLOBAL_TERRAIN_ALT">
        <description>Global (WGS84) coordinate frame with AGL altitude (altitude at ground level).</description>
      </entry>
      <entry value="11" name="MAV_FRAME_GLOBAL_TERRAIN_ALT_INT">
        <deprecated since="2024-03" replaced_by="MAV_FRAME_GLOBAL_TERRAIN_ALT">Use MAV_FRAME_GLOBAL_TERRAIN_ALT in COMMAND_INT (and elsewhere) as a synonymous replacement.</deprecated>
        <description>Global (WGS84) coordinate frame (scaled) with AGL altitude (altitude at ground level).</description>
      </entry>
      <entry value="12" name="MAV_FRAME_BODY_FRD">
        <description>FRD local frame aligned to the vehicle's attitude (x: Forward, y: Right, z: Down) with an origin that travels with vehicle.</description>
      </entry>
      <entry value="13" name="MAV_FRAME_RESERVED_13">
        <deprecated since="2019-04" replaced_by=""/>
        <description>MAV_FRAME_BODY_FLU - Body fixed frame of reference, Z-up (x: Forward, y: Left, z: Up).</description>
      </entry>
      <entry value="14" name="MAV_FRAME_RESERVED_14">
        <deprecated since="2019-04" replaced_by="MAV_FRAME_LOCAL_FRD"/>
        <description>MAV_FRAME_MOCAP_NED - Odometry local coordinate frame of data given by a motion capture system, Z-down (x: North, y: East, z: Down).</description>
      </entry>
      <entry value="15" name="MAV_FRAME_RESERVED_15">
        <deprecated since="2019-04" replaced_by="MAV_FRAME_LOCAL_FLU"/>
        <description>MAV_FRAME_MOCAP_ENU - Odometry local coordinate frame of data given by a motion capture system, Z-up (x: East, y: North, z: Up).</description>
      </entry>
      <entry value="16" name="MAV_FRAME_RESERVED_16">
        <deprecated since="2019-04" replaced_by="MAV_FRAME_LOCAL_FRD"/>
        <description>MAV_FRAME_VISION_NED - Odometry local coordinate frame of data given by a vision estimation system, Z-down (x: North, y: East, z: Down).</description>
      </entry>
      <entry value="17" name="MAV_FRAME_RESERVED_17">
        <deprecated since="2019-04" replaced_by="MAV_FRAME_LOCAL_FLU"/>
        <description>MAV_FRAME_VISION_ENU - Odometry local coordinate frame of data given by a vision estimation system, Z-up (x: East, y: North, z: Up).</description>
      </entry>
      <entry value="18" name="MAV_FRAME_RESERVED_18">
        <deprecated since="2019-04" replaced_by="MAV_FRAME_LOCAL_FRD"/>
        <description>MAV_FRAME_ESTIM_NED - Odometry local coordinate frame of data given by an estimator running onboard the vehicle, Z-down (x: North, y: East, z: Down).</description>
      </entry>
      <entry value="19" name="MAV_FRAME_RESERVED_19">
        <deprecated since="2019-04" replaced_by="MAV_FRAME_LOCAL_FLU"/>
        <description>MAV_FRAME_ESTIM_ENU - Odometry local coordinate frame of data given by an estimator running onboard the vehicle, Z-up (x: East, y: North, z: Up).</description>
      </entry>
      <entry value="20" name="MAV_FRAME_LOCAL_FRD">
        <description>FRD local tangent frame (x: Forward, y: Right, z: Down) with origin fixed relative to earth. The forward axis is aligned to the front of the vehicle in the horizontal plane.</description>
      </entry>
      <entry value="21" name="MAV_FRAME_LOCAL_FLU">
        <description>FLU local tangent frame (x: Forward, y: Left, z: Up) with origin fixed relative to earth. The forward axis is aligned to the front of the vehicle in the horizontal plane.</description>
      </entry>
    </enum>
    <enum name="MAVLINK_DATA_STREAM_TYPE">
      <entry value="0" name="MAVLINK_DATA_STREAM_IMG_JPEG">
        <description/>
      </entry>
      <entry value="1" name="MAVLINK_DATA_STREAM_IMG_BMP">
        <description/>
      </entry>
      <entry value="2" name="MAVLINK_DATA_STREAM_IMG_RAW8U">
        <description/>
      </entry>
      <entry value="3" name="MAVLINK_DATA_STREAM_IMG_RAW32U">
        <description/>
      </entry>
      <entry value="4" name="MAVLINK_DATA_STREAM_IMG_PGM">
        <description/>
      </entry>
      <entry value="5" name="MAVLINK_DATA_STREAM_IMG_PNG">
        <description/>
      </entry>
    </enum>
    <!-- fenced mode enums -->
    <enum name="FENCE_BREACH">
      <entry value="0" name="FENCE_BREACH_NONE">
        <description>No last fence breach</description>
      </entry>
      <entry value="1" name="FENCE_BREACH_MINALT">
        <description>Breached minimum altitude</description>
      </entry>
      <entry value="2" name="FENCE_BREACH_MAXALT">
        <description>Breached maximum altitude</description>
      </entry>
      <entry value="3" name="FENCE_BREACH_BOUNDARY">
        <description>Breached fence boundary</description>
      </entry>
    </enum>
    <enum name="FENCE_MITIGATE">
      <!-- This enum is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Actions being taken to mitigate/prevent fence breach</description>
      <entry value="0" name="FENCE_MITIGATE_UNKNOWN">
        <description>Unknown</description>
      </entry>
      <entry value="1" name="FENCE_MITIGATE_NONE">
        <description>No actions being taken</description>
      </entry>
      <entry value="2" name="FENCE_MITIGATE_VEL_LIMIT">
        <description>Velocity limiting active to prevent breach</description>
      </entry>
    </enum>
    <enum name="FENCE_TYPE" bitmask="true">
      <description>Fence types to enable or disable when using MAV_CMD_DO_FENCE_ENABLE.
        Note that at least one of these flags must be set in MAV_CMD_DO_FENCE_ENABLE.param2.
        If none are set, the flight stack will ignore the field and enable/disable its default set of fences (usually all of them).
      </description>
      <entry value="1" name="FENCE_TYPE_ALT_MAX">
        <description>Maximum altitude fence</description>
      </entry>
      <entry value="2" name="FENCE_TYPE_CIRCLE">
        <description>Circle fence</description>
      </entry>
      <entry value="4" name="FENCE_TYPE_POLYGON">
        <description>Polygon fence</description>
      </entry>
      <entry value="8" name="FENCE_TYPE_ALT_MIN">
        <description>Minimum altitude fence</description>
      </entry>
    </enum>
    <!-- Camera Mount mode Enumeration -->
    <enum name="MAV_MOUNT_MODE">
      <deprecated since="2020-01" replaced_by="GIMBAL_MANAGER_FLAGS"/>
      <description>Enumeration of possible mount operation modes. This message is used by obsolete/deprecated gimbal messages.</description>
      <entry value="0" name="MAV_MOUNT_MODE_RETRACT">
        <description>Load and keep safe position (Roll,Pitch,Yaw) from permanent memory and stop stabilization</description>
      </entry>
      <entry value="1" name="MAV_MOUNT_MODE_NEUTRAL">
        <description>Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.</description>
      </entry>
      <entry value="2" name="MAV_MOUNT_MODE_MAVLINK_TARGETING">
        <description>Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization</description>
      </entry>
      <entry value="3" name="MAV_MOUNT_MODE_RC_TARGETING">
        <description>Load neutral position and start RC Roll,Pitch,Yaw control with stabilization</description>
      </entry>
      <entry value="4" name="MAV_MOUNT_MODE_GPS_POINT">
        <description>Load neutral position and start to point to Lat,Lon,Alt</description>
      </entry>
      <entry value="5" name="MAV_MOUNT_MODE_SYSID_TARGET">
        <description>Gimbal tracks system with specified system ID</description>
      </entry>
      <entry value="6" name="MAV_MOUNT_MODE_HOME_LOCATION">
        <description>Gimbal tracks home position</description>
      </entry>
    </enum>
    <enum name="GIMBAL_DEVICE_CAP_FLAGS" bitmask="true">
      <description>Gimbal device (low level) capability flags (bitmap).</description>
      <entry value="1" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT">
        <description>Gimbal device supports a retracted position.</description>
      </entry>
      <entry value="2" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL">
        <description>Gimbal device supports a horizontal, forward looking position, stabilized.</description>
      </entry>
      <entry value="4" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS">
        <description>Gimbal device supports rotating around roll axis.</description>
      </entry>
      <entry value="8" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW">
        <description>Gimbal device supports to follow a roll angle relative to the vehicle.</description>
      </entry>
      <entry value="16" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK">
        <description>Gimbal device supports locking to a roll angle (generally that's the default with roll stabilized).</description>
      </entry>
      <entry value="32" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS">
        <description>Gimbal device supports rotating around pitch axis.</description>
      </entry>
      <entry value="64" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW">
        <description>Gimbal device supports to follow a pitch angle relative to the vehicle.</description>
      </entry>
      <entry value="128" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK">
        <description>Gimbal device supports locking to a pitch angle (generally that's the default with pitch stabilized).</description>
      </entry>
      <entry value="256" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS">
        <description>Gimbal device supports rotating around yaw axis.</description>
      </entry>
      <entry value="512" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW">
        <description>Gimbal device supports to follow a yaw angle relative to the vehicle (generally that's the default).</description>
      </entry>
      <entry value="1024" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK">
        <description>Gimbal device supports locking to an absolute heading, i.e., yaw angle relative to North (earth frame, often this is an option available).</description>
      </entry>
      <entry value="2048" name="GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW">
        <description>Gimbal device supports yawing/panning infinitely (e.g. using slip disk).</description>
      </entry>
      <entry value="4096" name="GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME">
        <description>Gimbal device supports yaw angles and angular velocities relative to North (earth frame). This usually requires support by an autopilot via AUTOPILOT_STATE_FOR_GIMBAL_DEVICE. Support can go on and off during runtime, which is reported by the flag GIMBAL_DEVICE_FLAGS_CAN_ACCEPT_YAW_IN_EARTH_FRAME.</description>
      </entry>
      <entry value="8192" name="GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS">
        <description>Gimbal device supports radio control inputs as an alternative input for controlling the gimbal orientation.</description>
      </entry>
    </enum>
    <enum name="GIMBAL_MANAGER_CAP_FLAGS" bitmask="true">
      <description>Gimbal manager high level capability flags (bitmap). The first 16 bits are identical to the GIMBAL_DEVICE_CAP_FLAGS. However, the gimbal manager does not need to copy the flags from the gimbal but can also enhance the capabilities and thus add flags.</description>
      <entry value="1" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_RETRACT">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_RETRACT.</description>
      </entry>
      <entry value="2" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_NEUTRAL">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_NEUTRAL.</description>
      </entry>
      <entry value="4" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_AXIS">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_AXIS.</description>
      </entry>
      <entry value="8" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_FOLLOW">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_FOLLOW.</description>
      </entry>
      <entry value="16" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_ROLL_LOCK">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_ROLL_LOCK.</description>
      </entry>
      <entry value="32" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_AXIS">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_AXIS.</description>
      </entry>
      <entry value="64" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_FOLLOW">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_FOLLOW.</description>
      </entry>
      <entry value="128" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_PITCH_LOCK">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_PITCH_LOCK.</description>
      </entry>
      <entry value="256" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_AXIS">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_AXIS.</description>
      </entry>
      <entry value="512" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_FOLLOW">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_FOLLOW.</description>
      </entry>
      <entry value="1024" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_YAW_LOCK">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_YAW_LOCK.</description>
      </entry>
      <entry value="2048" name="GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_INFINITE_YAW">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_INFINITE_YAW.</description>
      </entry>
      <entry value="4096" name="GIMBAL_MANAGER_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_SUPPORTS_YAW_IN_EARTH_FRAME.</description>
      </entry>
      <entry value="8192" name="GIMBAL_MANAGER_CAP_FLAGS_HAS_RC_INPUTS">
        <description>Based on GIMBAL_DEVICE_CAP_FLAGS_HAS_RC_INPUTS.</description>
      </entry>
      <entry value="65536" name="GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_LOCAL">
        <description>Gimbal manager supports to point to a local position.</description>
      </entry>
      <entry value="131072" name="GIMBAL_MANAGER_CAP_FLAGS_CAN_POINT_LOCATION_GLOBAL">
        <description>Gimbal manager supports to point to a global latitude, longitude, altitude position.</description>
      </entry>
    </enum>
    <enum name="GIMBAL_DEVICE_FLAGS" bitmask="true">
      <description>Flags for gimbal device (lower level) operation.</description>
      <entry value="1" name="GIMBAL_DEVICE_FLAGS_RETRACT">
        <description>Set to retracted safe position (no stabilization), takes precedence over all other flags.</description>
      </entry>
      <entry value="2" name="GIMBAL_DEVICE_FLAGS_NEUTRAL">
        <description>Set to neutral/default position, taking precedence over all other flags except RETRACT. Neutral is commonly forward-facing and horizontal (roll=pitch=yaw=0) but may be any orientation.</description>
      </entry>
      <entry value="4" name="GIMBAL_DEVICE_FLAGS_ROLL_LOCK">
        <description>Lock roll angle to absolute angle relative to horizon (not relative to vehicle). This is generally the default with a stabilizing gimbal.</description>
      </entry>
      <entry value="8" name="GIMBAL_DEVICE_FLAGS_PITCH_LOCK">
        <description>Lock pitch angle to absolute angle relative to horizon (not relative to vehicle). This is generally the default with a stabilizing gimbal.</description>
      </entry>
      <entry value="16" name="GIMBAL_DEVICE_FLAGS_YAW_LOCK">
        <description>Lock yaw angle to absolute angle relative to North (not relative to vehicle). If this flag is set, the yaw angle and z component of angular velocity are relative to North (earth frame, x-axis pointing North), else they are relative to the vehicle heading (vehicle frame, earth frame rotated so that the x-axis is pointing forward).</description>
      </entry>
      <entry value="32" name="GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME">
        <description>Yaw angle and z component of angular velocity are relative to the vehicle heading (vehicle frame, earth frame rotated such that the x-axis is pointing forward).</description>
      </entry>
      <entry value="64" name="GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME">
        <description>Yaw angle and z component of angular velocity are relative to North (earth frame, x-axis is pointing North).</description>
      </entry>
      <entry value="128" name="GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME">
        <description>Gimbal device can accept yaw angle inputs relative to North (earth frame). This flag is only for reporting (attempts to set this flag are ignored).</description>
      </entry>
      <entry value="256" name="GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE">
        <description>The gimbal orientation is set exclusively by the RC signals feed to the gimbal's radio control inputs. MAVLink messages for setting the gimbal orientation (GIMBAL_DEVICE_SET_ATTITUDE) are ignored.</description>
      </entry>
      <entry value="512" name="GIMBAL_DEVICE_FLAGS_RC_MIXED">
        <description>The gimbal orientation is determined by combining/mixing the RC signals feed to the gimbal's radio control inputs and the MAVLink messages for setting the gimbal orientation (GIMBAL_DEVICE_SET_ATTITUDE). How these two controls are combined or mixed is not defined by the protocol but is up to the implementation.</description>
      </entry>
    </enum>
    <enum name="GIMBAL_MANAGER_FLAGS" bitmask="true">
      <description>Flags for high level gimbal manager operation The first 16 bits are identical to the GIMBAL_DEVICE_FLAGS.</description>
      <entry value="1" name="GIMBAL_MANAGER_FLAGS_RETRACT">
        <description>Based on GIMBAL_DEVICE_FLAGS_RETRACT.</description>
      </entry>
      <entry value="2" name="GIMBAL_MANAGER_FLAGS_NEUTRAL">
        <description>Based on GIMBAL_DEVICE_FLAGS_NEUTRAL.</description>
      </entry>
      <entry value="4" name="GIMBAL_MANAGER_FLAGS_ROLL_LOCK">
        <description>Based on GIMBAL_DEVICE_FLAGS_ROLL_LOCK.</description>
      </entry>
      <entry value="8" name="GIMBAL_MANAGER_FLAGS_PITCH_LOCK">
        <description>Based on GIMBAL_DEVICE_FLAGS_PITCH_LOCK.</description>
      </entry>
      <entry value="16" name="GIMBAL_MANAGER_FLAGS_YAW_LOCK">
        <description>Based on GIMBAL_DEVICE_FLAGS_YAW_LOCK.</description>
      </entry>
      <entry value="32" name="GIMBAL_MANAGER_FLAGS_YAW_IN_VEHICLE_FRAME">
        <description>Based on GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME.</description>
      </entry>
      <entry value="64" name="GIMBAL_MANAGER_FLAGS_YAW_IN_EARTH_FRAME">
        <description>Based on GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME.</description>
      </entry>
      <entry value="128" name="GIMBAL_MANAGER_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME">
        <description>Based on GIMBAL_DEVICE_FLAGS_ACCEPTS_YAW_IN_EARTH_FRAME.</description>
      </entry>
      <entry value="256" name="GIMBAL_MANAGER_FLAGS_RC_EXCLUSIVE">
        <description>Based on GIMBAL_DEVICE_FLAGS_RC_EXCLUSIVE.</description>
      </entry>
      <entry value="512" name="GIMBAL_MANAGER_FLAGS_RC_MIXED">
        <description>Based on GIMBAL_DEVICE_FLAGS_RC_MIXED.</description>
      </entry>
    </enum>
    <enum name="GIMBAL_DEVICE_ERROR_FLAGS" bitmask="true">
      <description>Gimbal device (low level) error flags (bitmap, 0 means no error)</description>
      <entry value="1" name="GIMBAL_DEVICE_ERROR_FLAGS_AT_ROLL_LIMIT">
        <description>Gimbal device is limited by hardware roll limit.</description>
      </entry>
      <entry value="2" name="GIMBAL_DEVICE_ERROR_FLAGS_AT_PITCH_LIMIT">
        <description>Gimbal device is limited by hardware pitch limit.</description>
      </entry>
      <entry value="4" name="GIMBAL_DEVICE_ERROR_FLAGS_AT_YAW_LIMIT">
        <description>Gimbal device is limited by hardware yaw limit.</description>
      </entry>
      <entry value="8" name="GIMBAL_DEVICE_ERROR_FLAGS_ENCODER_ERROR">
        <description>There is an error with the gimbal encoders.</description>
      </entry>
      <entry value="16" name="GIMBAL_DEVICE_ERROR_FLAGS_POWER_ERROR">
        <description>There is an error with the gimbal power source.</description>
      </entry>
      <entry value="32" name="GIMBAL_DEVICE_ERROR_FLAGS_MOTOR_ERROR">
        <description>There is an error with the gimbal motors.</description>
      </entry>
      <entry value="64" name="GIMBAL_DEVICE_ERROR_FLAGS_SOFTWARE_ERROR">
        <description>There is an error with the gimbal's software.</description>
      </entry>
      <entry value="128" name="GIMBAL_DEVICE_ERROR_FLAGS_COMMS_ERROR">
        <description>There is an error with the gimbal's communication.</description>
      </entry>
      <entry value="256" name="GIMBAL_DEVICE_ERROR_FLAGS_CALIBRATION_RUNNING">
        <description>Gimbal device is currently calibrating.</description>
      </entry>
      <entry value="512" name="GIMBAL_DEVICE_ERROR_FLAGS_NO_MANAGER">
        <description>Gimbal device is not assigned to a gimbal manager.</description>
      </entry>
    </enum>
    <!-- gripper action enum -->
    <enum name="GRIPPER_ACTIONS">
      <description>Gripper actions.</description>
      <entry value="0" name="GRIPPER_ACTION_RELEASE">
        <description>Gripper release cargo.</description>
      </entry>
      <entry value="1" name="GRIPPER_ACTION_GRAB">
        <description>Gripper grab onto cargo.</description>
      </entry>
    </enum>
    <!-- winch action enum -->
    <enum name="WINCH_ACTIONS">
      <description>Winch actions.</description>
      <entry value="0" name="WINCH_RELAXED">
        <description>Allow motor to freewheel.</description>
      </entry>
      <entry value="1" name="WINCH_RELATIVE_LENGTH_CONTROL">
        <description>Wind or unwind specified length of line, optionally using specified rate.</description>
      </entry>
      <entry value="2" name="WINCH_RATE_CONTROL">
        <description>Wind or unwind line at specified rate.</description>
      </entry>
      <entry value="3" name="WINCH_LOCK">
        <description>Perform the locking sequence to relieve motor while in the fully retracted position. Only action and instance command parameters are used, others are ignored.</description>
      </entry>
      <entry value="4" name="WINCH_DELIVER">
        <description>Sequence of drop, slow down, touch down, reel up, lock. Only action and instance command parameters are used, others are ignored.</description>
      </entry>
      <entry value="5" name="WINCH_HOLD">
        <description>Engage motor and hold current position. Only action and instance command parameters are used, others are ignored.</description>
      </entry>
      <entry value="6" name="WINCH_RETRACT">
        <description>Return the reel to the fully retracted position. Only action and instance command parameters are used, others are ignored.</description>
      </entry>
      <entry value="7" name="WINCH_LOAD_LINE">
        <description>Load the reel with line. The winch will calculate the total loaded length and stop when the tension exceeds a threshold. Only action and instance command parameters are used, others are ignored.</description>
      </entry>
      <entry value="8" name="WINCH_ABANDON_LINE">
        <description>Spool out the entire length of the line. Only action and instance command parameters are used, others are ignored.</description>
      </entry>
      <entry value="9" name="WINCH_LOAD_PAYLOAD">
        <description>Spools out just enough to present the hook to the user to load the payload. Only action and instance command parameters are used, others are ignored</description>
      </entry>
    </enum>
    <!-- UAVCAN node health enumeration -->
    <enum name="UAVCAN_NODE_HEALTH">
      <description>Generalized UAVCAN node health</description>
      <entry value="0" name="UAVCAN_NODE_HEALTH_OK">
        <description>The node is functioning properly.</description>
      </entry>
      <entry value="1" name="UAVCAN_NODE_HEALTH_WARNING">
        <description>A critical parameter went out of range or the node has encountered a minor failure.</description>
      </entry>
      <entry value="2" name="UAVCAN_NODE_HEALTH_ERROR">
        <description>The node has encountered a major failure.</description>
      </entry>
      <entry value="3" name="UAVCAN_NODE_HEALTH_CRITICAL">
        <description>The node has suffered a fatal malfunction.</description>
      </entry>
    </enum>
    <!-- UAVCAN node mode enumeration -->
    <enum name="UAVCAN_NODE_MODE">
      <description>Generalized UAVCAN node mode</description>
      <entry value="0" name="UAVCAN_NODE_MODE_OPERATIONAL">
        <description>The node is performing its primary functions.</description>
      </entry>
      <entry value="1" name="UAVCAN_NODE_MODE_INITIALIZATION">
        <description>The node is initializing; this mode is entered immediately after startup.</description>
      </entry>
      <entry value="2" name="UAVCAN_NODE_MODE_MAINTENANCE">
        <description>The node is under maintenance.</description>
      </entry>
      <entry value="3" name="UAVCAN_NODE_MODE_SOFTWARE_UPDATE">
        <description>The node is in the process of updating its software.</description>
      </entry>
      <entry value="7" name="UAVCAN_NODE_MODE_OFFLINE">
        <description>The node is no longer available online.</description>
      </entry>
    </enum>
    <enum name="ESC_CONNECTION_TYPE">
      <!-- This enum is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Indicates the ESC connection type.</description>
      <entry value="0" name="ESC_CONNECTION_TYPE_PPM">
        <description>Traditional PPM ESC.</description>
      </entry>
      <entry value="1" name="ESC_CONNECTION_TYPE_SERIAL">
        <description>Serial Bus connected ESC.</description>
      </entry>
      <entry value="2" name="ESC_CONNECTION_TYPE_ONESHOT">
        <description>One Shot PPM ESC.</description>
      </entry>
      <entry value="3" name="ESC_CONNECTION_TYPE_I2C">
        <description>I2C ESC.</description>
      </entry>
      <entry value="4" name="ESC_CONNECTION_TYPE_CAN">
        <description>CAN-Bus ESC.</description>
      </entry>
      <entry value="5" name="ESC_CONNECTION_TYPE_DSHOT">
        <description>DShot ESC.</description>
      </entry>
    </enum>
    <enum name="ESC_FAILURE_FLAGS" bitmask="true">
      <!-- This enum is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Flags to report ESC failures.</description>
      <entry value="1" name="ESC_FAILURE_OVER_CURRENT">
        <description>Over current failure.</description>
      </entry>
      <entry value="2" name="ESC_FAILURE_OVER_VOLTAGE">
        <description>Over voltage failure.</description>
      </entry>
      <entry value="4" name="ESC_FAILURE_OVER_TEMPERATURE">
        <description>Over temperature failure.</description>
      </entry>
      <entry value="8" name="ESC_FAILURE_OVER_RPM">
        <description>Over RPM failure.</description>
      </entry>
      <entry value="16" name="ESC_FAILURE_INCONSISTENT_CMD">
        <description>Inconsistent command failure i.e. out of bounds.</description>
      </entry>
      <entry value="32" name="ESC_FAILURE_MOTOR_STUCK">
        <description>Motor stuck failure.</description>
      </entry>
      <entry value="64" name="ESC_FAILURE_GENERIC">
        <description>Generic ESC failure.</description>
      </entry>
    </enum>
    <enum name="STORAGE_STATUS">
      <description>Flags to indicate the status of camera storage.</description>
      <entry value="0" name="STORAGE_STATUS_EMPTY">
        <description>Storage is missing (no microSD card loaded for example.)</description>
      </entry>
      <entry value="1" name="STORAGE_STATUS_UNFORMATTED">
        <description>Storage present but unformatted.</description>
      </entry>
      <entry value="2" name="STORAGE_STATUS_READY">
        <description>Storage present and ready.</description>
      </entry>
      <entry value="3" name="STORAGE_STATUS_NOT_SUPPORTED">
        <description>Camera does not supply storage status information. Capacity information in STORAGE_INFORMATION fields will be ignored.</description>
      </entry>
    </enum>
    <enum name="STORAGE_TYPE">
      <description>Flags to indicate the type of storage.</description>
      <entry value="0" name="STORAGE_TYPE_UNKNOWN">
        <description>Storage type is not known.</description>
      </entry>
      <entry value="1" name="STORAGE_TYPE_USB_STICK">
        <description>Storage type is USB device.</description>
      </entry>
      <entry value="2" name="STORAGE_TYPE_SD">
        <description>Storage type is SD card.</description>
      </entry>
      <entry value="3" name="STORAGE_TYPE_MICROSD">
        <description>Storage type is microSD card.</description>
      </entry>
      <entry value="4" name="STORAGE_TYPE_CF">
        <description>Storage type is CFast.</description>
      </entry>
      <entry value="5" name="STORAGE_TYPE_CFE">
        <description>Storage type is CFexpress.</description>
      </entry>
      <entry value="6" name="STORAGE_TYPE_XQD">
        <description>Storage type is XQD.</description>
      </entry>
      <entry value="7" name="STORAGE_TYPE_HD">
        <description>Storage type is HD mass storage type.</description>
      </entry>
      <entry value="254" name="STORAGE_TYPE_OTHER">
        <description>Storage type is other, not listed type.</description>
      </entry>
    </enum>
    <enum name="STORAGE_USAGE_FLAG" bitmask="true">
      <description>Flags to indicate usage for a particular storage (see STORAGE_INFORMATION.storage_usage and MAV_CMD_SET_STORAGE_USAGE).</description>
      <entry value="1" name="STORAGE_USAGE_FLAG_SET">
        <description>Always set to 1 (indicates STORAGE_INFORMATION.storage_usage is supported).</description>
      </entry>
      <entry value="2" name="STORAGE_USAGE_FLAG_PHOTO">
        <description>Storage for saving photos.</description>
      </entry>
      <entry value="4" name="STORAGE_USAGE_FLAG_VIDEO">
        <description>Storage for saving videos.</description>
      </entry>
      <entry value="8" name="STORAGE_USAGE_FLAG_LOGS">
        <description>Storage for saving logs.</description>
      </entry>
    </enum>
    <enum name="ORBIT_YAW_BEHAVIOUR">
      <description>Yaw behaviour during orbit flight.</description>
      <entry value="0" name="ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER">
        <description>Vehicle front points to the center (default).</description>
      </entry>
      <entry value="1" name="ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING">
        <description>Vehicle front holds heading when message received.</description>
      </entry>
      <entry value="2" name="ORBIT_YAW_BEHAVIOUR_UNCONTROLLED">
        <description>Yaw uncontrolled.</description>
      </entry>
      <entry value="3" name="ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE">
        <description>Vehicle front follows flight path (tangential to circle).</description>
      </entry>
      <entry value="4" name="ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED">
        <description>Yaw controlled by RC input.</description>
      </entry>
      <entry value="5" name="ORBIT_YAW_BEHAVIOUR_UNCHANGED">
        <description>Vehicle uses current yaw behaviour (unchanged). The vehicle-default yaw behaviour is used if this value is specified when orbit is first commanded.</description>
      </entry>
    </enum>
    <enum name="WIFI_CONFIG_AP_RESPONSE">
      <description>Possible responses from a WIFI_CONFIG_AP message.</description>
      <entry value="0" name="WIFI_CONFIG_AP_RESPONSE_UNDEFINED">
        <description>Undefined response. Likely an indicative of a system that doesn't support this request.</description>
      </entry>
      <entry value="1" name="WIFI_CONFIG_AP_RESPONSE_ACCEPTED">
        <description>Changes accepted.</description>
      </entry>
      <entry value="2" name="WIFI_CONFIG_AP_RESPONSE_REJECTED">
        <description>Changes rejected.</description>
      </entry>
      <entry value="3" name="WIFI_CONFIG_AP_RESPONSE_MODE_ERROR">
        <description>Invalid Mode.</description>
      </entry>
      <entry value="4" name="WIFI_CONFIG_AP_RESPONSE_SSID_ERROR">
        <description>Invalid SSID.</description>
      </entry>
      <entry value="5" name="WIFI_CONFIG_AP_RESPONSE_PASSWORD_ERROR">
        <description>Invalid Password.</description>
      </entry>
    </enum>
    <enum name="CELLULAR_CONFIG_RESPONSE">
      <description>Possible responses from a CELLULAR_CONFIG message.</description>
      <entry value="0" name="CELLULAR_CONFIG_RESPONSE_ACCEPTED">
        <description>Changes accepted.</description>
      </entry>
      <entry value="1" name="CELLULAR_CONFIG_RESPONSE_APN_ERROR">
        <description>Invalid APN.</description>
      </entry>
      <entry value="2" name="CELLULAR_CONFIG_RESPONSE_PIN_ERROR">
        <description>Invalid PIN.</description>
      </entry>
      <entry value="3" name="CELLULAR_CONFIG_RESPONSE_REJECTED">
        <description>Changes rejected.</description>
      </entry>
      <entry value="4" name="CELLULAR_CONFIG_BLOCKED_PUK_REQUIRED">
        <description>PUK is required to unblock SIM card.</description>
      </entry>
    </enum>
    <enum name="WIFI_CONFIG_AP_MODE">
      <description>WiFi Mode.</description>
      <entry value="0" name="WIFI_CONFIG_AP_MODE_UNDEFINED">
        <description>WiFi mode is undefined.</description>
      </entry>
      <entry value="1" name="WIFI_CONFIG_AP_MODE_AP">
        <description>WiFi configured as an access point.</description>
      </entry>
      <entry value="2" name="WIFI_CONFIG_AP_MODE_STATION">
        <description>WiFi configured as a station connected to an existing local WiFi network.</description>
      </entry>
      <entry value="3" name="WIFI_CONFIG_AP_MODE_DISABLED">
        <description>WiFi disabled.</description>
      </entry>
    </enum>
    <enum name="COMP_METADATA_TYPE">
      <description>Supported component metadata types. These are used in the "general" metadata file returned by COMPONENT_METADATA to provide information about supported metadata types. The types are not used directly in MAVLink messages.</description>
      <entry value="0" name="COMP_METADATA_TYPE_GENERAL">
        <description>General information about the component. General metadata includes information about other metadata types supported by the component. Files of this type must be supported, and must be downloadable from vehicle using a MAVLink FTP URI.</description>
      </entry>
      <entry value="1" name="COMP_METADATA_TYPE_PARAMETER">
        <description>Parameter meta data.</description>
      </entry>
      <entry value="2" name="COMP_METADATA_TYPE_COMMANDS">
        <description>Meta data that specifies which commands and command parameters the vehicle supports. (WIP)</description>
      </entry>
      <entry value="3" name="COMP_METADATA_TYPE_PERIPHERALS">
        <description>Meta data that specifies external non-MAVLink peripherals.</description>
      </entry>
      <entry value="4" name="COMP_METADATA_TYPE_EVENTS">
        <description>Meta data for the events interface.</description>
      </entry>
      <entry value="5" name="COMP_METADATA_TYPE_ACTUATORS">
        <description>Meta data for actuator configuration (motors, servos and vehicle geometry) and testing.</description>
      </entry>
    </enum>
    <enum name="ACTUATOR_CONFIGURATION">
      <description>Actuator configuration, used to change a setting on an actuator. Component information metadata can be used to know which outputs support which commands.</description>
      <entry value="0" name="ACTUATOR_CONFIGURATION_NONE">
        <description>Do nothing.</description>
      </entry>
      <entry value="1" name="ACTUATOR_CONFIGURATION_BEEP">
        <description>Command the actuator to beep now.</description>
      </entry>
      <entry value="2" name="ACTUATOR_CONFIGURATION_3D_MODE_ON">
        <description>Permanently set the actuator (ESC) to 3D mode (reversible thrust).</description>
      </entry>
      <entry value="3" name="ACTUATOR_CONFIGURATION_3D_MODE_OFF">
        <description>Permanently set the actuator (ESC) to non 3D mode (non-reversible thrust).</description>
      </entry>
      <entry value="4" name="ACTUATOR_CONFIGURATION_SPIN_DIRECTION1">
        <description>Permanently set the actuator (ESC) to spin direction 1 (which can be clockwise or counter-clockwise).</description>
      </entry>
      <entry value="5" name="ACTUATOR_CONFIGURATION_SPIN_DIRECTION2">
        <description>Permanently set the actuator (ESC) to spin direction 2 (opposite of direction 1).</description>
      </entry>
    </enum>
    <enum name="ACTUATOR_OUTPUT_FUNCTION">
      <description>Actuator output function. Values greater or equal to 1000 are autopilot-specific.</description>
      <entry value="0" name="ACTUATOR_OUTPUT_FUNCTION_NONE">
        <description>No function (disabled).</description>
      </entry>
      <entry value="1" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR1">
        <description>Motor 1</description>
      </entry>
      <entry value="2" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR2">
        <description>Motor 2</description>
      </entry>
      <entry value="3" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR3">
        <description>Motor 3</description>
      </entry>
      <entry value="4" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR4">
        <description>Motor 4</description>
      </entry>
      <entry value="5" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR5">
        <description>Motor 5</description>
      </entry>
      <entry value="6" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR6">
        <description>Motor 6</description>
      </entry>
      <entry value="7" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR7">
        <description>Motor 7</description>
      </entry>
      <entry value="8" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR8">
        <description>Motor 8</description>
      </entry>
      <entry value="9" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR9">
        <description>Motor 9</description>
      </entry>
      <entry value="10" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR10">
        <description>Motor 10</description>
      </entry>
      <entry value="11" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR11">
        <description>Motor 11</description>
      </entry>
      <entry value="12" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR12">
        <description>Motor 12</description>
      </entry>
      <entry value="13" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR13">
        <description>Motor 13</description>
      </entry>
      <entry value="14" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR14">
        <description>Motor 14</description>
      </entry>
      <entry value="15" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR15">
        <description>Motor 15</description>
      </entry>
      <entry value="16" name="ACTUATOR_OUTPUT_FUNCTION_MOTOR16">
        <description>Motor 16</description>
      </entry>
      <entry value="33" name="ACTUATOR_OUTPUT_FUNCTION_SERVO1">
        <description>Servo 1</description>
      </entry>
      <entry value="34" name="ACTUATOR_OUTPUT_FUNCTION_SERVO2">
        <description>Servo 2</description>
      </entry>
      <entry value="35" name="ACTUATOR_OUTPUT_FUNCTION_SERVO3">
        <description>Servo 3</description>
      </entry>
      <entry value="36" name="ACTUATOR_OUTPUT_FUNCTION_SERVO4">
        <description>Servo 4</description>
      </entry>
      <entry value="37" name="ACTUATOR_OUTPUT_FUNCTION_SERVO5">
        <description>Servo 5</description>
      </entry>
      <entry value="38" name="ACTUATOR_OUTPUT_FUNCTION_SERVO6">
        <description>Servo 6</description>
      </entry>
      <entry value="39" name="ACTUATOR_OUTPUT_FUNCTION_SERVO7">
        <description>Servo 7</description>
      </entry>
      <entry value="40" name="ACTUATOR_OUTPUT_FUNCTION_SERVO8">
        <description>Servo 8</description>
      </entry>
      <entry value="41" name="ACTUATOR_OUTPUT_FUNCTION_SERVO9">
        <description>Servo 9</description>
      </entry>
      <entry value="42" name="ACTUATOR_OUTPUT_FUNCTION_SERVO10">
        <description>Servo 10</description>
      </entry>
      <entry value="43" name="ACTUATOR_OUTPUT_FUNCTION_SERVO11">
        <description>Servo 11</description>
      </entry>
      <entry value="44" name="ACTUATOR_OUTPUT_FUNCTION_SERVO12">
        <description>Servo 12</description>
      </entry>
      <entry value="45" name="ACTUATOR_OUTPUT_FUNCTION_SERVO13">
        <description>Servo 13</description>
      </entry>
      <entry value="46" name="ACTUATOR_OUTPUT_FUNCTION_SERVO14">
        <description>Servo 14</description>
      </entry>
      <entry value="47" name="ACTUATOR_OUTPUT_FUNCTION_SERVO15">
        <description>Servo 15</description>
      </entry>
      <entry value="48" name="ACTUATOR_OUTPUT_FUNCTION_SERVO16">
        <description>Servo 16</description>
      </entry>
    </enum>
    <enum name="AUTOTUNE_AXIS" bitmask="true">
      <description>Axes that will be autotuned by MAV_CMD_DO_AUTOTUNE_ENABLE.
        Note that at least one flag must be set in MAV_CMD_DO_AUTOTUNE_ENABLE.param2: if none are set, the flight stack will tune its default set of axes.</description>
      <entry value="1" name="AUTOTUNE_AXIS_ROLL">
        <description>Autotune roll axis.</description>
      </entry>
      <entry value="2" name="AUTOTUNE_AXIS_PITCH">
        <description>Autotune pitch axis.</description>
      </entry>
      <entry value="4" name="AUTOTUNE_AXIS_YAW">
        <description>Autotune yaw axis.</description>
      </entry>
    </enum>
    <enum name="PREFLIGHT_STORAGE_PARAMETER_ACTION">
      <description>
        Actions for reading/writing parameters between persistent and volatile storage when using MAV_CMD_PREFLIGHT_STORAGE.
        (Commonly parameters are loaded from persistent storage (flash/EEPROM) into volatile storage (RAM) on startup and written back when they are changed.)
      </description>
      <entry value="0" name="PARAM_READ_PERSISTENT">
        <description>Read all parameters from persistent storage. Replaces values in volatile storage.</description>
      </entry>
      <entry value="1" name="PARAM_WRITE_PERSISTENT">
        <description>Write all parameter values to persistent storage (flash/EEPROM)</description>
      </entry>
      <entry value="2" name="PARAM_RESET_CONFIG_DEFAULT">
        <description>Reset all user configurable parameters to their default value (including airframe selection, sensor calibration data, safety settings, and so on). Does not reset values that contain operation counters and vehicle computed statistics.</description>
      </entry>
      <entry value="3" name="PARAM_RESET_SENSOR_DEFAULT">
        <description>Reset only sensor calibration parameters to factory defaults (or firmware default if not available)</description>
      </entry>
      <entry value="4" name="PARAM_RESET_ALL_DEFAULT">
        <description>Reset all parameters, including operation counters, to default values</description>
      </entry>
    </enum>
    <enum name="PREFLIGHT_STORAGE_MISSION_ACTION">
      <description>
        Actions for reading and writing plan information (mission, rally points, geofence) between persistent and volatile storage when using MAV_CMD_PREFLIGHT_STORAGE.
        (Commonly missions are loaded from persistent storage (flash/EEPROM) into volatile storage (RAM) on startup and written back when they are changed.)
      </description>
      <entry value="0" name="MISSION_READ_PERSISTENT">
        <description>Read current mission data from persistent storage</description>
      </entry>
      <entry value="1" name="MISSION_WRITE_PERSISTENT">
        <description>Write current mission data to persistent storage</description>
      </entry>
      <entry value="2" name="MISSION_RESET_DEFAULT">
        <description>Erase all mission data stored on the vehicle (both persistent and volatile storage)</description>
      </entry>
    </enum>
    <enum name="REBOOT_SHUTDOWN_CONDITIONS">
      <description>Specifies the conditions under which the MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN command should be accepted.</description>
      <entry value="0" name="REBOOT_SHUTDOWN_CONDITIONS_SAFETY_INTERLOCKED">
        <description>Reboot/Shutdown only if allowed by safety checks, such as being landed.</description>
      </entry>
      <entry value="20190226" name="REBOOT_SHUTDOWN_CONDITIONS_FORCE">
        <description>Force reboot/shutdown of the autopilot/component regardless of system state.</description>
      </entry>
    </enum>
    <!-- The MAV_CMD enum entries describe either: -->
    <!--  * the data payload of mission items (as used in the MISSION_ITEM_INT message) -->
    <!--  * the data payload of mavlink commands (as used in the COMMAND_INT and COMMAND_LONG messages) -->
    <!-- ALL the entries in the MAV_CMD enum have a maximum of 7 parameters -->
    <enum name="MAV_CMD">
      <description>Commands to be executed by the MAV. They can be executed on user request, or as part of a mission script. If the action is used in a mission, the parameter mapping to the waypoint/mission message is as follows: Param 1, Param 2, Param 3, Param 4, X: Param 5, Y:Param 6, Z:Param 7. This command list is similar what ARINC 424 is for commercial aircraft: A data format how to interpret waypoint/mission data. NaN and INT32_MAX may be used in float/integer params (respectively) to indicate optional/default values (e.g. to use the component's current yaw or latitude rather than a specific value). See https://mavlink.io/en/guide/xml_schema.html#MAV_CMD for information about the structure of the MAV_CMD entries</description>
      <entry value="16" name="MAV_CMD_NAV_WAYPOINT" hasLocation="true" isDestination="true">
        <description>Navigate to waypoint. This is intended for use in missions (for guided commands outside of missions use MAV_CMD_DO_REPOSITION).</description>
        <param index="1" label="Hold" units="s" minValue="0">Hold time. (ignored by fixed wing, time to stay at waypoint for rotary wing)</param>
        <param index="2" label="Accept Radius" units="m" minValue="0">Acceptance radius (if the sphere with this radius is hit, the waypoint counts as reached)</param>
        <param index="3" label="Pass Radius" units="m">0 to pass through the WP, if &gt; 0 radius to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.</param>
        <param index="4" label="Yaw" units="deg">Desired yaw angle at waypoint (rotary wing). NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.).</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="17" name="MAV_CMD_NAV_LOITER_UNLIM" hasLocation="true" isDestination="true">
        <description>Loiter around this waypoint an unlimited amount of time</description>
        <param index="1">Empty</param>
        <param index="2">Empty</param>
        <param index="3" label="Radius" units="m">Loiter radius around waypoint for forward-only moving vehicles (not multicopters). If positive loiter clockwise, else counter-clockwise</param>
        <param index="4" label="Yaw" units="deg">Desired yaw angle. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.).</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="18" name="MAV_CMD_NAV_LOITER_TURNS" hasLocation="true" isDestination="true">
        <description>Loiter around this waypoint for X turns</description>
        <param index="1" label="Turns" minValue="0">Number of turns.</param>
        <param index="2" label="Heading Required" minValue="0" maxValue="1" increment="1">Leave loiter circle only once heading towards the next waypoint (0 = False)</param>
        <param index="3" label="Radius" units="m">Loiter radius around waypoint for forward-only moving vehicles (not multicopters). If positive loiter clockwise, else counter-clockwise</param>
        <param index="4" label="Xtrack Location">Loiter circle exit location and/or path to next waypoint ("xtrack") for forward-only moving vehicles (not multicopters). 0 for the vehicle to converge towards the center xtrack when it leaves the loiter (the line between the centers of the current and next waypoint), 1 to converge to the direct line between the location that the vehicle exits the loiter radius and the next waypoint. Otherwise the angle (in degrees) between the tangent of the loiter circle and the center xtrack at which the vehicle must leave the loiter (and converge to the center xtrack). NaN to use the current system default xtrack behaviour.</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="19" name="MAV_CMD_NAV_LOITER_TIME" hasLocation="true" isDestination="true">
        <description>Loiter at the specified latitude, longitude and altitude for a certain amount of time. Multicopter vehicles stop at the point (within a vehicle-specific acceptance radius). Forward-only moving vehicles (e.g. fixed-wing) circle the point with the specified radius/direction. If the Heading Required parameter (2) is non-zero forward moving aircraft will only leave the loiter circle once heading towards the next waypoint.</description>
        <param index="1" label="Time" units="s" minValue="0">Loiter time (only starts once Lat, Lon and Alt is reached).</param>
        <param index="2" label="Heading Required" minValue="0" maxValue="1" increment="1">Leave loiter circle only once heading towards the next waypoint (0 = False)</param>
        <param index="3" label="Radius" units="m">Loiter radius around waypoint for forward-only moving vehicles (not multicopters). If positive loiter clockwise, else counter-clockwise.</param>
        <param index="4" label="Xtrack Location">Loiter circle exit location and/or path to next waypoint ("xtrack") for forward-only moving vehicles (not multicopters). 0 for the vehicle to converge towards the center xtrack when it leaves the loiter (the line between the centers of the current and next waypoint), 1 to converge to the direct line between the location that the vehicle exits the loiter radius and the next waypoint. Otherwise the angle (in degrees) between the tangent of the loiter circle and the center xtrack at which the vehicle must leave the loiter (and converge to the center xtrack). NaN to use the current system default xtrack behaviour.</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="20" name="MAV_CMD_NAV_RETURN_TO_LAUNCH" hasLocation="false" isDestination="false">
        <description>Return to launch location</description>
        <param index="1">Empty</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="21" name="MAV_CMD_NAV_LAND" hasLocation="true" isDestination="true">
        <description>Land at location.</description>
        <param index="1" label="Abort Alt" units="m">Minimum target altitude if landing is aborted (0 = undefined/use system default).</param>
        <param index="2" label="Land Mode" enum="PRECISION_LAND_MODE">Precision land mode.</param>
        <param index="3">Empty.</param>
        <param index="4" label="Yaw Angle" units="deg">Desired yaw angle. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.).</param>
        <param index="5" label="Latitude">Latitude.</param>
        <param index="6" label="Longitude">Longitude.</param>
        <param index="7" label="Altitude" units="m">Landing altitude (ground level in current frame).</param>
      </entry>
      <entry value="22" name="MAV_CMD_NAV_TAKEOFF" hasLocation="true" isDestination="true">
        <description>Takeoff from ground / hand. Vehicles that support multiple takeoff modes (e.g. VTOL quadplane) should take off using the currently configured mode.</description>
        <param index="1" label="Pitch" units="deg">Minimum pitch (if airspeed sensor present), desired pitch without sensor</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4" label="Yaw" units="deg">Yaw angle (if magnetometer present), ignored without magnetometer. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.).</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="23" name="MAV_CMD_NAV_LAND_LOCAL" hasLocation="true" isDestination="true">
        <description>Land at local position (local frame only)</description>
        <param index="1" label="Target" minValue="0" increment="1">Landing target number (if available)</param>
        <param index="2" label="Offset" units="m" minValue="0">Maximum accepted offset from desired landing position - computed magnitude from spherical coordinates: d = sqrt(x^2 + y^2 + z^2), which gives the maximum accepted distance between the desired landing position and the position where the vehicle is about to land</param>
        <param index="3" label="Descend Rate" units="m/s">Landing descend rate</param>
        <param index="4" label="Yaw" units="rad">Desired yaw angle</param>
        <param index="5" label="Y Position" units="m">Y-axis position</param>
        <param index="6" label="X Position" units="m">X-axis position</param>
        <param index="7" label="Z Position" units="m">Z-axis / ground level position</param>
      </entry>
      <entry value="24" name="MAV_CMD_NAV_TAKEOFF_LOCAL" hasLocation="true" isDestination="true">
        <description>Takeoff from local position (local frame only)</description>
        <param index="1" label="Pitch" units="rad">Minimum pitch (if airspeed sensor present), desired pitch without sensor</param>
        <param index="2">Empty</param>
        <param index="3" label="Ascend Rate" units="m/s">Takeoff ascend rate</param>
        <param index="4" label="Yaw" units="rad">Yaw angle (if magnetometer or another yaw estimation source present), ignored without one of these</param>
        <param index="5" label="Y Position" units="m">Y-axis position</param>
        <param index="6" label="X Position" units="m">X-axis position</param>
        <param index="7" label="Z Position" units="m">Z-axis position</param>
      </entry>
      <entry value="25" name="MAV_CMD_NAV_FOLLOW" hasLocation="true" isDestination="false">
        <description>Vehicle following, i.e. this waypoint represents the position of a moving vehicle</description>
        <param index="1" label="Following" increment="1">Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation</param>
        <param index="2" label="Ground Speed" units="m/s">Ground speed of vehicle to be followed</param>
        <param index="3" label="Radius" units="m">Radius around waypoint. If positive loiter clockwise, else counter-clockwise</param>
        <param index="4" label="Yaw" units="deg">Desired yaw angle.</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="30" name="MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT" hasLocation="false" isDestination="true">
        <description>Continue on the current course and climb/descend to specified altitude.  When the altitude is reached continue to the next command (i.e., don't proceed to the next command until the desired altitude is reached.</description>
        <param index="1" label="Action" minValue="0" maxValue="2" increment="1">Climb or Descend (0 = Neutral, command completes when within 5m of this command's altitude, 1 = Climbing, command completes when at or above this command's altitude, 2 = Descending, command completes when at or below this command's altitude.</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7" label="Altitude" units="m">Desired altitude</param>
      </entry>
      <entry value="31" name="MAV_CMD_NAV_LOITER_TO_ALT" hasLocation="true" isDestination="true">
        <description>Begin loiter at the specified Latitude and Longitude.  If Lat=Lon=0, then loiter at the current position.  Don't consider the navigation command complete (don't leave loiter) until the altitude has been reached. Additionally, if the Heading Required parameter is non-zero the aircraft will not leave the loiter until heading toward the next waypoint.</description>
        <param index="1" label="Heading Required" minValue="0" maxValue="1" increment="1">Leave loiter circle only once heading towards the next waypoint (0 = False)</param>
        <param index="2" label="Radius" units="m">Loiter radius around waypoint for forward-only moving vehicles (not multicopters). If positive loiter clockwise, negative counter-clockwise, 0 means no change to standard loiter.</param>
        <param index="3">Empty</param>
        <param index="4" label="Xtrack Location" minValue="0" maxValue="1" increment="1">Loiter circle exit location and/or path to next waypoint ("xtrack") for forward-only moving vehicles (not multicopters). 0 for the vehicle to converge towards the center xtrack when it leaves the loiter (the line between the centers of the current and next waypoint), 1 to converge to the direct line between the location that the vehicle exits the loiter radius and the next waypoint. Otherwise the angle (in degrees) between the tangent of the loiter circle and the center xtrack at which the vehicle must leave the loiter (and converge to the center xtrack). NaN to use the current system default xtrack behaviour.</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="32" name="MAV_CMD_DO_FOLLOW" hasLocation="false" isDestination="false">
        <description>Begin following a target</description>
        <param index="1" label="System ID" minValue="0" maxValue="255" increment="1">System ID (of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position hold mode.</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4" label="Altitude Mode" minValue="0" maxValue="2" increment="1">Altitude mode: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude above home.</param>
        <param index="5" label="Altitude" units="m">Altitude above home. (used if mode=2)</param>
        <param index="6">Reserved</param>
        <param index="7" label="Time to Land" units="s" minValue="0">Time to land in which the MAV should go to the default position hold mode after a message RX timeout.</param>
      </entry>
      <entry value="33" name="MAV_CMD_DO_FOLLOW_REPOSITION" hasLocation="false" isDestination="false">
        <description>Reposition the MAV after a follow target command has been sent</description>
        <param index="1" label="Camera Q1">Camera q1 (where 0 is on the ray from the camera to the tracking device)</param>
        <param index="2" label="Camera Q2">Camera q2</param>
        <param index="3" label="Camera Q3">Camera q3</param>
        <param index="4" label="Camera Q4">Camera q4</param>
        <param index="5" label="Altitude Offset" units="m">altitude offset from target</param>
        <param index="6" label="X Offset" units="m">X offset from target</param>
        <param index="7" label="Y Offset" units="m">Y offset from target</param>
      </entry>
      <entry value="34" name="MAV_CMD_DO_ORBIT" hasLocation="true" isDestination="true">
        <wip/>
        <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
        <description>Start orbiting on the circumference of a circle defined by the parameters. Setting values to NaN/INT32_MAX (as appropriate) results in using defaults.</description>
        <param index="1" label="Radius" units="m">Radius of the circle. Positive: orbit clockwise. Negative: orbit counter-clockwise. NaN: Use vehicle default radius, or current radius if already orbiting.</param>
        <param index="2" label="Velocity" units="m/s">Tangential Velocity. NaN: Use vehicle default velocity, or current velocity if already orbiting.</param>
        <param index="3" label="Yaw Behavior" enum="ORBIT_YAW_BEHAVIOUR">Yaw behavior of the vehicle.</param>
        <param index="4" label="Orbits" units="rad" minValue="0" default="0">Orbit around the centre point for this many radians (i.e. for a three-quarter orbit set 270*Pi/180). 0: Orbit forever. NaN: Use vehicle default, or current value if already orbiting.</param>
        <param index="5" label="Latitude/X">Center point latitude (if no MAV_FRAME specified) / X coordinate according to MAV_FRAME. INT32_MAX (or NaN if sent in COMMAND_LONG): Use current vehicle position, or current center if already orbiting.</param>
        <param index="6" label="Longitude/Y">Center point longitude (if no MAV_FRAME specified) / Y coordinate according to MAV_FRAME. INT32_MAX (or NaN if sent in COMMAND_LONG): Use current vehicle position, or current center if already orbiting.</param>
        <param index="7" label="Altitude/Z">Center point altitude (MSL) (if no MAV_FRAME specified) / Z coordinate according to MAV_FRAME. NaN: Use current vehicle altitude.</param>
      </entry>
      <entry value="80" name="MAV_CMD_NAV_ROI" hasLocation="true" isDestination="false">
        <deprecated since="2018-01" replaced_by="`MAV_CMD_DO_SET_ROI_*`"/>
        <description>Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicle's control system to control the vehicle attitude and the attitude of various sensors such as cameras.</description>
        <param index="1" label="ROI Mode" enum="MAV_ROI">Region of interest mode.</param>
        <param index="2" label="WP Index" minValue="0" increment="1">Waypoint index/ target ID. (see MAV_ROI enum)</param>
        <param index="3" label="ROI Index" minValue="0" increment="1">ROI index (allows a vehicle to manage multiple ROI's)</param>
        <param index="4">Empty</param>
        <param index="5" label="X">x the location of the fixed ROI (see MAV_FRAME)</param>
        <param index="6" label="Y">y</param>
        <param index="7" label="Z">z</param>
      </entry>
      <entry value="81" name="MAV_CMD_NAV_PATHPLANNING" hasLocation="true" isDestination="true">
        <description>Control autonomous path planning on the MAV.</description>
        <param index="1" label="Local Ctrl" minValue="0" maxValue="2" increment="1">0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning</param>
        <param index="2" label="Global Ctrl" minValue="0" maxValue="3" increment="1">0: Disable full path planning (without resetting map), 1: Enable, 2: Enable and reset map/occupancy grid, 3: Enable and reset planned route, but not occupancy grid</param>
        <param index="3">Empty</param>
        <param index="4" label="Yaw" units="deg">Yaw angle at goal</param>
        <param index="5" label="Latitude/X">Latitude/X of goal</param>
        <param index="6" label="Longitude/Y">Longitude/Y of goal</param>
        <param index="7" label="Altitude/Z">Altitude/Z of goal</param>
      </entry>
      <entry value="82" name="MAV_CMD_NAV_SPLINE_WAYPOINT" hasLocation="true" isDestination="true">
        <description>Navigate to waypoint using a spline path.</description>
        <param index="1" label="Hold" units="s" minValue="0">Hold time. (ignored by fixed wing, time to stay at waypoint for rotary wing)</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5" label="Latitude/X">Latitude/X of goal</param>
        <param index="6" label="Longitude/Y">Longitude/Y of goal</param>
        <param index="7" label="Altitude/Z">Altitude/Z of goal</param>
      </entry>
      <entry value="84" name="MAV_CMD_NAV_VTOL_TAKEOFF" hasLocation="true" isDestination="true">
        <description>Takeoff from ground using VTOL mode, and transition to forward flight with specified heading. The command should be ignored by vehicles that dont support both VTOL and fixed-wing flight (multicopters, boats,etc.).</description>
        <param index="1">Empty</param>
        <param index="2" label="Transition Heading" enum="VTOL_TRANSITION_HEADING">Front transition heading.</param>
        <param index="3">Empty</param>
        <param index="4" label="Yaw Angle" units="deg">Yaw angle. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.).</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="85" name="MAV_CMD_NAV_VTOL_LAND" hasLocation="true" isDestination="true">
        <description>Land using VTOL mode</description>
        <param index="1" label="Land Options" enum="NAV_VTOL_LAND_OPTIONS">Landing behaviour.</param>
        <param index="2">Empty</param>
        <param index="3" label="Approach Altitude" units="m">Approach altitude (with the same reference as the Altitude field). NaN if unspecified.</param>
        <param index="4" label="Yaw" units="deg">Yaw angle. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.).</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Ground Altitude" units="m">Altitude (ground level) relative to the current coordinate frame. NaN to use system default landing altitude (ignore value).</param>
      </entry>
      <!-- IDs 90 and 91 are reserved until the end of 2014,
                    as they were used in some conflicting proposals
                    between PX4 and ArduPilot and need to be kept
                    unused to prevent errors -->
      <entry value="92" name="MAV_CMD_NAV_GUIDED_ENABLE" hasLocation="false" isDestination="false">
        <description>hand control over to an external controller</description>
        <param index="1" label="Enable" minValue="0" maxValue="1" increment="1">On / Off (&gt; 0.5f on)</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="93" name="MAV_CMD_NAV_DELAY" hasLocation="false" isDestination="false">
        <description>Delay the next navigation command a number of seconds or until a specified time</description>
        <param index="1" label="Delay" units="s" minValue="-1" increment="1">Delay (-1 to enable time-of-day fields)</param>
        <param index="2" label="Hour" minValue="-1" maxValue="23" increment="1">hour (24h format, UTC, -1 to ignore)</param>
        <param index="3" label="Minute" minValue="-1" maxValue="59" increment="1">minute (24h format, UTC, -1 to ignore)</param>
        <param index="4" label="Second" minValue="-1" maxValue="59" increment="1">second (24h format, UTC, -1 to ignore)</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="94" name="MAV_CMD_NAV_PAYLOAD_PLACE" hasLocation="true" isDestination="true">
        <description>Descend and place payload. Vehicle moves to specified location, descends until it detects a hanging payload has reached the ground, and then releases the payload. If ground is not detected before the reaching the maximum descent value (param1), the command will complete without releasing the payload.</description>
        <param index="1" label="Max Descent" units="m" minValue="0">Maximum distance to descend.</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="95" name="MAV_CMD_NAV_LAST" hasLocation="false" isDestination="false">
        <description>NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration</description>
        <param index="1">Empty</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="112" name="MAV_CMD_CONDITION_DELAY" hasLocation="false" isDestination="false">
        <description>Delay mission state machine.</description>
        <param index="1" label="Delay" units="s" minValue="0">Delay</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="113" name="MAV_CMD_CONDITION_CHANGE_ALT" hasLocation="false" isDestination="true">
        <description>Ascend/descend to target altitude at specified rate. Delay mission state machine until desired altitude reached.</description>
        <param index="1" label="Rate" units="m/s">Descent / Ascend rate.</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7" label="Altitude" units="m">Target Altitude</param>
      </entry>
      <entry value="114" name="MAV_CMD_CONDITION_DISTANCE" hasLocation="false" isDestination="false">
        <description>Delay mission state machine until within desired distance of next NAV point.</description>
        <param index="1" label="Distance" units="m" minValue="0">Distance.</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="115" name="MAV_CMD_CONDITION_YAW" hasLocation="false" isDestination="false">
        <description>Reach a certain target angle.</description>
        <param index="1" label="Angle" units="deg" minValue="0" maxValue="360">target angle [0-360]. Absolute angles: 0 is north. Relative angle: 0 is initial yaw. Direction set by param3.</param>
        <param index="2" label="Angular Speed" units="deg/s" minValue="0">angular speed</param>
        <param index="3" label="Direction" minValue="-1" maxValue="1" increment="1">direction: -1: counter clockwise, 0: shortest direction, 1: clockwise</param>
        <param index="4" label="Relative" minValue="0" maxValue="1" increment="1">0: absolute angle, 1: relative offset</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="159" name="MAV_CMD_CONDITION_LAST" hasLocation="false" isDestination="false">
        <description>NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration</description>
        <param index="1">Empty</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="176" name="MAV_CMD_DO_SET_MODE" hasLocation="false" isDestination="false">
        <description>Set system mode.</description>
        <param index="1" label="Mode" enum="MAV_MODE_FLAG">Mode flags. MAV_MODE values can be used to set some mode flag combinations.</param>
        <param index="2" label="Custom Mode">Custom system-specific mode (see target autopilot specifications for mode information). If MAV_MODE_FLAG_CUSTOM_MODE_ENABLED is set in param1 (mode) this mode is used: otherwise the field is ignored.</param>
        <param index="3" label="Custom Submode">Custom sub mode - this is system specific, please refer to the individual autopilot specifications for details.</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="177" name="MAV_CMD_DO_JUMP" hasLocation="false" isDestination="false">
        <description>Jump to the desired command in the mission list.  Repeat this action only the specified number of times</description>
        <param index="1" label="Number" minValue="0" increment="1">Sequence number</param>
        <param index="2" label="Repeat" minValue="0" increment="1">Repeat count</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="178" name="MAV_CMD_DO_CHANGE_SPEED" hasLocation="false" isDestination="false">
        <description>Change speed and/or throttle set points. The value persists until it is overridden or there is a mode change</description>
        <param index="1" label="Speed Type" enum="SPEED_TYPE">Speed type of value set in param2 (such as airspeed, ground speed, and so on)</param>
        <param index="2" label="Speed" units="m/s" minValue="-2">Speed (-1 indicates no change, -2 indicates return to default vehicle speed)</param>
        <param index="3" label="Throttle" units="%" minValue="-2">Throttle (-1 indicates no change, -2 indicates return to default vehicle throttle value)</param>
        <param index="4" reserved="true" default="0"/>
        <param index="5" reserved="true" default="0"/>
        <param index="6" reserved="true" default="0"/>
        <param index="7" reserved="true" default="0"/>
      </entry>
      <entry value="179" name="MAV_CMD_DO_SET_HOME" hasLocation="true" isDestination="false">
        <description>
          Sets the home position to either to the current position or a specified position.
          The home position is the default position that the system will return to and land on.
          The position is set automatically by the system during the takeoff (and may also be set using this command).
          Note: the current home position may be emitted in a HOME_POSITION message on request (using MAV_CMD_REQUEST_MESSAGE with param1=242).
        </description>
        <param index="1" label="Use Current" minValue="0" maxValue="1" increment="1">Use current (1=use current location, 0=use specified location)</param>
        <param index="2" label="Roll" units="deg" minValue="-180" maxValue="180">Roll angle (of surface). Range: -180..180 degrees. NAN or 0 means value not set. 0.01 indicates zero roll.</param>
        <param index="3" label="Pitch" units="deg" minValue="-90" maxValue="90">Pitch angle (of surface). Range: -90..90 degrees. NAN or 0 means value not set. 0.01 means zero pitch.</param>
        <param index="4" label="Yaw" units="deg" minValue="-180" maxValue="180">Yaw angle. NaN to use default heading. Range: -180..180 degrees.</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="180" name="MAV_CMD_DO_SET_PARAMETER" hasLocation="false" isDestination="false">
        <deprecated since="2024-04" replaced_by="PARAM_SET"/>
        <description>Set a system parameter.  Caution!  Use of this command requires knowledge of the numeric enumeration value of the parameter.</description>
        <param index="1" label="Number" minValue="0" increment="1">Parameter number</param>
        <param index="2" label="Value">Parameter value</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="181" name="MAV_CMD_DO_SET_RELAY" hasLocation="false" isDestination="false">
        <description>Set a relay to a condition.</description>
        <param index="1" label="Instance" minValue="0" increment="1">Relay instance number.</param>
        <param index="2" label="Setting" minValue="0" increment="1">Setting. (1=on, 0=off, others possible depending on system hardware)</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="182" name="MAV_CMD_DO_REPEAT_RELAY" hasLocation="false" isDestination="false">
        <description>Cycle a relay on and off for a desired number of cycles with a desired period.</description>
        <param index="1" label="Instance" minValue="0" increment="1">Relay instance number.</param>
        <param index="2" label="Count" minValue="1" increment="1">Cycle count.</param>
        <param index="3" label="Time" units="s" minValue="0">Cycle time.</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="183" name="MAV_CMD_DO_SET_SERVO" hasLocation="false" isDestination="false">
        <description>Set a servo to a desired PWM value.</description>
        <param index="1" label="Instance" minValue="0" increment="1">Servo instance number.</param>
        <param index="2" label="PWM" units="us" minValue="0" increment="1">Pulse Width Modulation.</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="184" name="MAV_CMD_DO_REPEAT_SERVO" hasLocation="false" isDestination="false">
        <description>Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.</description>
        <param index="1" label="Instance" minValue="0" increment="1">Servo instance number.</param>
        <param index="2" label="PWM" units="us" minValue="0" increment="1">Pulse Width Modulation.</param>
        <param index="3" label="Count" minValue="1" increment="1">Cycle count.</param>
        <param index="4" label="Time" units="s" minValue="0">Cycle time.</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="185" name="MAV_CMD_DO_FLIGHTTERMINATION" hasLocation="false" isDestination="false">
        <description>Terminate flight immediately.
          Flight termination immediately and irreversibly terminates the current flight, returning the vehicle to ground.
          The vehicle will ignore RC or other input until it has been power-cycled.
          Termination may trigger safety measures, including: disabling motors and deployment of parachute on multicopters, and setting flight surfaces to initiate a landing pattern on fixed-wing).
          On multicopters without a parachute it may trigger a crash landing.
          Support for this command can be tested using the protocol bit: MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION.
          Support for this command can also be tested by sending the command with param1=0 (&lt; 0.5); the ACK should be either MAV_RESULT_FAILED or MAV_RESULT_UNSUPPORTED.
        </description>
        <param index="1" label="Terminate" minValue="0" maxValue="1" increment="1">Flight termination activated if &gt; 0.5. Otherwise not activated and ACK with MAV_RESULT_FAILED.</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="186" name="MAV_CMD_DO_CHANGE_ALTITUDE" hasLocation="false" isDestination="false">
        <description>Change altitude set point.</description>
        <param index="1" label="Altitude" units="m">Altitude.</param>
        <param index="2" label="Frame" enum="MAV_FRAME">Frame of new altitude.</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="187" name="MAV_CMD_DO_SET_ACTUATOR" hasLocation="false" isDestination="false">
        <description>Sets actuators (e.g. servos) to a desired value. The actuator numbers are mapped to specific outputs (e.g. on any MAIN or AUX PWM or UAVCAN) using a flight-stack specific mechanism (i.e. a parameter).</description>
        <param index="1" label="Actuator 1" minValue="-1" maxValue="1">Actuator 1 value, scaled from [-1 to 1]. NaN to ignore.</param>
        <param index="2" label="Actuator 2" minValue="-1" maxValue="1">Actuator 2 value, scaled from [-1 to 1]. NaN to ignore.</param>
        <param index="3" label="Actuator 3" minValue="-1" maxValue="1">Actuator 3 value, scaled from [-1 to 1]. NaN to ignore.</param>
        <param index="4" label="Actuator 4" minValue="-1" maxValue="1">Actuator 4 value, scaled from [-1 to 1]. NaN to ignore.</param>
        <param index="5" label="Actuator 5" minValue="-1" maxValue="1">Actuator 5 value, scaled from [-1 to 1]. NaN to ignore.</param>
        <param index="6" label="Actuator 6" minValue="-1" maxValue="1">Actuator 6 value, scaled from [-1 to 1]. NaN to ignore.</param>
        <param index="7" label="Index" minValue="0" increment="1">Index of actuator set (i.e if set to 1, Actuator 1 becomes Actuator 7)</param>
      </entry>
      <entry value="188" name="MAV_CMD_DO_RETURN_PATH_START" hasLocation="true" isDestination="false">
        <wip/>
        <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
        <description>Mission item to specify the start of a failsafe/landing return-path segment (the end of the segment is the next MAV_CMD_DO_LAND_START item).
          A vehicle that is using missions for landing (e.g. in a return mode) will join the mission on the closest path of the return-path segment (instead of MAV_CMD_DO_LAND_START or the nearest waypoint).
          The main use case is to minimize the failsafe flight path in corridor missions, where the inbound/outbound paths are constrained (by geofences) to the same particular path.
          The MAV_CMD_NAV_RETURN_PATH_START would be placed at the start of the return path.
          If a failsafe occurs on the outbound path the vehicle will move to the nearest point on the return path (which is parallel for this kind of mission), effectively turning round and following the shortest path to landing.
          If a failsafe occurs on the inbound path the vehicle is already on the return segment and will continue to landing.
          The Latitude/Longitude/Altitude are optional, and may be set to 0 if not needed.
          If specified, the item defines the waypoint at which the return segment starts.
          If sent using as a command, the vehicle will perform a mission landing (using the land segment if defined) or reject the command if mission landings are not supported, or no mission landing is defined. When used as a command any position information in the command is ignored.
        </description>
        <param index="1">Empty</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5" label="Latitude">Latitudee. 0: not used.</param>
        <param index="6" label="Longitude">Longitudee. 0: not used.</param>
        <param index="7" label="Altitude" units="m">Altitudee. 0: not used.</param>
      </entry>
      <entry value="189" name="MAV_CMD_DO_LAND_START" hasLocation="true" isDestination="false">
        <description>Mission item to mark the start of a mission landing pattern, or a command to land with a mission landing pattern.

        When used in a mission, this is a marker for the start of a sequence of mission items that represent a landing pattern.
        It should be followed by a navigation item that defines the first waypoint of the landing sequence.
        The start marker positional params are used only for selecting what landing pattern to use if several are defined in the mission (the selected pattern will be the one with the marker position that is closest to the vehicle when a landing is commanded).
        If the marker item position has zero-values for latitude, longitude, and altitude, then landing pattern selection is instead based on the position of the first waypoint in the landing sequence.

	      When sent as a command it triggers a landing using a mission landing pattern.
	      The location parameters are not used in this case, and should be set to 0.
	</description>
        <param index="1">Empty</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5" label="Latitude">Latitude for landing sequence selection, or 0 (see description). Ignored in commands (set 0).</param>
        <param index="6" label="Longitude">Longitude for landing sequence selection, or 0 (see description). Ignored in commands (set 0).</param>
        <param index="7" label="Altitude" units="m">Altitude for landing sequence selection, or 0 (see description). Ignored in commands (set 0).</param>
      </entry>
      <entry value="190" name="MAV_CMD_DO_RALLY_LAND" hasLocation="false" isDestination="false">
        <description>Mission command to perform a landing from a rally point.</description>
        <param index="1" label="Altitude" units="m">Break altitude</param>
        <param index="2" label="Speed" units="m/s">Landing speed</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="191" name="MAV_CMD_DO_GO_AROUND" hasLocation="false" isDestination="false">
        <description>Mission command to safely abort an autonomous landing.</description>
        <param index="1" label="Altitude" units="m">Altitude</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="192" name="MAV_CMD_DO_REPOSITION" hasLocation="true" isDestination="true">
        <description>Reposition the vehicle to a specific WGS84 global position. This command is intended for guided commands (for missions use MAV_CMD_NAV_WAYPOINT instead).</description>
        <param index="1" label="Speed" units="m/s" minValue="-1">Ground speed, less than 0 (-1) for default</param>
        <param index="2" label="Bitmask" enum="MAV_DO_REPOSITION_FLAGS">Bitmask of option flags.</param>
        <param index="3" label="Radius" units="m">Loiter radius for planes. Positive values only, direction is controlled by Yaw value. A value of zero or NaN is ignored. </param>
        <param index="4" label="Yaw" units="rad">Yaw heading. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home, etc.). For planes indicates loiter direction (0: clockwise, 1: counter clockwise)</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="193" name="MAV_CMD_DO_PAUSE_CONTINUE" hasLocation="false" isDestination="false">
        <description>If in a GPS controlled position mode, hold the current position or continue.</description>
        <param index="1" label="Continue" minValue="0" maxValue="1" increment="1">0: Pause current mission or reposition command, hold current position. 1: Continue mission. A VTOL capable vehicle should enter hover mode (multicopter and VTOL planes). A plane should loiter with the default loiter radius.</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5">Reserved</param>
        <param index="6">Reserved</param>
        <param index="7">Reserved</param>
      </entry>
      <entry value="194" name="MAV_CMD_DO_SET_REVERSE" hasLocation="false" isDestination="false">
        <description>Set moving direction to forward or reverse.</description>
        <param index="1" label="Reverse" minValue="0" maxValue="1" increment="1">Direction (0=Forward, 1=Reverse)</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="195" name="MAV_CMD_DO_SET_ROI_LOCATION" hasLocation="true" isDestination="false">
        <description>Sets the region of interest (ROI) to a location. This can then be used by the vehicle's control system to control the vehicle attitude and the attitude of various sensors such as cameras. This command can be sent to a gimbal manager but not to a gimbal device. A gimbal is not to react to this message.</description>
        <param index="1" label="Gimbal device ID">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5" label="Latitude" units="degE7">Latitude of ROI location</param>
        <param index="6" label="Longitude" units="degE7">Longitude of ROI location</param>
        <param index="7" label="Altitude" units="m">Altitude of ROI location</param>
      </entry>
      <entry value="196" name="MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET" hasLocation="false" isDestination="false">
        <description>Sets the region of interest (ROI) to be toward next waypoint, with optional pitch/roll/yaw offset. This can then be used by the vehicle's control system to control the vehicle attitude and the attitude of various sensors such as cameras. This command can be sent to a gimbal manager but not to a gimbal device. A gimbal device is not to react to this message.</description>
        <param index="1" label="Gimbal device ID">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5" label="Pitch Offset" units="deg">Pitch offset from next waypoint, positive pitching up</param>
        <param index="6" label="Roll Offset" units="deg">Roll offset from next waypoint, positive rolling to the right</param>
        <param index="7" label="Yaw Offset" units="deg">Yaw offset from next waypoint, positive yawing to the right</param>
      </entry>
      <entry value="197" name="MAV_CMD_DO_SET_ROI_NONE" hasLocation="false" isDestination="false">
        <description>Cancels any previous ROI command returning the vehicle/sensors to default flight characteristics. This can then be used by the vehicle's control system to control the vehicle attitude and the attitude of various sensors such as cameras. This command can be sent to a gimbal manager but not to a gimbal device. A gimbal device is not to react to this message. After this command the gimbal manager should go back to manual input if available, and otherwise assume a neutral position.</description>
        <param index="1" label="Gimbal device ID">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="198" name="MAV_CMD_DO_SET_ROI_SYSID">
        <description>Mount tracks system with specified system ID. Determination of target vehicle position may be done with GLOBAL_POSITION_INT or any other means. This command can be sent to a gimbal manager but not to a gimbal device. A gimbal device is not to react to this message.</description>
        <param index="1" label="System ID" minValue="1" maxValue="255" increment="1">System ID</param>
        <param index="2" label="Gimbal device ID">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</param>
      </entry>
      <entry value="200" name="MAV_CMD_DO_CONTROL_VIDEO" hasLocation="false" isDestination="false">
        <description>Control onboard camera system.</description>
        <param index="1" label="ID" minValue="-1" increment="1">Camera ID (-1 for all)</param>
        <param index="2" label="Transmission" minValue="0" maxValue="2" increment="1">Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw</param>
        <param index="3" label="Interval" units="s" minValue="0">Transmission mode: 0: video stream, &gt;0: single images every n seconds</param>
        <param index="4" label="Recording" minValue="0" maxValue="2" increment="1">Recording: 0: disabled, 1: enabled compressed, 2: enabled raw</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="201" name="MAV_CMD_DO_SET_ROI" hasLocation="true" isDestination="false">
        <deprecated since="2018-01" replaced_by="`MAV_CMD_DO_SET_ROI_*`"/>
        <description>Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicle's control system to control the vehicle attitude and the attitude of various sensors such as cameras.</description>
        <param index="1" label="ROI Mode" enum="MAV_ROI">Region of interest mode.</param>
        <param index="2" label="WP Index" minValue="0" increment="1">Waypoint index/ target ID (depends on param 1).</param>
        <param index="3" label="ROI Index" minValue="0" increment="1">Region of interest index. (allows a vehicle to manage multiple ROI's)</param>
        <param index="4">Empty</param>
        <param index="5">MAV_ROI_WPNEXT: pitch offset from next waypoint, MAV_ROI_LOCATION: latitude</param>
        <param index="6">MAV_ROI_WPNEXT: roll offset from next waypoint, MAV_ROI_LOCATION: longitude</param>
        <param index="7">MAV_ROI_WPNEXT: yaw offset from next waypoint, MAV_ROI_LOCATION: altitude</param>
      </entry>
      <!-- Camera Controller Mission Commands Enumeration -->
      <entry value="202" name="MAV_CMD_DO_DIGICAM_CONFIGURE" hasLocation="false" isDestination="false">
        <description>Configure digital camera. This is a fallback message for systems that have not yet implemented PARAM_EXT_XXX messages and camera definition files (see https://mavlink.io/en/services/camera_def.html ).</description>
        <param index="1" label="Mode" minValue="0" increment="1">Modes: P, TV, AV, M, Etc.</param>
        <param index="2" label="Shutter Speed" minValue="0" increment="1">Shutter speed: Divisor number for one second.</param>
        <param index="3" label="Aperture" minValue="0">Aperture: F stop number.</param>
        <param index="4" label="ISO" minValue="0" increment="1">ISO number e.g. 80, 100, 200, Etc.</param>
        <param index="5" label="Exposure">Exposure type enumerator.</param>
        <param index="6" label="Command Identity">Command Identity.</param>
        <param index="7" label="Engine Cut-off" units="ds" minValue="0" increment="1">Main engine cut-off time before camera trigger. (0 means no cut-off)</param>
      </entry>
      <entry value="203" name="MAV_CMD_DO_DIGICAM_CONTROL" hasLocation="false" isDestination="false">
        <description>Control digital camera. This is a fallback message for systems that have not yet implemented PARAM_EXT_XXX messages and camera definition files (see https://mavlink.io/en/services/camera_def.html ).</description>
        <param index="1" label="Session Control">Session control e.g. show/hide lens</param>
        <param index="2" label="Zoom Absolute">Zoom's absolute position</param>
        <param index="3" label="Zoom Relative">Zooming step value to offset zoom from the current position</param>
        <param index="4" label="Focus">Focus Locking, Unlocking or Re-locking</param>
        <param index="5" label="Shoot Command">Shooting Command</param>
        <param index="6" label="Command Identity">Command Identity</param>
        <param index="7" label="Shot ID">Test shot identifier. If set to 1, image will only be captured, but not counted towards internal frame count.</param>
      </entry>
      <!-- Camera Mount Mission Commands Enumeration -->
      <entry value="204" name="MAV_CMD_DO_MOUNT_CONFIGURE" hasLocation="false" isDestination="false">
        <deprecated since="2020-01" replaced_by="MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE">This message has been superseded by MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE. The message can still be used to communicate with legacy gimbals implementing it.</deprecated>
        <description>Mission command to configure a camera or antenna mount</description>
        <param index="1" label="Mode" enum="MAV_MOUNT_MODE">Mount operation mode</param>
        <param index="2" label="Stabilize Roll" minValue="0" maxValue="1" increment="1">stabilize roll? (1 = yes, 0 = no)</param>
        <param index="3" label="Stabilize Pitch" minValue="0" maxValue="1" increment="1">stabilize pitch? (1 = yes, 0 = no)</param>
        <param index="4" label="Stabilize Yaw" minValue="0" maxValue="1" increment="1">stabilize yaw? (1 = yes, 0 = no)</param>
        <param index="5" label="Roll Input Mode">roll input (0 = angle body frame, 1 = angular rate, 2 = angle absolute frame)</param>
        <param index="6" label="Pitch Input Mode">pitch input (0 = angle body frame, 1 = angular rate, 2 = angle absolute frame)</param>
        <param index="7" label="Yaw Input Mode">yaw input (0 = angle body frame, 1 = angular rate, 2 = angle absolute frame)</param>
      </entry>
      <!-- this one is messed up! altitude should be param 7, not param4 -->
      <entry value="205" name="MAV_CMD_DO_MOUNT_CONTROL" hasLocation="false" isDestination="false">
        <deprecated since="2020-01" replaced_by="MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW">This message is ambiguous and inconsistent. It has been superseded by MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW and `MAV_CMD_DO_SET_ROI_*` variants. The message can still be used to communicate with legacy gimbals implementing it.</deprecated>
        <description>Mission command to control a camera or antenna mount</description>
        <param index="1" label="Pitch">pitch depending on mount mode (degrees or degrees/second depending on pitch input).</param>
        <param index="2" label="Roll">roll depending on mount mode (degrees or degrees/second depending on roll input).</param>
        <param index="3" label="Yaw">yaw depending on mount mode (degrees or degrees/second depending on yaw input).</param>
        <param index="4" label="Altitude" units="m">altitude depending on mount mode.</param>
        <param index="5" label="Latitude">latitude, set if appropriate mount mode.</param>
        <param index="6" label="Longitude">longitude, set if appropriate mount mode.</param>
        <param index="7" label="Mode" enum="MAV_MOUNT_MODE">Mount mode.</param>
      </entry>
      <entry value="206" name="MAV_CMD_DO_SET_CAM_TRIGG_DIST" hasLocation="false" isDestination="false">
        <description>Mission command to set camera trigger distance for this flight. The camera is triggered each time this distance is exceeded. This command can also be used to set the shutter integration time for the camera.</description>
        <param index="1" label="Distance" units="m" minValue="0">Camera trigger distance. 0 to stop triggering.</param>
        <param index="2" label="Shutter" units="ms" minValue="-1" increment="1">Camera shutter integration time. -1 or 0 to ignore</param>
        <param index="3" label="Trigger" minValue="0" maxValue="1" increment="1">Trigger camera once immediately. (0 = no trigger, 1 = trigger)</param>
        <param index="4" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="207" name="MAV_CMD_DO_FENCE_ENABLE" hasLocation="false" isDestination="false">
        <description>
          Enable the geofence.
          This can be used in a mission or via the command protocol.
          The persistence/lifetime of the setting is undefined.
          Depending on flight stack implementation it may persist until superseded, or it may revert to a system default at the end of a mission.
          Flight stacks typically reset the setting to system defaults on reboot.
	</description>
        <param index="1" label="Enable" minValue="0" maxValue="2" increment="1">enable? (0=disable, 1=enable, 2=disable_floor_only)</param>
        <param index="2" label="Types" enum="FENCE_TYPE">Fence types to enable or disable as a bitmask. 0: field is unused/all fences should be enabled or disabled (for compatiblity reasons). Parameter is ignored if param1=2.</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="208" name="MAV_CMD_DO_PARACHUTE" hasLocation="false" isDestination="false">
        <description>Mission item/command to release a parachute or enable/disable auto release.</description>
        <param index="1" label="Action" enum="PARACHUTE_ACTION">Action</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="209" name="MAV_CMD_DO_MOTOR_TEST" hasLocation="false" isDestination="false">
        <description>Command to perform motor test.</description>
        <param index="1" label="Instance" minValue="1" increment="1">Motor instance number (from 1 to max number of motors on the vehicle).</param>
        <param index="2" label="Throttle Type" enum="MOTOR_TEST_THROTTLE_TYPE">Throttle type (whether the Throttle Value in param3 is a percentage, PWM value, etc.)</param>
        <param index="3" label="Throttle">Throttle value.</param>
        <param index="4" label="Timeout" units="s" minValue="0">Timeout between tests that are run in sequence.</param>
        <param index="5" label="Motor Count" minValue="0" increment="1">Motor count. Number of motors to test in sequence: 0/1=one motor, 2= two motors, etc. The Timeout (param4) is used between tests.</param>
        <param index="6" label="Test Order" enum="MOTOR_TEST_ORDER">Motor test order.</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="210" name="MAV_CMD_DO_INVERTED_FLIGHT" hasLocation="false" isDestination="false">
        <description>Change to/from inverted flight.</description>
        <param index="1" label="Inverted" minValue="0" maxValue="1" increment="1">Inverted flight. (0=normal, 1=inverted)</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="211" name="MAV_CMD_DO_GRIPPER" hasLocation="false" isDestination="false">
        <description>Mission command to operate a gripper.</description>
        <param index="1" label="Instance" minValue="1" increment="1">Gripper instance number.</param>
        <param index="2" label="Action" enum="GRIPPER_ACTIONS">Gripper action to perform.</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="212" name="MAV_CMD_DO_AUTOTUNE_ENABLE" hasLocation="false" isDestination="false">
        <description>Enable/disable autotune.</description>
        <param index="1" label="Enable" minValue="0" maxValue="1" increment="1">Enable (1: enable, 0:disable).</param>
        <param index="2" label="Axis" enum="AUTOTUNE_AXIS">Specify axes for which autotuning is enabled/disabled. 0 indicates the field is unused (for compatiblity reasons). If 0 the autopilot will follow its default behaviour, which is usually to tune all axes.</param>
        <param index="3">Empty.</param>
        <param index="4">Empty.</param>
        <param index="5">Empty.</param>
        <param index="6">Empty.</param>
        <param index="7">Empty.</param>
      </entry>
      <entry value="213" name="MAV_CMD_NAV_SET_YAW_SPEED" hasLocation="false" isDestination="false">
        <description>Sets a desired vehicle turn angle and speed change.</description>
        <param index="1" label="Yaw" units="deg">Yaw angle to adjust steering by.</param>
        <param index="2" label="Speed" units="m/s">Speed.</param>
        <param index="3" label="Angle" minValue="0" maxValue="1" increment="1">Final angle. (0=absolute, 1=relative)</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="214" name="MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL" hasLocation="false" isDestination="false">
        <description>Mission command to set camera trigger interval for this flight. If triggering is enabled, the camera is triggered each time this interval expires. This command can also be used to set the shutter integration time for the camera.</description>
        <param index="1" label="Trigger Cycle" units="ms" minValue="-1" increment="1">Camera trigger cycle time. -1 or 0 to ignore.</param>
        <param index="2" label="Shutter Integration" units="ms" minValue="-1" increment="1">Camera shutter integration time. Should be less than trigger cycle time. -1 or 0 to ignore.</param>
        <param index="3" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="220" name="MAV_CMD_DO_MOUNT_CONTROL_QUAT" hasLocation="false" isDestination="false">
        <deprecated since="2020-01" replaced_by="MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW"/>
        <description>Mission command to control a camera or antenna mount, using a quaternion as reference.</description>
        <param index="1" label="Q1">quaternion param q1, w (1 in null-rotation)</param>
        <param index="2" label="Q2">quaternion param q2, x (0 in null-rotation)</param>
        <param index="3" label="Q3">quaternion param q3, y (0 in null-rotation)</param>
        <param index="4" label="Q4">quaternion param q4, z (0 in null-rotation)</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="221" name="MAV_CMD_DO_GUIDED_MASTER" hasLocation="false" isDestination="false">
        <description>set id of master controller</description>
        <param index="1" label="System ID" minValue="0" maxValue="255" increment="1">System ID</param>
        <param index="2" label="Component ID" minValue="0" maxValue="255" increment="1">Component ID</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="222" name="MAV_CMD_DO_GUIDED_LIMITS" hasLocation="false" isDestination="false">
        <description>Set limits for external control</description>
        <param index="1" label="Timeout" units="s" minValue="0">Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout.</param>
        <param index="2" label="Min Altitude" units="m">Altitude (MSL) min - if vehicle moves below this alt, the command will be aborted and the mission will continue. 0 means no lower altitude limit.</param>
        <param index="3" label="Max Altitude" units="m">Altitude (MSL) max - if vehicle moves above this alt, the command will be aborted and the mission will continue. 0 means no upper altitude limit.</param>
        <param index="4" label="Horiz. Move Limit" units="m" minValue="0">Horizontal move limit - if vehicle moves more than this distance from its location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal move limit.</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="223" name="MAV_CMD_DO_ENGINE_CONTROL" hasLocation="false" isDestination="false">
        <description>Control vehicle engine. This is interpreted by the vehicles engine controller to change the target engine state. It is intended for vehicles with internal combustion engines</description>
        <param index="1" label="Start Engine" minValue="0" maxValue="1" increment="1">0: Stop engine, 1:Start Engine</param>
        <param index="2" label="Cold Start" minValue="0" maxValue="1" increment="1">0: Warm start, 1:Cold start. Controls use of choke where applicable</param>
        <param index="3" label="Height Delay" units="m" minValue="0">Height delay. This is for commanding engine start only after the vehicle has gained the specified height. Used in VTOL vehicles during takeoff to start engine after the aircraft is off the ground. Zero for no delay.</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="224" name="MAV_CMD_DO_SET_MISSION_CURRENT" hasLocation="false" isDestination="false">
        <description>
          Set the mission item with sequence number seq as the current item and emit MISSION_CURRENT (whether or not the mission number changed).
          If a mission is currently being executed, the system will continue to this new mission item on the shortest path, skipping any intermediate mission items.
	  Note that mission jump repeat counters are not reset unless param2 is set (see MAV_CMD_DO_JUMP param2).

          This command may trigger a mission state-machine change on some systems: for example from MISSION_STATE_NOT_STARTED or MISSION_STATE_PAUSED to MISSION_STATE_ACTIVE.
          If the system is in mission mode, on those systems this command might therefore start, restart or resume the mission.
          If the system is not in mission mode this command must not trigger a switch to mission mode.

          The mission may be "reset" using param2.
          Resetting sets jump counters to initial values (to reset counters without changing the current mission item set the param1 to `-1`).
          Resetting also explicitly changes a mission state of MISSION_STATE_COMPLETE to MISSION_STATE_PAUSED or MISSION_STATE_ACTIVE, potentially allowing it to resume when it is (next) in a mission mode.

	  The command will ACK with MAV_RESULT_FAILED if the sequence number is out of range (including if there is no mission item).
        </description>
        <param index="1" label="Number" minValue="-1" increment="1">Mission sequence value to set. -1 for the current mission item (use to reset mission without changing current mission item).</param>
        <param index="2" label="Reset Mission" minValue="0" maxValue="1" increment="1">Resets mission. 1: true, 0: false. Resets jump counters to initial values and changes mission state "completed" to be "active" or "paused".</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="240" name="MAV_CMD_DO_LAST" hasLocation="false" isDestination="false">
        <description>NOP - This command is only used to mark the upper limit of the DO commands in the enumeration</description>
        <param index="1">Empty</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="241" name="MAV_CMD_PREFLIGHT_CALIBRATION" hasLocation="false" isDestination="false">
        <description>Trigger calibration. This command will be only accepted if in pre-flight mode. Except for Temperature Calibration, only one sensor should be set in a single message and all others should be zero.</description>
        <param index="1" label="Gyro Temperature" minValue="0" maxValue="3" increment="1">1: gyro calibration, 3: gyro temperature calibration</param>
        <param index="2" label="Magnetometer" minValue="0" maxValue="1" increment="1">1: magnetometer calibration</param>
        <param index="3" label="Ground Pressure" minValue="0" maxValue="1" increment="1">1: ground pressure calibration</param>
        <param index="4" label="Remote Control" minValue="0" maxValue="1" increment="1">1: radio RC calibration, 2: RC trim calibration</param>
        <param index="5" label="Accelerometer" minValue="0" maxValue="4" increment="1">1: accelerometer calibration, 2: board level calibration, 3: accelerometer temperature calibration, 4: simple accelerometer calibration</param>
        <param index="6" label="Compmot or Airspeed" minValue="0" maxValue="2" increment="1">1: APM: compass/motor interference calibration (PX4: airspeed calibration, deprecated), 2: airspeed calibration</param>
        <param index="7" label="ESC or Baro" minValue="0" maxValue="3" increment="1">1: ESC calibration, 3: barometer temperature calibration</param>
      </entry>
      <entry value="242" name="MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS" hasLocation="false" isDestination="false">
        <description>Set sensor offsets. This command will be only accepted if in pre-flight mode.</description>
        <param index="1" label="Sensor Type" minValue="0" maxValue="6" increment="1">Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer, 6: third magnetometer</param>
        <param index="2" label="X Offset">X axis offset (or generic dimension 1), in the sensor's raw units</param>
        <param index="3" label="Y Offset">Y axis offset (or generic dimension 2), in the sensor's raw units</param>
        <param index="4" label="Z Offset">Z axis offset (or generic dimension 3), in the sensor's raw units</param>
        <param index="5" label="4th Dimension">Generic dimension 4, in the sensor's raw units</param>
        <param index="6" label="5th Dimension">Generic dimension 5, in the sensor's raw units</param>
        <param index="7" label="6th Dimension">Generic dimension 6, in the sensor's raw units</param>
      </entry>
      <entry value="243" name="MAV_CMD_PREFLIGHT_UAVCAN" hasLocation="false" isDestination="false">
        <description>Trigger UAVCAN configuration (actuator ID assignment and direction mapping). Note that this maps to the legacy UAVCAN v0 function UAVCAN_ENUMERATE, which is intended to be executed just once during initial vehicle configuration (it is not a normal pre-flight command and has been poorly named).</description>
        <param index="1" label="Actuator ID">1: Trigger actuator ID assignment and direction mapping. 0: Cancel command.</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5">Reserved</param>
        <param index="6">Reserved</param>
        <param index="7">Reserved</param>
      </entry>
      <entry value="245" name="MAV_CMD_PREFLIGHT_STORAGE" hasLocation="false" isDestination="false">
        <description>Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.</description>
        <param index="1" label="Parameter Storage" enum="PREFLIGHT_STORAGE_PARAMETER_ACTION">Action to perform on the persistent parameter storage</param>
        <param index="2" label="Mission Storage" enum="PREFLIGHT_STORAGE_MISSION_ACTION">Action to perform on the persistent mission storage</param>
        <param index="3" label="Logging Rate" units="Hz" minValue="-1" increment="1">Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, &gt; 1: logging rate (e.g. set to 1000 for 1000 Hz logging)</param>
        <param index="4">Reserved</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="246" name="MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN" hasLocation="false" isDestination="false">
        <description>Request the reboot or shutdown of system components.</description>
        <param index="1" label="Autopilot" minValue="0" maxValue="3" increment="1">0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep it in the bootloader until upgraded.</param>
        <param index="2" label="Companion" minValue="0" maxValue="3" increment="1">0: Do nothing for onboard computer, 1: Reboot onboard computer, 2: Shutdown onboard computer, 3: Reboot onboard computer and keep it in the bootloader until upgraded.</param>
        <param index="3" label="Component action" minValue="0" maxValue="3" increment="1">0: Do nothing for component, 1: Reboot component, 2: Shutdown component, 3: Reboot component and keep it in the bootloader until upgraded</param>
        <param index="4" label="Component ID" minValue="0" maxValue="255" increment="1">MAVLink Component ID targeted in param3 (0 for all components).</param>
        <param index="5">Reserved (set to 0)</param>
        <param index="6" label="Conditions" enum="REBOOT_SHUTDOWN_CONDITIONS">Conditions under which reboot/shutdown is allowed.</param>
        <param index="7">WIP: ID (e.g. camera ID -1 for all IDs)</param>
      </entry>
      <!-- id "247" reserved for MAV_CMD_DO_UPGRADE in development.xml -->
      <entry value="252" name="MAV_CMD_OVERRIDE_GOTO" hasLocation="true" isDestination="true">
        <description>Override current mission with command to pause mission, pause mission and move to position, continue/resume mission. When param 1 indicates that the mission is paused (MAV_GOTO_DO_HOLD), param 2 defines whether it holds in place or moves to another position.</description>
        <param index="1" label="Continue" enum="MAV_GOTO">MAV_GOTO_DO_HOLD: pause mission and either hold or move to specified position (depending on param2), MAV_GOTO_DO_CONTINUE: resume mission.</param>
        <param index="2" label="Position" enum="MAV_GOTO">MAV_GOTO_HOLD_AT_CURRENT_POSITION: hold at current position, MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position.</param>
        <param index="3" label="Frame" enum="MAV_FRAME">Coordinate frame of hold point.</param>
        <param index="4" label="Yaw" units="deg">Desired yaw angle.</param>
        <param index="5" label="Latitude/X">Latitude/X position.</param>
        <param index="6" label="Longitude/Y">Longitude/Y position.</param>
        <param index="7" label="Altitude/Z">Altitude/Z position.</param>
      </entry>
      <entry value="260" name="MAV_CMD_OBLIQUE_SURVEY" hasLocation="false" isDestination="false">
        <description>Mission command to set a Camera Auto Mount Pivoting Oblique Survey (Replaces CAM_TRIGG_DIST for this purpose). The camera is triggered each time this distance is exceeded, then the mount moves to the next position. Params 4~6 set-up the angle limits and number of positions for oblique survey, where mount-enabled vehicles automatically roll the camera between shots to emulate an oblique camera setup (providing an increased HFOV). This command can also be used to set the shutter integration time for the camera.</description>
        <param index="1" label="Distance" units="m" minValue="0">Camera trigger distance. 0 to stop triggering.</param>
        <param index="2" label="Shutter" units="ms" minValue="0" increment="1" default="0">Camera shutter integration time. 0 to ignore</param>
        <param index="3" label="Min Interval" units="ms" minValue="0" maxValue="10000" increment="1" default="0">The minimum interval in which the camera is capable of taking subsequent pictures repeatedly. 0 to ignore.</param>
        <param index="4" label="Positions" minValue="2" increment="1">Total number of roll positions at which the camera will capture photos (images captures spread evenly across the limits defined by param5).</param>
        <param index="5" label="Roll Angle" units="deg" minValue="0" default="0">Angle limits that the camera can be rolled to left and right of center.</param>
        <param index="6" label="Pitch Angle" units="deg" minValue="-180" maxValue="180" default="0">Fixed pitch angle that the camera will hold in oblique mode if the mount is actuated in the pitch axis.</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="262" name="MAV_CMD_DO_SET_STANDARD_MODE" hasLocation="false" isDestination="false">
        <description>Enable the specified standard MAVLink mode.
          If the specified mode is not supported, the vehicle should ACK with MAV_RESULT_FAILED.
          See https://mavlink.io/en/services/standard_modes.html
        </description>
        <param index="1" label="Standard Mode" enum="MAV_STANDARD_MODE">The mode to set.</param>
        <param index="2" reserved="true" default="0"/>
        <param index="3" reserved="true" default="0"/>
        <param index="4" reserved="true" default="0"/>
        <param index="5" reserved="true" default="0"/>
        <param index="6" reserved="true" default="0"/>
        <param index="7" reserved="true" default="NaN"/>
      </entry>
      <entry value="300" name="MAV_CMD_MISSION_START" hasLocation="false" isDestination="false">
        <description>start running a mission</description>
        <param index="1" label="First Item" minValue="0" increment="1">first_item: the first mission item to run</param>
        <param index="2" label="Last Item" minValue="0" increment="1">last_item:  the last mission item to run (after this item is run, the mission ends)</param>
      </entry>
      <entry value="310" name="MAV_CMD_ACTUATOR_TEST" hasLocation="false" isDestination="false">
        <description>Actuator testing command. This is similar to MAV_CMD_DO_MOTOR_TEST but operates on the level of output functions, i.e. it is possible to test Motor1 independent from which output it is configured on. Autopilots must NACK this command with MAV_RESULT_TEMPORARILY_REJECTED while armed.</description>
        <param index="1" label="Value" minValue="-1" maxValue="1">Output value: 1 means maximum positive output, 0 to center servos or minimum motor thrust (expected to spin), -1 for maximum negative (if not supported by the motors, i.e. motor is not reversible, smaller than 0 maps to NaN). And NaN maps to disarmed (stop the motors).</param>
        <param index="2" label="Timeout" units="s" minValue="0" maxValue="3">Timeout after which the test command expires and the output is restored to the previous value. A timeout has to be set for safety reasons. A timeout of 0 means to restore the previous value immediately.</param>
        <param index="3" reserved="true" default="0"/>
        <param index="4" reserved="true" default="0"/>
        <param index="5" label="Output Function" enum="ACTUATOR_OUTPUT_FUNCTION">Actuator Output function</param>
        <param index="6" reserved="true" default="0"/>
        <param index="7" reserved="true" default="0"/>
      </entry>
      <entry value="311" name="MAV_CMD_CONFIGURE_ACTUATOR" hasLocation="false" isDestination="false">
        <description>Actuator configuration command.</description>
        <param index="1" label="Configuration" enum="ACTUATOR_CONFIGURATION">Actuator configuration action</param>
        <param index="2" reserved="true" default="0"/>
        <param index="3" reserved="true" default="0"/>
        <param index="4" reserved="true" default="0"/>
        <param index="5" label="Output Function" enum="ACTUATOR_OUTPUT_FUNCTION">Actuator Output function</param>
        <param index="6" reserved="true" default="0"/>
        <param index="7" reserved="true" default="0"/>
      </entry>
      <entry value="400" name="MAV_CMD_COMPONENT_ARM_DISARM" hasLocation="false" isDestination="false">
        <description>Arms / Disarms a component</description>
        <param index="1" label="Arm" minValue="0" maxValue="1" increment="1">0: disarm, 1: arm</param>
        <param index="2" label="Force" minValue="0" maxValue="21196" increment="21196">0: arm-disarm unless prevented by safety checks (i.e. when landed), 21196: force arming/disarming (e.g. allow arming to override preflight checks and disarming in flight)</param>
      </entry>
      <entry value="401" name="MAV_CMD_RUN_PREARM_CHECKS" hasLocation="false" isDestination="false">
        <description>Instructs a target system to run pre-arm checks.
          This allows preflight checks to be run on demand, which may be useful on systems that normally run them at low rate, or which do not trigger checks when the armable state might have changed.
          This command should return MAV_RESULT_ACCEPTED if it will run the checks.
          The results of the checks are usually then reported in SYS_STATUS messages (this is system-specific).
          The command should return MAV_RESULT_TEMPORARILY_REJECTED if the system is already armed.
        </description>
      </entry>
      <entry value="405" name="MAV_CMD_ILLUMINATOR_ON_OFF" hasLocation="false" isDestination="false">
        <description>Turns illuminators ON/OFF. An illuminator is a light source that is used for lighting up dark areas external to the system: e.g. a torch or searchlight (as opposed to a light source for illuminating the system itself, e.g. an indicator light).</description>
        <param index="1" label="Enable" minValue="0" maxValue="1" increment="1">0: Illuminators OFF, 1: Illuminators ON</param>
      </entry>
      <entry value="406" name="MAV_CMD_DO_ILLUMINATOR_CONFIGURE" hasLocation="false" isDestination="false">
        <description>Configures illuminator settings. An illuminator is a light source that is used for lighting up dark areas external to the system: e.g. a torch or searchlight (as opposed to a light source for illuminating the system itself, e.g. an indicator light).</description>
        <param index="1" label="Mode" enum="ILLUMINATOR_MODE">Mode</param>
        <param index="2" label="Brightness" units="%" minValue="0" maxValue="100">0%: Off, 100%: Max Brightness</param>
        <param index="3" label="Strobe Period" units="s" minValue="0">Strobe period in seconds where 0 means strobing is not used</param>
        <param index="4" label="Strobe Duty" units="%" minValue="0" maxValue="100">Strobe duty cycle where 100% means it is on constantly and 0 means strobing is not used</param>
      </entry>
      <entry value="410" name="MAV_CMD_GET_HOME_POSITION" hasLocation="false" isDestination="false">
        <deprecated since="2022-04" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request the home position from the vehicle.
	  The vehicle will ACK the command and then emit the HOME_POSITION message.</description>
        <param index="1">Reserved</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5">Reserved</param>
        <param index="6">Reserved</param>
        <param index="7">Reserved</param>
      </entry>
      <entry value="420" name="MAV_CMD_INJECT_FAILURE">
        <description>Inject artificial failure for testing purposes. Note that autopilots should implement an additional protection before accepting this command such as a specific param setting.</description>
        <param index="1" label="Failure unit" enum="FAILURE_UNIT">The unit which is affected by the failure.</param>
        <param index="2" label="Failure type" enum="FAILURE_TYPE">The type how the failure manifests itself.</param>
        <param index="3" label="Instance">Instance affected by failure (0 to signal all).</param>
      </entry>
      <entry value="500" name="MAV_CMD_START_RX_PAIR" hasLocation="false" isDestination="false">
        <description>Starts receiver pairing.</description>
        <param index="1" label="RC Type" enum="RC_TYPE">RC type.</param>
        <param index="2" label="RC Sub Type" enum="RC_SUB_TYPE">RC sub type.</param>
      </entry>
      <entry value="510" name="MAV_CMD_GET_MESSAGE_INTERVAL" hasLocation="false" isDestination="false">
        <deprecated since="2022-04" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>
          Request the interval between messages for a particular MAVLink message ID.
          The receiver should ACK the command and then emit its response in a MESSAGE_INTERVAL message.
        </description>
        <param index="1" label="Message ID" minValue="0" maxValue="16777215" increment="1">The MAVLink message ID</param>
      </entry>
      <entry value="511" name="MAV_CMD_SET_MESSAGE_INTERVAL" hasLocation="false" isDestination="false">
        <description>Set the interval between messages for a particular MAVLink message ID. This interface replaces REQUEST_DATA_STREAM.</description>
        <param index="1" label="Message ID" minValue="0" maxValue="16777215" increment="1">The MAVLink message ID</param>
        <param index="2" label="Interval" units="us" minValue="-1" increment="1">The interval between two messages. -1: disable. 0: request default rate (which may be zero).</param>
        <param index="3" label="Req Param 3">Use for index ID, if required. Otherwise, the use of this parameter (if any) must be defined in the requested message. By default assumed not used (0).  When used as an index ID, 0 means "all instances", "1" means the first instance in the sequence (the emitted message will have an id of 0 if message ids are 0-indexed, or 1 if index numbers start from one).</param>
        <param index="4" label="Req Param 4">The use of this parameter (if any), must be defined in the requested message. By default assumed not used (0).</param>
        <param index="5" label="Req Param 5">The use of this parameter (if any), must be defined in the requested message. By default assumed not used (0/NaN).</param>
        <param index="6" label="Req Param 6">The use of this parameter (if any), must be defined in the requested message. By default assumed not used (0/NaN).</param>
        <param index="7" label="Response Target" minValue="0" maxValue="2" increment="1">Target address of message stream (if message has target address fields). 0: Flight-stack default (recommended), 1: address of requestor, 2: broadcast.</param>
      </entry>
      <entry value="512" name="MAV_CMD_REQUEST_MESSAGE" hasLocation="false" isDestination="false">
        <description>Request the target system(s) emit a single instance of a specified message (i.e. a "one-shot" version of MAV_CMD_SET_MESSAGE_INTERVAL).</description>
        <param index="1" label="Message ID" minValue="0" maxValue="16777215" increment="1">The MAVLink message ID of the requested message.</param>
        <param index="2" label="Req Param 1">Use for index ID, if required. Otherwise, the use of this parameter (if any) must be defined in the requested message. By default assumed not used (0).</param>
        <param index="3" label="Req Param 2">The use of this parameter (if any), must be defined in the requested message. By default assumed not used (0).</param>
        <param index="4" label="Req Param 3">The use of this parameter (if any), must be defined in the requested message. By default assumed not used (0).</param>
        <param index="5" label="Req Param 4">The use of this parameter (if any), must be defined in the requested message. By default assumed not used (0).</param>
        <param index="6" label="Req Param 5">The use of this parameter (if any), must be defined in the requested message. By default assumed not used (0).</param>
        <param index="7" label="Response Target" minValue="0" maxValue="2" increment="1">Target address for requested message (if message has target address fields). 0: Flight-stack default, 1: address of requestor, 2: broadcast.</param>
      </entry>
      <entry value="519" name="MAV_CMD_REQUEST_PROTOCOL_VERSION" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request MAVLink protocol version compatibility. All receivers should ACK the command and then emit their capabilities in an PROTOCOL_VERSION message</description>
        <param index="1" label="Protocol" minValue="0" maxValue="1" increment="1">1: Request supported protocol versions by all nodes on the network</param>
        <param index="2">Reserved (all remaining params)</param>
      </entry>
      <entry value="520" name="MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request autopilot capabilities. The receiver should ACK the command and then emit its capabilities in an AUTOPILOT_VERSION message</description>
        <param index="1" label="Version" minValue="0" maxValue="1" increment="1">1: Request autopilot version</param>
        <param index="2">Reserved (all remaining params)</param>
      </entry>
      <entry value="521" name="MAV_CMD_REQUEST_CAMERA_INFORMATION" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request camera information (CAMERA_INFORMATION).</description>
        <param index="1" label="Capabilities" minValue="0" maxValue="1" increment="1">0: No action 1: Request camera capabilities</param>
        <param index="2">Reserved (all remaining params)</param>
      </entry>
      <entry value="522" name="MAV_CMD_REQUEST_CAMERA_SETTINGS" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request camera settings (CAMERA_SETTINGS).</description>
        <param index="1" label="Settings" minValue="0" maxValue="1" increment="1">0: No Action 1: Request camera settings</param>
        <param index="2">Reserved (all remaining params)</param>
      </entry>
      <entry value="525" name="MAV_CMD_REQUEST_STORAGE_INFORMATION" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request storage information (STORAGE_INFORMATION). Use the command's target_component to target a specific component's storage.</description>
        <param index="1" label="Storage ID" minValue="0" increment="1">Storage ID (0 for all, 1 for first, 2 for second, etc.)</param>
        <param index="2" label="Information" minValue="0" maxValue="1" increment="1">0: No Action 1: Request storage information</param>
        <param index="3">Reserved (all remaining params)</param>
      </entry>
      <entry value="526" name="MAV_CMD_STORAGE_FORMAT" hasLocation="false" isDestination="false">
        <description>Format a storage medium. Once format is complete, a STORAGE_INFORMATION message is sent. Use the command's target_component to target a specific component's storage.</description>
        <param index="1" label="Storage ID" minValue="0" increment="1">Storage ID (1 for first, 2 for second, etc.)</param>
        <param index="2" label="Format" minValue="0" maxValue="1" increment="1">Format storage (and reset image log). 0: No action 1: Format storage</param>
        <param index="3" label="Reset Image Log" minValue="0" maxValue="1" increment="1">Reset Image Log (without formatting storage medium). This will reset CAMERA_CAPTURE_STATUS.image_count and CAMERA_IMAGE_CAPTURED.image_index. 0: No action 1: Reset Image Log</param>
        <param index="4">Reserved (all remaining params)</param>
      </entry>
      <entry value="527" name="MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request camera capture status (CAMERA_CAPTURE_STATUS)</description>
        <param index="1" label="Capture Status" minValue="0" maxValue="1" increment="1">0: No Action 1: Request camera capture status</param>
        <param index="2">Reserved (all remaining params)</param>
      </entry>
      <entry value="528" name="MAV_CMD_REQUEST_FLIGHT_INFORMATION" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request flight information (FLIGHT_INFORMATION)</description>
        <param index="1" label="Flight Information" minValue="0" maxValue="1" increment="1">1: Request flight information</param>
        <param index="2">Reserved (all remaining params)</param>
      </entry>
      <entry value="529" name="MAV_CMD_RESET_CAMERA_SETTINGS" hasLocation="false" isDestination="false">
        <description>Reset all camera settings to Factory Default</description>
        <param index="1" label="Reset" minValue="0" maxValue="1" increment="1">0: No Action 1: Reset all settings</param>
        <param index="2" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
      </entry>
      <entry value="530" name="MAV_CMD_SET_CAMERA_MODE" hasLocation="false" isDestination="false">
        <description>Set camera running mode. Use NaN for reserved values. GCS will send a MAV_CMD_REQUEST_VIDEO_STREAM_STATUS command after a mode change if the camera supports video streaming.</description>
        <param index="1" label="id" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="2" label="Camera Mode" enum="CAMERA_MODE">Camera mode</param>
        <param index="3" reserved="true" default="NaN"/>
        <param index="4" reserved="true" default="NaN"/>
        <param index="7" reserved="true" default="NaN"/>
      </entry>
      <entry value="531" name="MAV_CMD_SET_CAMERA_ZOOM" hasLocation="false" isDestination="false">
        <description>Set camera zoom. Camera must respond with a CAMERA_SETTINGS message (on success).</description>
        <param index="1" label="Zoom Type" enum="CAMERA_ZOOM_TYPE">Zoom type</param>
        <param index="2" label="Zoom Value">Zoom value. The range of valid values depend on the zoom type.</param>
        <param index="3" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="4" reserved="true" default="NaN"/>
      </entry>
      <entry value="532" name="MAV_CMD_SET_CAMERA_FOCUS" hasLocation="false" isDestination="false">
        <description>Set camera focus. Camera must respond with a CAMERA_SETTINGS message (on success).</description>
        <param index="1" label="Focus Type" enum="SET_FOCUS_TYPE">Focus type</param>
        <param index="2" label="Focus Value">Focus value</param>
        <param index="3" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="4" reserved="true" default="NaN"/>
      </entry>
      <entry value="533" name="MAV_CMD_SET_STORAGE_USAGE" hasLocation="false" isDestination="false">
        <description>Set that a particular storage is the preferred location for saving photos, videos, and/or other media (e.g. to set that an SD card is used for storing videos).
          There can only be one preferred save location for each particular media type: setting a media usage flag will clear/reset that same flag if set on any other storage.
          If no flag is set the system should use its default storage.
          A target system can choose to always use default storage, in which case it should ACK the command with MAV_RESULT_UNSUPPORTED.
          A target system can choose to not allow a particular storage to be set as preferred storage, in which case it should ACK the command with MAV_RESULT_DENIED.</description>
        <param index="1" label="Storage ID" minValue="0" increment="1">Storage ID (1 for first, 2 for second, etc.)</param>
        <param index="2" label="Usage" enum="STORAGE_USAGE_FLAG">Usage flags</param>
      </entry>
      <entry value="534" name="MAV_CMD_SET_CAMERA_SOURCE" hasLocation="false" isDestination="false">
        <description>Set camera source. Changes the camera's active sources on cameras with multiple image sensors.</description>
        <param index="1" label="device id">Component Id of camera to address or 1-6 for non-MAVLink cameras, 0 for all cameras.</param>
        <param index="2" label="primary source" enum="CAMERA_SOURCE">Primary Source</param>
        <param index="3" label="secondary source" enum="CAMERA_SOURCE">Secondary Source. If non-zero the second source will be displayed as picture-in-picture.</param>
      </entry>
      <entry value="600" name="MAV_CMD_JUMP_TAG" hasLocation="false" isDestination="false">
        <description>Tagged jump target. Can be jumped to with MAV_CMD_DO_JUMP_TAG.</description>
        <param index="1" label="Tag" minValue="0" increment="1">Tag.</param>
      </entry>
      <entry value="601" name="MAV_CMD_DO_JUMP_TAG" hasLocation="false" isDestination="false">
        <description>Jump to the matching tag in the mission list. Repeat this action for the specified number of times. A mission should contain a single matching tag for each jump. If this is not the case then a jump to a missing tag should complete the mission, and a jump where there are multiple matching tags should always select the one with the lowest mission sequence number.</description>
        <param index="1" label="Tag" minValue="0" increment="1">Target tag to jump to.</param>
        <param index="2" label="Repeat" minValue="0" increment="1">Repeat count.</param>
      </entry>
      <entry value="1000" name="MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW" hasLocation="false" isDestination="false">
        <description>Set gimbal manager pitch/yaw setpoints (low rate command). It is possible to set combinations of the values below. E.g. an angle as well as a desired angular rate can be used to get to this angle at a certain angular rate, or an angular rate only will result in continuous turning. NaN is to be used to signal unset. Note: only the gimbal manager will react to this command - it will be ignored by a gimbal device. Use GIMBAL_MANAGER_SET_PITCHYAW if you need to stream pitch/yaw setpoints at higher rate. </description>
        <param index="1" label="Pitch angle" units="deg" minValue="-180" maxValue="180">Pitch angle (positive to pitch up, relative to vehicle for FOLLOW mode, relative to world horizon for LOCK mode).</param>
        <param index="2" label="Yaw angle" units="deg" minValue="-180" maxValue="180">Yaw angle (positive to yaw to the right, relative to vehicle for FOLLOW mode, absolute to North for LOCK mode).</param>
        <param index="3" label="Pitch rate" units="deg/s">Pitch rate (positive to pitch up).</param>
        <param index="4" label="Yaw rate" units="deg/s">Yaw rate (positive to yaw to the right).</param>
        <param index="5" label="Gimbal manager flags" enum="GIMBAL_MANAGER_FLAGS">Gimbal manager flags to use.</param>
        <param index="7" label="Gimbal device ID">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</param>
      </entry>
      <entry value="1001" name="MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE" hasLocation="false" isDestination="false">
        <description>Gimbal configuration to set which sysid/compid is in primary and secondary control.</description>
        <param index="1" label="sysid primary control">Sysid for primary control (0: no one in control, -1: leave unchanged, -2: set itself in control (for missions where the own sysid is still unknown), -3: remove control if currently in control).</param>
        <param index="2" label="compid primary control">Compid for primary control (0: no one in control, -1: leave unchanged, -2: set itself in control (for missions where the own sysid is still unknown), -3: remove control if currently in control).</param>
        <param index="3" label="sysid secondary control">Sysid for secondary control (0: no one in control, -1: leave unchanged, -2: set itself in control (for missions where the own sysid is still unknown), -3: remove control if currently in control).</param>
        <param index="4" label="compid secondary control">Compid for secondary control (0: no one in control, -1: leave unchanged, -2: set itself in control (for missions where the own sysid is still unknown), -3: remove control if currently in control).</param>
        <param index="7" label="Gimbal device ID">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</param>
      </entry>
      <entry value="2000" name="MAV_CMD_IMAGE_START_CAPTURE" hasLocation="false" isDestination="false">
        <description>Start image capture sequence. CAMERA_IMAGE_CAPTURED must be emitted after each capture.

          Param1 (id) may be used to specify the target camera: 0: all cameras, 1 to 6: autopilot-connected cameras, 7-255: MAVLink camera component ID.
          It is needed in order to target specific cameras connected to the autopilot, or specific sensors in a multi-sensor camera (neither of which have a distinct MAVLink component ID).
          It is also needed to specify the target camera in missions.

          When used in a mission, an autopilot should execute the MAV_CMD for a specified local camera (param1 = 1-6), or resend it as a command if it is intended for a MAVLink camera (param1 = 7 - 255), setting the command's target_component as the param1 value (and setting param1 in the command to zero).
          If the param1 is 0 the autopilot should do both.

          When sent in a command the target MAVLink address is set using target_component.
          If addressed specifically to an autopilot: param1 should be used in the same way as it is for missions (though command should NACK with MAV_RESULT_DENIED if a specified local camera does not exist).
          If addressed to a MAVLink camera, param 1 can be used to address all cameras (0), or to separately address 1 to 7 individual sensors. Other values should be NACKed with MAV_RESULT_DENIED.
          If the command is broadcast (target_component is 0) then param 1 should be set to 0 (any other value should be NACKED with MAV_RESULT_DENIED). An autopilot would trigger any local cameras and forward the command to all channels.
        </description>
        <param index="1" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="2" label="Interval" units="s" minValue="0">Desired elapsed time between two consecutive pictures (in seconds). Minimum values depend on hardware (typically greater than 2 seconds).</param>
        <param index="3" label="Total Images" minValue="0" increment="1">Total number of images to capture. 0 to capture forever/until MAV_CMD_IMAGE_STOP_CAPTURE.</param>
        <param index="4" label="Sequence Number" minValue="1" increment="1">Capture sequence number starting from 1. This is only valid for single-capture (param3 == 1), otherwise set to 0. Increment the capture ID for each capture command to prevent double captures when a command is re-transmitted.</param>
        <param index="5" reserved="true"/>
        <param index="6" reserved="true"/>
        <param index="7" reserved="true" default="NaN"/>
      </entry>
      <entry value="2001" name="MAV_CMD_IMAGE_STOP_CAPTURE" hasLocation="false" isDestination="false">
        <description>Stop image capture sequence.

          Param1 (id) may be used to specify the target camera: 0: all cameras, 1 to 6: autopilot-connected cameras, 7-255: MAVLink camera component ID.
          It is needed in order to target specific cameras connected to the autopilot, or specific sensors in a multi-sensor camera (neither of which have a distinct MAVLink component ID).
          It is also needed to specify the target camera in missions.

          When used in a mission, an autopilot should execute the MAV_CMD for a specified local camera (param1 = 1-6), or resend it as a command if it is intended for a MAVLink camera (param1 = 7 - 255), setting the command's target_component as the param1 value (and setting param1 in the command to zero).
          If the param1 is 0 the autopilot should do both.

          When sent in a command the target MAVLink address is set using target_component.
          If addressed specifically to an autopilot: param1 should be used in the same way as it is for missions (though command should NACK with MAV_RESULT_DENIED if a specified local camera does not exist).
          If addressed to a MAVLink camera, param1 can be used to address all cameras (0), or to separately address 1 to 7 individual sensors. Other values should be NACKed with MAV_RESULT_DENIED.
          If the command is broadcast (target_component is 0) then param 1 should be set to 0 (any other value should be NACKED with MAV_RESULT_DENIED). An autopilot would trigger any local cameras and forward the command to all channels.
        </description>
        <param index="1" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="2" reserved="true" default="NaN"/>
        <param index="3" reserved="true" default="NaN"/>
        <param index="4" reserved="true" default="NaN"/>
        <param index="5" reserved="true"/>
        <param index="6" reserved="true"/>
        <param index="7" reserved="true" default="NaN"/>
      </entry>
      <entry value="2002" name="MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Re-request a CAMERA_IMAGE_CAPTURED message.</description>
        <param index="1" label="Number" minValue="0" increment="1">Sequence number for missing CAMERA_IMAGE_CAPTURED message</param>
        <param index="2" reserved="true" default="NaN"/>
        <param index="3" reserved="true" default="NaN"/>
        <param index="4" reserved="true" default="NaN"/>
        <param index="5" reserved="true"/>
        <param index="6" reserved="true"/>
        <param index="7" reserved="true" default="NaN"/>
      </entry>
      <entry value="2003" name="MAV_CMD_DO_TRIGGER_CONTROL" hasLocation="false" isDestination="false">
        <description>Enable or disable on-board camera triggering system.</description>
        <param index="1" label="Enable" minValue="-1" maxValue="1" increment="1">Trigger enable/disable (0 for disable, 1 for start), -1 to ignore</param>
        <param index="2" label="Reset" minValue="-1" maxValue="1" increment="1">1 to reset the trigger sequence, -1 or 0 to ignore</param>
        <param index="3" label="Pause" minValue="-1" maxValue="1" increment="2">1 to pause triggering, but without switching the camera off or retracting it. -1 to ignore</param>
        <param index="4" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
      </entry>
      <entry value="2004" name="MAV_CMD_CAMERA_TRACK_POINT" hasLocation="false" isDestination="false">
        <description>If the camera supports point visual tracking (CAMERA_CAP_FLAGS_HAS_TRACKING_POINT is set), this command allows to initiate the tracking.</description>
        <param index="1" label="Point x" minValue="0" maxValue="1">Point to track x value (normalized 0..1, 0 is left, 1 is right).</param>
        <param index="2" label="Point y" minValue="0" maxValue="1">Point to track y value (normalized 0..1, 0 is top, 1 is bottom).</param>
        <param index="3" label="Radius" minValue="0" maxValue="1">Point radius (normalized 0..1, 0 is one pixel, 1 is full image width).</param>
        <param index="4" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
      </entry>
      <entry value="2005" name="MAV_CMD_CAMERA_TRACK_RECTANGLE" hasLocation="false" isDestination="false">
        <description>If the camera supports rectangle visual tracking (CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE is set), this command allows to initiate the tracking.</description>
        <param index="1" label="Top left corner x" minValue="0" maxValue="1">Top left corner of rectangle x value (normalized 0..1, 0 is left, 1 is right).</param>
        <param index="2" label="Top left corner y" minValue="0" maxValue="1">Top left corner of rectangle y value (normalized 0..1, 0 is top, 1 is bottom).</param>
        <param index="3" label="Bottom right corner x" minValue="0" maxValue="1">Bottom right corner of rectangle x value (normalized 0..1, 0 is left, 1 is right).</param>
        <param index="4" label="Bottom right corner y" minValue="0" maxValue="1">Bottom right corner of rectangle y value (normalized 0..1, 0 is top, 1 is bottom).</param>
        <param index="5" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
      </entry>
      <entry value="2010" name="MAV_CMD_CAMERA_STOP_TRACKING" hasLocation="false" isDestination="false">
        <description>Stops ongoing tracking.</description>
        <param index="1" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
      </entry>
      <entry value="2500" name="MAV_CMD_VIDEO_START_CAPTURE" hasLocation="false" isDestination="false">
        <description>Starts video capture (recording).</description>
        <param index="1" label="Stream ID" minValue="0" increment="1">Video Stream ID (0 for all streams)</param>
        <param index="2" label="Status Frequency" minValue="0" units="Hz">Frequency CAMERA_CAPTURE_STATUS messages should be sent while recording (0 for no messages, otherwise frequency)</param>
        <param index="3" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="4" reserved="true" default="NaN"/>
        <param index="5" reserved="true"/>
        <param index="6" reserved="true"/>
        <param index="7" reserved="true" default="NaN"/>
      </entry>
      <entry value="2501" name="MAV_CMD_VIDEO_STOP_CAPTURE" hasLocation="false" isDestination="false">
        <description>Stop the current video capture (recording).</description>
        <param index="1" label="Stream ID" minValue="0" increment="1">Video Stream ID (0 for all streams)</param>
        <param index="2" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
        <param index="3" reserved="true" default="NaN"/>
        <param index="4" reserved="true" default="NaN"/>
        <param index="5" reserved="true"/>
        <param index="6" reserved="true"/>
        <param index="7" reserved="true" default="NaN"/>
      </entry>
      <entry value="2502" name="MAV_CMD_VIDEO_START_STREAMING" hasLocation="false" isDestination="false">
        <description>Start video streaming</description>
        <param index="1" label="Stream ID" minValue="0" increment="1">Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.)</param>
        <param index="2" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
      </entry>
      <entry value="2503" name="MAV_CMD_VIDEO_STOP_STREAMING" hasLocation="false" isDestination="false">
        <description>Stop the given video stream</description>
        <param index="1" label="Stream ID" minValue="0" increment="1">Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.)</param>
        <param index="2" label="Target Camera ID" minValue="0" maxValue="255" increment="1">Target camera ID. 7 to 255: MAVLink camera component id. 1 to 6 for cameras attached to the autopilot, which don't have a distinct component id. 0: all cameras. This is used to target specific autopilot-connected cameras. It is also used to target specific cameras when the MAV_CMD is used in a mission.</param>
      </entry>
      <entry value="2504" name="MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request video stream information (VIDEO_STREAM_INFORMATION)</description>
        <param index="1" label="Stream ID" minValue="0" increment="1">Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.)</param>
      </entry>
      <entry value="2505" name="MAV_CMD_REQUEST_VIDEO_STREAM_STATUS" hasLocation="false" isDestination="false">
        <deprecated since="2019-08" replaced_by="MAV_CMD_REQUEST_MESSAGE"/>
        <description>Request video stream status (VIDEO_STREAM_STATUS)</description>
        <param index="1" label="Stream ID" minValue="0" increment="1">Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.)</param>
      </entry>
      <entry value="2510" name="MAV_CMD_LOGGING_START" hasLocation="false" isDestination="false">
        <description>Request to start streaming logging data over MAVLink (see also LOGGING_DATA message)</description>
        <param index="1" label="Format" minValue="0" increment="1">Format: 0: ULog</param>
        <param index="2">Reserved (set to 0)</param>
        <param index="3">Reserved (set to 0)</param>
        <param index="4">Reserved (set to 0)</param>
        <param index="5">Reserved (set to 0)</param>
        <param index="6">Reserved (set to 0)</param>
        <param index="7">Reserved (set to 0)</param>
      </entry>
      <entry value="2511" name="MAV_CMD_LOGGING_STOP" hasLocation="false" isDestination="false">
        <description>Request to stop streaming log data over MAVLink</description>
        <param index="1">Reserved (set to 0)</param>
        <param index="2">Reserved (set to 0)</param>
        <param index="3">Reserved (set to 0)</param>
        <param index="4">Reserved (set to 0)</param>
        <param index="5">Reserved (set to 0)</param>
        <param index="6">Reserved (set to 0)</param>
        <param index="7">Reserved (set to 0)</param>
      </entry>
      <entry value="2520" name="MAV_CMD_AIRFRAME_CONFIGURATION" hasLocation="false" isDestination="false">
        <description/>
        <param index="1" label="Landing Gear ID" minValue="-1" increment="1">Landing gear ID (default: 0, -1 for all)</param>
        <param index="2" label="Landing Gear Position">Landing gear position (Down: 0, Up: 1, NaN for no change)</param>
        <param index="3" reserved="true" default="NaN"/>
        <param index="4" reserved="true" default="NaN"/>
        <param index="5" reserved="true"/>
        <param index="6" reserved="true"/>
        <param index="7" reserved="true" default="NaN"/>
      </entry>
      <entry value="2600" name="MAV_CMD_CONTROL_HIGH_LATENCY" hasLocation="false" isDestination="false">
        <description>Request to start/stop transmitting over the high latency telemetry</description>
        <param index="1" label="Enable" minValue="0" maxValue="1" increment="1">Control transmission over high latency telemetry (0: stop, 1: start)</param>
        <param index="2">Empty</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5">Empty</param>
        <param index="6">Empty</param>
        <param index="7">Empty</param>
      </entry>
      <entry value="2800" name="MAV_CMD_PANORAMA_CREATE" hasLocation="false" isDestination="false">
        <description>Create a panorama at the current position</description>
        <param index="1" label="Horizontal Angle" units="deg">Viewing angle horizontal of the panorama (+- 0.5 the total angle)</param>
        <param index="2" label="Vertical Angle" units="deg">Viewing angle vertical of panorama.</param>
        <param index="3" label="Horizontal Speed" units="deg/s">Speed of the horizontal rotation.</param>
        <param index="4" label="Vertical Speed" units="deg/s">Speed of the vertical rotation.</param>
      </entry>
      <entry value="3000" name="MAV_CMD_DO_VTOL_TRANSITION" hasLocation="false" isDestination="false">
        <description>Request VTOL transition</description>
        <param index="1" label="State" enum="MAV_VTOL_STATE">The target VTOL state. For normal transitions, only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.</param>
        <param index="2" label="Immediate">Force immediate transition to the specified MAV_VTOL_STATE. 1: Force immediate, 0: normal transition. Can be used, for example, to trigger an emergency "Quadchute". Caution: Can be dangerous/damage vehicle, depending on autopilot implementation of this command.</param>
      </entry>
      <entry value="3001" name="MAV_CMD_ARM_AUTHORIZATION_REQUEST" hasLocation="false" isDestination="false">
        <description>Request authorization to arm the vehicle to a external entity, the arm authorizer is responsible to request all data that is needs from the vehicle before authorize or deny the request.
		If approved the COMMAND_ACK message progress field should be set with period of time that this authorization is valid in seconds.
		If the authorization is denied COMMAND_ACK.result_param2 should be set with one of the reasons in ARM_AUTH_DENIED_REASON.
        </description>
        <param index="1" label="System ID" minValue="0" maxValue="255" increment="1">Vehicle system id, this way ground station can request arm authorization on behalf of any vehicle</param>
      </entry>
      <entry value="4000" name="MAV_CMD_SET_GUIDED_SUBMODE_STANDARD" hasLocation="false" isDestination="false">
        <description>This command sets the submode to standard guided when vehicle is in guided mode. The vehicle holds position and altitude and the user can input the desired velocities along all three axes.
                  </description>
      </entry>
      <entry value="4001" name="MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE" hasLocation="true" isDestination="false">
        <description>This command sets submode circle when vehicle is in guided mode. Vehicle flies along a circle facing the center of the circle. The user can input the velocity along the circle and change the radius. If no input is given the vehicle will hold position.
                  </description>
        <param index="1" label="Radius" units="m">Radius of desired circle in CIRCLE_MODE</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude" units="degE7">Target latitude of center of circle in CIRCLE_MODE</param>
        <param index="6" label="Longitude" units="degE7">Target longitude of center of circle in CIRCLE_MODE</param>
      </entry>
      <entry value="4501" name="MAV_CMD_CONDITION_GATE" hasLocation="true" isDestination="true">
        <wip/>
        <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
        <description>Delay mission state machine until gate has been reached.</description>
        <param index="1" label="Geometry" minValue="0" increment="1">Geometry: 0: orthogonal to path between previous and next waypoint.</param>
        <param index="2" label="UseAltitude" minValue="0" maxValue="1" increment="1">Altitude: 0: ignore altitude</param>
        <param index="3">Empty</param>
        <param index="4">Empty</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="5000" name="MAV_CMD_NAV_FENCE_RETURN_POINT" hasLocation="true" isDestination="true">
        <description>Fence return point (there can only be one such point in a geofence definition). If rally points are supported they should be used instead.</description>
        <param index="1">Reserved</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <entry value="5001" name="MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION" hasLocation="true" isDestination="false">
        <description>Fence vertex for an inclusion polygon (the polygon must not be self-intersecting). The vehicle must stay within this area. Minimum of 3 vertices required.
          The vertices for a polygon must be sent sequentially, each with param1 set to the total number of vertices in the polygon.
        </description>
        <param index="1" label="Vertex Count" minValue="3" increment="1">Polygon vertex count. This is the number of vertices in the current polygon (all vertices will have the same number).</param>
        <param index="2" label="Inclusion Group" minValue="0" increment="1">Vehicle must be inside ALL inclusion zones in a single group, vehicle must be inside at least one group, must be the same for all points in each polygon</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7">Reserved</param>
      </entry>
      <entry value="5002" name="MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION" hasLocation="true" isDestination="false">
        <description>Fence vertex for an exclusion polygon (the polygon must not be self-intersecting). The vehicle must stay outside this area. Minimum of 3 vertices required.
          The vertices for a polygon must be sent sequentially, each with param1 set to the total number of vertices in the polygon.                
        </description>
        <param index="1" label="Vertex Count" minValue="3" increment="1">Polygon vertex count. This is the number of vertices in the current polygon (all vertices will have the same number).</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7">Reserved</param>
      </entry>
      <entry value="5003" name="MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION" hasLocation="true" isDestination="false">
        <description>Circular fence area. The vehicle must stay inside this area.
        </description>
        <param index="1" label="Radius" units="m">Radius.</param>
        <param index="2" label="Inclusion Group" minValue="0" increment="1">Vehicle must be inside ALL inclusion zones in a single group, vehicle must be inside at least one group</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7">Reserved</param>
      </entry>
      <entry value="5004" name="MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION" hasLocation="true" isDestination="false">
        <description>Circular fence area. The vehicle must stay outside this area.
        </description>
        <param index="1" label="Radius" units="m">Radius.</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7">Reserved</param>
      </entry>
      <entry value="5100" name="MAV_CMD_NAV_RALLY_POINT" hasLocation="true" isDestination="false">
        <description>Rally point. You can have multiple rally points defined.
        </description>
        <param index="1">Reserved</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude</param>
      </entry>
      <!-- Values in the range [5200, 5210) should be reserved for UAVCAN.  -->
      <!-- BEGIN UAVCAN range -->
      <entry value="5200" name="MAV_CMD_UAVCAN_GET_NODE_INFO" hasLocation="false" isDestination="false">
        <description>Commands the vehicle to respond with a sequence of messages UAVCAN_NODE_INFO, one message per every UAVCAN node that is online. Note that some of the response messages can be lost, which the receiver can detect easily by checking whether every received UAVCAN_NODE_STATUS has a matching message UAVCAN_NODE_INFO received earlier; if not, this command should be sent again in order to request re-transmission of the node information messages.</description>
        <param index="1">Reserved (set to 0)</param>
        <param index="2">Reserved (set to 0)</param>
        <param index="3">Reserved (set to 0)</param>
        <param index="4">Reserved (set to 0)</param>
        <param index="5">Reserved (set to 0)</param>
        <param index="6">Reserved (set to 0)</param>
        <param index="7">Reserved (set to 0)</param>
      </entry>
      <!-- END of UAVCAN range -->
      <entry value="5300" name="MAV_CMD_DO_SET_SAFETY_SWITCH_STATE" hasLocation="false" isDestination="false">
        <description>Change state of safety switch.</description>
        <param index="1" label="Desired State" enum="SAFETY_SWITCH_STATE">New safety switch state.</param>
        <param index="2">Empty.</param>
        <param index="3">Empty.</param>
        <param index="4">Empty</param>
        <param index="5">Empty.</param>
        <param index="6">Empty.</param>
        <param index="7">Empty.</param>
      </entry>
      <entry value="10001" name="MAV_CMD_DO_ADSB_OUT_IDENT" hasLocation="false" isDestination="false">
        <description>Trigger the start of an ADSB-out IDENT. This should only be used when requested to do so by an Air Traffic Controller in controlled airspace. This starts the IDENT which is then typically held for 18 seconds by the hardware per the Mode A, C, and S transponder spec.</description>
        <param index="1">Reserved (set to 0)</param>
        <param index="2">Reserved (set to 0)</param>
        <param index="3">Reserved (set to 0)</param>
        <param index="4">Reserved (set to 0)</param>
        <param index="5">Reserved (set to 0)</param>
        <param index="6">Reserved (set to 0)</param>
        <param index="7">Reserved (set to 0)</param>
      </entry>
      <!-- Entry 12900 reserved for MAV_CMD_ODID_SET_EMERGENCY in development.xml -->
      <!-- VALUES FROM 0-40000 are reserved for the common message set. Values from 40000 to UINT16_MAX are available for dialects -->
      <!-- BEGIN of payload range (30000 to 30999) -->
      <entry value="30001" name="MAV_CMD_PAYLOAD_PREPARE_DEPLOY" hasLocation="true" isDestination="true">
        <deprecated since="2021-06" replaced_by=""/>
        <description>Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.</description>
        <param index="1" label="Operation Mode" minValue="0" maxValue="2" increment="1">Operation mode. 0: prepare single payload deploy (overwriting previous requests), but do not execute it. 1: execute payload deploy immediately (rejecting further deploy commands during execution, but allowing abort). 2: add payload deploy to existing deployment list.</param>
        <param index="2" label="Approach Vector" units="deg" minValue="-1" maxValue="360">Desired approach vector in compass heading. A negative value indicates the system can define the approach vector at will.</param>
        <param index="3" label="Ground Speed" minValue="-1">Desired ground speed at release time. This can be overridden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.</param>
        <param index="4" label="Altitude Clearance" units="m" minValue="-1">Minimum altitude clearance to the release position. A negative value indicates the system can define the clearance at will.</param>
        <param index="5" label="Latitude" units="degE7">Latitude.</param>
        <param index="6" label="Longitude" units="degE7">Longitude.</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="30002" name="MAV_CMD_PAYLOAD_CONTROL_DEPLOY" hasLocation="false" isDestination="false">
        <deprecated since="2021-06" replaced_by=""/>
        <description>Control the payload deployment.</description>
        <param index="1" label="Operation Mode" minValue="0" maxValue="101" increment="1">Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deployment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.</param>
        <param index="2">Reserved</param>
        <param index="3">Reserved</param>
        <param index="4">Reserved</param>
        <param index="5">Reserved</param>
        <param index="6">Reserved</param>
        <param index="7">Reserved</param>
      </entry>
      <!-- from ardupilotmega.xml (hence ID is in that range) -->
      <entry value="42006" name="MAV_CMD_FIXED_MAG_CAL_YAW">
        <description>Magnetometer calibration based on provided known yaw. This allows for fast calibration using WMM field tables in the vehicle, given only the known yaw of the vehicle. If Latitude and longitude are both zero then use the current vehicle location.</description>
        <param index="1" label="Yaw" units="deg">Yaw of vehicle in earth frame.</param>
        <param index="2" label="CompassMask">CompassMask, 0 for all.</param>
        <param index="3" label="Latitude" units="deg">Latitude.</param>
        <param index="4" label="Longitude" units="deg">Longitude.</param>
        <param index="5">Empty.</param>
        <param index="6">Empty.</param>
        <param index="7">Empty.</param>
      </entry>
      <entry value="42600" name="MAV_CMD_DO_WINCH" hasLocation="false" isDestination="false">
        <description>Command to operate winch.</description>
        <param index="1" label="Instance" minValue="1" increment="1">Winch instance number.</param>
        <param index="2" label="Action" enum="WINCH_ACTIONS">Action to perform.</param>
        <param index="3" label="Length" units="m">Length of line to release (negative to wind).</param>
        <param index="4" label="Rate" units="m/s">Release rate (negative to wind).</param>
        <param index="5">Empty.</param>
        <param index="6">Empty.</param>
        <param index="7">Empty.</param>
      </entry>
      <!-- from ardupilotmega.xml (hence ID is in that range) -->
      <entry value="43003" name="MAV_CMD_EXTERNAL_POSITION_ESTIMATE" hasLocation="true" isDestination="false">
        <description>Provide an external position estimate for use when dead-reckoning. This is meant to be used for occasional position resets that may be provided by a external system such as a remote pilot using landmarks over a video link.</description>
        <param index="1" label="transmission_time" units="s">Timestamp that this message was sent as a time in the transmitters time domain. The sender should wrap this time back to zero based on required timing accuracy for the application and the limitations of a 32 bit float. For example, wrapping at 10 hours would give approximately 1ms accuracy. Recipient must handle time wrap in any timing jitter correction applied to this field. Wrap rollover time should not be at not more than 250 seconds, which would give approximately 10 microsecond accuracy.</param>
        <param index="2" label="processing_time" units="s">The time spent in processing the sensor data that is the basis for this position. The recipient can use this to improve time alignment of the data. Set to zero if not known.</param>
        <param index="3" label="accuracy">estimated one standard deviation accuracy of the measurement. Set to NaN if not known.</param>
        <param index="4">Empty</param>
        <param index="5" label="Latitude">Latitude</param>
        <param index="6" label="Longitude">Longitude</param>
        <param index="7" label="Altitude" units="m">Altitude, not used. Should be sent as NaN. May be supported in a future version of this message.</param>
      </entry>
      <!-- END of payload range (30000 to 30999) -->
      <!-- BEGIN user defined range (31000 to 31999) -->
      <entry value="31000" name="MAV_CMD_WAYPOINT_USER_1" hasLocation="true" isDestination="true">
        <description>User defined waypoint item. Ground Station will show the Vehicle as flying through this item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31001" name="MAV_CMD_WAYPOINT_USER_2" hasLocation="true" isDestination="true">
        <description>User defined waypoint item. Ground Station will show the Vehicle as flying through this item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31002" name="MAV_CMD_WAYPOINT_USER_3" hasLocation="true" isDestination="true">
        <description>User defined waypoint item. Ground Station will show the Vehicle as flying through this item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31003" name="MAV_CMD_WAYPOINT_USER_4" hasLocation="true" isDestination="true">
        <description>User defined waypoint item. Ground Station will show the Vehicle as flying through this item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31004" name="MAV_CMD_WAYPOINT_USER_5" hasLocation="true" isDestination="true">
        <description>User defined waypoint item. Ground Station will show the Vehicle as flying through this item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31005" name="MAV_CMD_SPATIAL_USER_1" hasLocation="true" isDestination="false">
        <description>User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31006" name="MAV_CMD_SPATIAL_USER_2" hasLocation="true" isDestination="false">
        <description>User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31007" name="MAV_CMD_SPATIAL_USER_3" hasLocation="true" isDestination="false">
        <description>User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31008" name="MAV_CMD_SPATIAL_USER_4" hasLocation="true" isDestination="false">
        <description>User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31009" name="MAV_CMD_SPATIAL_USER_5" hasLocation="true" isDestination="false">
        <description>User defined spatial item. Ground Station will not show the Vehicle as flying through this item. Example: ROI item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5" label="Latitude">Latitude unscaled</param>
        <param index="6" label="Longitude">Longitude unscaled</param>
        <param index="7" label="Altitude" units="m">Altitude (MSL)</param>
      </entry>
      <entry value="31010" name="MAV_CMD_USER_1" hasLocation="false" isDestination="false">
        <description>User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5">User defined</param>
        <param index="6">User defined</param>
        <param index="7">User defined</param>
      </entry>
      <entry value="31011" name="MAV_CMD_USER_2" hasLocation="false" isDestination="false">
        <description>User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5">User defined</param>
        <param index="6">User defined</param>
        <param index="7">User defined</param>
      </entry>
      <entry value="31012" name="MAV_CMD_USER_3" hasLocation="false" isDestination="false">
        <description>User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5">User defined</param>
        <param index="6">User defined</param>
        <param index="7">User defined</param>
      </entry>
      <entry value="31013" name="MAV_CMD_USER_4" hasLocation="false" isDestination="false">
        <description>User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5">User defined</param>
        <param index="6">User defined</param>
        <param index="7">User defined</param>
      </entry>
      <entry value="31014" name="MAV_CMD_USER_5" hasLocation="false" isDestination="false">
        <description>User defined command. Ground Station will not show the Vehicle as flying through this item. Example: MAV_CMD_DO_SET_PARAMETER item.</description>
        <param index="1">User defined</param>
        <param index="2">User defined</param>
        <param index="3">User defined</param>
        <param index="4">User defined</param>
        <param index="5">User defined</param>
        <param index="6">User defined</param>
        <param index="7">User defined</param>
      </entry>
      <!-- END of user range (31000 to 31999) -->
      <entry value="32000" name="MAV_CMD_CAN_FORWARD" hasLocation="false" isDestination="false">
        <description>Request forwarding of CAN packets from the given CAN bus to this component. CAN Frames are sent using CAN_FRAME and CANFD_FRAME messages</description>
        <param index="1" label="bus">Bus number (0 to disable forwarding, 1 for first bus, 2 for 2nd bus, 3 for 3rd bus).</param>
        <param index="2">Empty.</param>
        <param index="3">Empty.</param>
        <param index="4">Empty.</param>
        <param index="5">Empty.</param>
        <param index="6">Empty.</param>
        <param index="7">Empty.</param>
      </entry>
    </enum>
    <enum name="MAV_DATA_STREAM">
      <deprecated since="2015-06" replaced_by="MESSAGE_INTERVAL"/>
      <description>A data stream is not a fixed set of messages, but rather a
     recommendation to the autopilot software. Individual autopilots may or may not obey
     the recommended messages.</description>
      <entry value="0" name="MAV_DATA_STREAM_ALL">
        <description>Enable all data streams</description>
      </entry>
      <entry value="1" name="MAV_DATA_STREAM_RAW_SENSORS">
        <description>Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.</description>
      </entry>
      <entry value="2" name="MAV_DATA_STREAM_EXTENDED_STATUS">
        <description>Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS</description>
      </entry>
      <entry value="3" name="MAV_DATA_STREAM_RC_CHANNELS">
        <description>Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW</description>
      </entry>
      <entry value="4" name="MAV_DATA_STREAM_RAW_CONTROLLER">
        <description>Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.</description>
      </entry>
      <entry value="6" name="MAV_DATA_STREAM_POSITION">
        <description>Enable LOCAL_POSITION, GLOBAL_POSITION_INT messages.</description>
      </entry>
      <entry value="10" name="MAV_DATA_STREAM_EXTRA1">
        <description>Dependent on the autopilot</description>
      </entry>
      <entry value="11" name="MAV_DATA_STREAM_EXTRA2">
        <description>Dependent on the autopilot</description>
      </entry>
      <entry value="12" name="MAV_DATA_STREAM_EXTRA3">
        <description>Dependent on the autopilot</description>
      </entry>
    </enum>
    <enum name="MAV_ROI">
      <deprecated since="2018-01" replaced_by="`MAV_CMD_DO_SET_ROI_*`"/>
      <description>The ROI (region of interest) for the vehicle. This can be
                be used by the vehicle for camera/vehicle attitude alignment (see
                MAV_CMD_NAV_ROI).</description>
      <entry value="0" name="MAV_ROI_NONE">
        <description>No region of interest.</description>
      </entry>
      <entry value="1" name="MAV_ROI_WPNEXT">
        <description>Point toward next waypoint, with optional pitch/roll/yaw offset.</description>
      </entry>
      <entry value="2" name="MAV_ROI_WPINDEX">
        <description>Point toward given waypoint.</description>
      </entry>
      <entry value="3" name="MAV_ROI_LOCATION">
        <description>Point toward fixed location.</description>
      </entry>
      <entry value="4" name="MAV_ROI_TARGET">
        <description>Point toward of given id.</description>
      </entry>
    </enum>
    <enum name="MAV_PARAM_TYPE">
      <description>Specifies the datatype of a MAVLink parameter.</description>
      <entry value="1" name="MAV_PARAM_TYPE_UINT8">
        <description>8-bit unsigned integer</description>
      </entry>
      <entry value="2" name="MAV_PARAM_TYPE_INT8">
        <description>8-bit signed integer</description>
      </entry>
      <entry value="3" name="MAV_PARAM_TYPE_UINT16">
        <description>16-bit unsigned integer</description>
      </entry>
      <entry value="4" name="MAV_PARAM_TYPE_INT16">
        <description>16-bit signed integer</description>
      </entry>
      <entry value="5" name="MAV_PARAM_TYPE_UINT32">
        <description>32-bit unsigned integer</description>
      </entry>
      <entry value="6" name="MAV_PARAM_TYPE_INT32">
        <description>32-bit signed integer</description>
      </entry>
      <entry value="7" name="MAV_PARAM_TYPE_UINT64">
        <description>64-bit unsigned integer</description>
      </entry>
      <entry value="8" name="MAV_PARAM_TYPE_INT64">
        <description>64-bit signed integer</description>
      </entry>
      <entry value="9" name="MAV_PARAM_TYPE_REAL32">
        <description>32-bit floating-point</description>
      </entry>
      <entry value="10" name="MAV_PARAM_TYPE_REAL64">
        <description>64-bit floating-point</description>
      </entry>
    </enum>
    <enum name="MAV_PARAM_EXT_TYPE">
      <description>Specifies the datatype of a MAVLink extended parameter.</description>
      <entry value="1" name="MAV_PARAM_EXT_TYPE_UINT8">
        <description>8-bit unsigned integer</description>
      </entry>
      <entry value="2" name="MAV_PARAM_EXT_TYPE_INT8">
        <description>8-bit signed integer</description>
      </entry>
      <entry value="3" name="MAV_PARAM_EXT_TYPE_UINT16">
        <description>16-bit unsigned integer</description>
      </entry>
      <entry value="4" name="MAV_PARAM_EXT_TYPE_INT16">
        <description>16-bit signed integer</description>
      </entry>
      <entry value="5" name="MAV_PARAM_EXT_TYPE_UINT32">
        <description>32-bit unsigned integer</description>
      </entry>
      <entry value="6" name="MAV_PARAM_EXT_TYPE_INT32">
        <description>32-bit signed integer</description>
      </entry>
      <entry value="7" name="MAV_PARAM_EXT_TYPE_UINT64">
        <description>64-bit unsigned integer</description>
      </entry>
      <entry value="8" name="MAV_PARAM_EXT_TYPE_INT64">
        <description>64-bit signed integer</description>
      </entry>
      <entry value="9" name="MAV_PARAM_EXT_TYPE_REAL32">
        <description>32-bit floating-point</description>
      </entry>
      <entry value="10" name="MAV_PARAM_EXT_TYPE_REAL64">
        <description>64-bit floating-point</description>
      </entry>
      <entry value="11" name="MAV_PARAM_EXT_TYPE_CUSTOM">
        <description>Custom Type</description>
      </entry>
    </enum>
    <enum name="MAV_RESULT">
      <description>Result from a MAVLink command (MAV_CMD)</description>
      <entry value="0" name="MAV_RESULT_ACCEPTED">
        <description>Command is valid (is supported and has valid parameters), and was executed.</description>
      </entry>
      <entry value="1" name="MAV_RESULT_TEMPORARILY_REJECTED">
        <description>Command is valid, but cannot be executed at this time. This is used to indicate a problem that should be fixed just by waiting (e.g. a state machine is busy, can't arm because have not got GPS lock, etc.). Retrying later should work.</description>
      </entry>
      <entry value="2" name="MAV_RESULT_DENIED">
        <description>Command is invalid (is supported but has invalid parameters). Retrying same command and parameters will not work.</description>
      </entry>
      <entry value="3" name="MAV_RESULT_UNSUPPORTED">
        <description>Command is not supported (unknown).</description>
      </entry>
      <entry value="4" name="MAV_RESULT_FAILED">
        <description>Command is valid, but execution has failed. This is used to indicate any non-temporary or unexpected problem, i.e. any problem that must be fixed before the command can succeed/be retried. For example, attempting to write a file when out of memory, attempting to arm when sensors are not calibrated, etc.</description>
      </entry>
      <entry value="5" name="MAV_RESULT_IN_PROGRESS">
        <description>Command is valid and is being executed. This will be followed by further progress updates, i.e. the component may send further COMMAND_ACK messages with result MAV_RESULT_IN_PROGRESS (at a rate decided by the implementation), and must terminate by sending a COMMAND_ACK message with final result of the operation. The COMMAND_ACK.progress field can be used to indicate the progress of the operation.</description>
      </entry>
      <entry value="6" name="MAV_RESULT_CANCELLED">
        <description>Command has been cancelled (as a result of receiving a COMMAND_CANCEL message).</description>
      </entry>
      <entry value="7" name="MAV_RESULT_COMMAND_LONG_ONLY">
        <description>Command is only accepted when sent as a COMMAND_LONG.</description>
      </entry>
      <entry value="8" name="MAV_RESULT_COMMAND_INT_ONLY">
        <description>Command is only accepted when sent as a COMMAND_INT.</description>
      </entry>
      <entry value="9" name="MAV_RESULT_COMMAND_UNSUPPORTED_MAV_FRAME">
        <description>Command is invalid because a frame is required and the specified frame is not supported.</description>
      </entry>
    </enum>
    <enum name="MAV_MISSION_RESULT">
      <description>Result of mission operation (in a MISSION_ACK message).</description>
      <entry value="0" name="MAV_MISSION_ACCEPTED">
        <description>mission accepted OK</description>
      </entry>
      <entry value="1" name="MAV_MISSION_ERROR">
        <description>Generic error / not accepting mission commands at all right now.</description>
      </entry>
      <entry value="2" name="MAV_MISSION_UNSUPPORTED_FRAME">
        <description>Coordinate frame is not supported.</description>
      </entry>
      <entry value="3" name="MAV_MISSION_UNSUPPORTED">
        <description>Command is not supported.</description>
      </entry>
      <entry value="4" name="MAV_MISSION_NO_SPACE">
        <description>Mission items exceed storage space.</description>
      </entry>
      <entry value="5" name="MAV_MISSION_INVALID">
        <description>One of the parameters has an invalid value.</description>
      </entry>
      <entry value="6" name="MAV_MISSION_INVALID_PARAM1">
        <description>param1 has an invalid value.</description>
      </entry>
      <entry value="7" name="MAV_MISSION_INVALID_PARAM2">
        <description>param2 has an invalid value.</description>
      </entry>
      <entry value="8" name="MAV_MISSION_INVALID_PARAM3">
        <description>param3 has an invalid value.</description>
      </entry>
      <entry value="9" name="MAV_MISSION_INVALID_PARAM4">
        <description>param4 has an invalid value.</description>
      </entry>
      <entry value="10" name="MAV_MISSION_INVALID_PARAM5_X">
        <description>x / param5 has an invalid value.</description>
      </entry>
      <entry value="11" name="MAV_MISSION_INVALID_PARAM6_Y">
        <description>y / param6 has an invalid value.</description>
      </entry>
      <entry value="12" name="MAV_MISSION_INVALID_PARAM7">
        <description>z / param7 has an invalid value.</description>
      </entry>
      <entry value="13" name="MAV_MISSION_INVALID_SEQUENCE">
        <description>Mission item received out of sequence</description>
      </entry>
      <entry value="14" name="MAV_MISSION_DENIED">
        <description>Not accepting any mission commands from this communication partner.</description>
      </entry>
      <entry value="15" name="MAV_MISSION_OPERATION_CANCELLED">
        <description>Current mission operation cancelled (e.g. mission upload, mission download).</description>
      </entry>
    </enum>
    <enum name="MAV_SEVERITY">
      <description>Indicates the severity level, generally used for status messages to indicate their relative urgency. Based on RFC-5424 using expanded definitions at: http://www.kiwisyslog.com/kb/info:-syslog-message-levels/.</description>
      <entry value="0" name="MAV_SEVERITY_EMERGENCY">
        <description>System is unusable. This is a "panic" condition.</description>
      </entry>
      <entry value="1" name="MAV_SEVERITY_ALERT">
        <description>Action should be taken immediately. Indicates error in non-critical systems.</description>
      </entry>
      <entry value="2" name="MAV_SEVERITY_CRITICAL">
        <description>Action must be taken immediately. Indicates failure in a primary system.</description>
      </entry>
      <entry value="3" name="MAV_SEVERITY_ERROR">
        <description>Indicates an error in secondary/redundant systems.</description>
      </entry>
      <entry value="4" name="MAV_SEVERITY_WARNING">
        <description>Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.</description>
      </entry>
      <entry value="5" name="MAV_SEVERITY_NOTICE">
        <description>An unusual event has occurred, though not an error condition. This should be investigated for the root cause.</description>
      </entry>
      <entry value="6" name="MAV_SEVERITY_INFO">
        <description>Normal operational messages. Useful for logging. No action is required for these messages.</description>
      </entry>
      <entry value="7" name="MAV_SEVERITY_DEBUG">
        <description>Useful non-operational messages that can assist in debugging. These should not occur during normal operation.</description>
      </entry>
    </enum>
    <enum name="MAV_POWER_STATUS" bitmask="true">
      <description>Power supply status flags (bitmask)</description>
      <entry value="1" name="MAV_POWER_STATUS_BRICK_VALID">
        <description>main brick power supply valid</description>
      </entry>
      <entry value="2" name="MAV_POWER_STATUS_SERVO_VALID">
        <description>main servo power supply valid for FMU</description>
      </entry>
      <entry value="4" name="MAV_POWER_STATUS_USB_CONNECTED">
        <description>USB power is connected</description>
      </entry>
      <entry value="8" name="MAV_POWER_STATUS_PERIPH_OVERCURRENT">
        <description>peripheral supply is in over-current state</description>
      </entry>
      <entry value="16" name="MAV_POWER_STATUS_PERIPH_HIPOWER_OVERCURRENT">
        <description>hi-power peripheral supply is in over-current state</description>
      </entry>
      <entry value="32" name="MAV_POWER_STATUS_CHANGED">
        <description>Power status has changed since boot</description>
      </entry>
    </enum>
    <enum name="SERIAL_CONTROL_DEV">
      <description>SERIAL_CONTROL device types</description>
      <entry value="0" name="SERIAL_CONTROL_DEV_TELEM1">
        <description>First telemetry port</description>
      </entry>
      <entry value="1" name="SERIAL_CONTROL_DEV_TELEM2">
        <description>Second telemetry port</description>
      </entry>
      <entry value="2" name="SERIAL_CONTROL_DEV_GPS1">
        <description>First GPS port</description>
      </entry>
      <entry value="3" name="SERIAL_CONTROL_DEV_GPS2">
        <description>Second GPS port</description>
      </entry>
      <entry value="10" name="SERIAL_CONTROL_DEV_SHELL">
        <description>system shell</description>
      </entry>
      <entry value="100" name="SERIAL_CONTROL_SERIAL0">
        <description>SERIAL0</description>
      </entry>
      <entry value="101" name="SERIAL_CONTROL_SERIAL1">
        <description>SERIAL1</description>
      </entry>
      <entry value="102" name="SERIAL_CONTROL_SERIAL2">
        <description>SERIAL2</description>
      </entry>
      <entry value="103" name="SERIAL_CONTROL_SERIAL3">
        <description>SERIAL3</description>
      </entry>
      <entry value="104" name="SERIAL_CONTROL_SERIAL4">
        <description>SERIAL4</description>
      </entry>
      <entry value="105" name="SERIAL_CONTROL_SERIAL5">
        <description>SERIAL5</description>
      </entry>
      <entry value="106" name="SERIAL_CONTROL_SERIAL6">
        <description>SERIAL6</description>
      </entry>
      <entry value="107" name="SERIAL_CONTROL_SERIAL7">
        <description>SERIAL7</description>
      </entry>
      <entry value="108" name="SERIAL_CONTROL_SERIAL8">
        <description>SERIAL8</description>
      </entry>
      <entry value="109" name="SERIAL_CONTROL_SERIAL9">
        <description>SERIAL9</description>
      </entry>
    </enum>
    <enum name="SERIAL_CONTROL_FLAG" bitmask="true">
      <description>SERIAL_CONTROL flags (bitmask)</description>
      <entry value="1" name="SERIAL_CONTROL_FLAG_REPLY">
        <description>Set if this is a reply</description>
      </entry>
      <entry value="2" name="SERIAL_CONTROL_FLAG_RESPOND">
        <description>Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message</description>
      </entry>
      <entry value="4" name="SERIAL_CONTROL_FLAG_EXCLUSIVE">
        <description>Set if access to the serial port should be removed from whatever driver is currently using it, giving exclusive access to the SERIAL_CONTROL protocol. The port can be handed back by sending a request without this flag set</description>
      </entry>
      <entry value="8" name="SERIAL_CONTROL_FLAG_BLOCKING">
        <description>Block on writes to the serial port</description>
      </entry>
      <entry value="16" name="SERIAL_CONTROL_FLAG_MULTI">
        <description>Send multiple replies until port is drained</description>
      </entry>
    </enum>
    <enum name="MAV_DISTANCE_SENSOR">
      <description>Enumeration of distance sensor types</description>
      <entry value="0" name="MAV_DISTANCE_SENSOR_LASER">
        <description>Laser rangefinder, e.g. LightWare SF02/F or PulsedLight units</description>
      </entry>
      <entry value="1" name="MAV_DISTANCE_SENSOR_ULTRASOUND">
        <description>Ultrasound rangefinder, e.g. MaxBotix units</description>
      </entry>
      <entry value="2" name="MAV_DISTANCE_SENSOR_INFRARED">
        <description>Infrared rangefinder, e.g. Sharp units</description>
      </entry>
      <entry value="3" name="MAV_DISTANCE_SENSOR_RADAR">
        <description>Radar type, e.g. uLanding units</description>
      </entry>
      <entry value="4" name="MAV_DISTANCE_SENSOR_UNKNOWN">
        <description>Broken or unknown type, e.g. analog units</description>
      </entry>
    </enum>
    <enum name="MAV_SENSOR_ORIENTATION">
      <description>Enumeration of sensor orientation, according to its rotations</description>
      <entry value="0" name="MAV_SENSOR_ROTATION_NONE">
        <description>Roll: 0, Pitch: 0, Yaw: 0</description>
      </entry>
      <entry value="1" name="MAV_SENSOR_ROTATION_YAW_45">
        <description>Roll: 0, Pitch: 0, Yaw: 45</description>
      </entry>
      <entry value="2" name="MAV_SENSOR_ROTATION_YAW_90">
        <description>Roll: 0, Pitch: 0, Yaw: 90</description>
      </entry>
      <entry value="3" name="MAV_SENSOR_ROTATION_YAW_135">
        <description>Roll: 0, Pitch: 0, Yaw: 135</description>
      </entry>
      <entry value="4" name="MAV_SENSOR_ROTATION_YAW_180">
        <description>Roll: 0, Pitch: 0, Yaw: 180</description>
      </entry>
      <entry value="5" name="MAV_SENSOR_ROTATION_YAW_225">
        <description>Roll: 0, Pitch: 0, Yaw: 225</description>
      </entry>
      <entry value="6" name="MAV_SENSOR_ROTATION_YAW_270">
        <description>Roll: 0, Pitch: 0, Yaw: 270</description>
      </entry>
      <entry value="7" name="MAV_SENSOR_ROTATION_YAW_315">
        <description>Roll: 0, Pitch: 0, Yaw: 315</description>
      </entry>
      <entry value="8" name="MAV_SENSOR_ROTATION_ROLL_180">
        <description>Roll: 180, Pitch: 0, Yaw: 0</description>
      </entry>
      <entry value="9" name="MAV_SENSOR_ROTATION_ROLL_180_YAW_45">
        <description>Roll: 180, Pitch: 0, Yaw: 45</description>
      </entry>
      <entry value="10" name="MAV_SENSOR_ROTATION_ROLL_180_YAW_90">
        <description>Roll: 180, Pitch: 0, Yaw: 90</description>
      </entry>
      <entry value="11" name="MAV_SENSOR_ROTATION_ROLL_180_YAW_135">
        <description>Roll: 180, Pitch: 0, Yaw: 135</description>
      </entry>
      <entry value="12" name="MAV_SENSOR_ROTATION_PITCH_180">
        <description>Roll: 0, Pitch: 180, Yaw: 0</description>
      </entry>
      <entry value="13" name="MAV_SENSOR_ROTATION_ROLL_180_YAW_225">
        <description>Roll: 180, Pitch: 0, Yaw: 225</description>
      </entry>
      <entry value="14" name="MAV_SENSOR_ROTATION_ROLL_180_YAW_270">
        <description>Roll: 180, Pitch: 0, Yaw: 270</description>
      </entry>
      <entry value="15" name="MAV_SENSOR_ROTATION_ROLL_180_YAW_315">
        <description>Roll: 180, Pitch: 0, Yaw: 315</description>
      </entry>
      <entry value="16" name="MAV_SENSOR_ROTATION_ROLL_90">
        <description>Roll: 90, Pitch: 0, Yaw: 0</description>
      </entry>
      <entry value="17" name="MAV_SENSOR_ROTATION_ROLL_90_YAW_45">
        <description>Roll: 90, Pitch: 0, Yaw: 45</description>
      </entry>
      <entry value="18" name="MAV_SENSOR_ROTATION_ROLL_90_YAW_90">
        <description>Roll: 90, Pitch: 0, Yaw: 90</description>
      </entry>
      <entry value="19" name="MAV_SENSOR_ROTATION_ROLL_90_YAW_135">
        <description>Roll: 90, Pitch: 0, Yaw: 135</description>
      </entry>
      <entry value="20" name="MAV_SENSOR_ROTATION_ROLL_270">
        <description>Roll: 270, Pitch: 0, Yaw: 0</description>
      </entry>
      <entry value="21" name="MAV_SENSOR_ROTATION_ROLL_270_YAW_45">
        <description>Roll: 270, Pitch: 0, Yaw: 45</description>
      </entry>
      <entry value="22" name="MAV_SENSOR_ROTATION_ROLL_270_YAW_90">
        <description>Roll: 270, Pitch: 0, Yaw: 90</description>
      </entry>
      <entry value="23" name="MAV_SENSOR_ROTATION_ROLL_270_YAW_135">
        <description>Roll: 270, Pitch: 0, Yaw: 135</description>
      </entry>
      <entry value="24" name="MAV_SENSOR_ROTATION_PITCH_90">
        <description>Roll: 0, Pitch: 90, Yaw: 0</description>
      </entry>
      <entry value="25" name="MAV_SENSOR_ROTATION_PITCH_270">
        <description>Roll: 0, Pitch: 270, Yaw: 0</description>
      </entry>
      <entry value="26" name="MAV_SENSOR_ROTATION_PITCH_180_YAW_90">
        <description>Roll: 0, Pitch: 180, Yaw: 90</description>
      </entry>
      <entry value="27" name="MAV_SENSOR_ROTATION_PITCH_180_YAW_270">
        <description>Roll: 0, Pitch: 180, Yaw: 270</description>
      </entry>
      <entry value="28" name="MAV_SENSOR_ROTATION_ROLL_90_PITCH_90">
        <description>Roll: 90, Pitch: 90, Yaw: 0</description>
      </entry>
      <entry value="29" name="MAV_SENSOR_ROTATION_ROLL_180_PITCH_90">
        <description>Roll: 180, Pitch: 90, Yaw: 0</description>
      </entry>
      <entry value="30" name="MAV_SENSOR_ROTATION_ROLL_270_PITCH_90">
        <description>Roll: 270, Pitch: 90, Yaw: 0</description>
      </entry>
      <entry value="31" name="MAV_SENSOR_ROTATION_ROLL_90_PITCH_180">
        <description>Roll: 90, Pitch: 180, Yaw: 0</description>
      </entry>
      <entry value="32" name="MAV_SENSOR_ROTATION_ROLL_270_PITCH_180">
        <description>Roll: 270, Pitch: 180, Yaw: 0</description>
      </entry>
      <entry value="33" name="MAV_SENSOR_ROTATION_ROLL_90_PITCH_270">
        <description>Roll: 90, Pitch: 270, Yaw: 0</description>
      </entry>
      <entry value="34" name="MAV_SENSOR_ROTATION_ROLL_180_PITCH_270">
        <description>Roll: 180, Pitch: 270, Yaw: 0</description>
      </entry>
      <entry value="35" name="MAV_SENSOR_ROTATION_ROLL_270_PITCH_270">
        <description>Roll: 270, Pitch: 270, Yaw: 0</description>
      </entry>
      <entry value="36" name="MAV_SENSOR_ROTATION_ROLL_90_PITCH_180_YAW_90">
        <description>Roll: 90, Pitch: 180, Yaw: 90</description>
      </entry>
      <entry value="37" name="MAV_SENSOR_ROTATION_ROLL_90_YAW_270">
        <description>Roll: 90, Pitch: 0, Yaw: 270</description>
      </entry>
      <entry value="38" name="MAV_SENSOR_ROTATION_ROLL_90_PITCH_68_YAW_293">
        <description>Roll: 90, Pitch: 68, Yaw: 293</description>
      </entry>
      <entry value="39" name="MAV_SENSOR_ROTATION_PITCH_315">
        <description>Pitch: 315</description>
      </entry>
      <entry value="40" name="MAV_SENSOR_ROTATION_ROLL_90_PITCH_315">
        <description>Roll: 90, Pitch: 315</description>
      </entry>
      <entry value="100" name="MAV_SENSOR_ROTATION_CUSTOM">
        <description>Custom orientation</description>
      </entry>
    </enum>
    <enum name="MAV_PROTOCOL_CAPABILITY" bitmask="true">
      <description>Bitmask of (optional) autopilot capabilities (64 bit). If a bit is set, the autopilot supports this capability.</description>
      <entry value="1" name="MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT">
        <description>Autopilot supports the MISSION_ITEM float message type.
          Note that MISSION_ITEM is deprecated, and autopilots should use MISSION_INT instead.
        </description>
      </entry>
      <entry value="2" name="MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT">
        <deprecated since="2022-03" replaced_by="MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST"/>
        <description>Autopilot supports the new param float message type.</description>
      </entry>
      <entry value="4" name="MAV_PROTOCOL_CAPABILITY_MISSION_INT">
        <description>Autopilot supports MISSION_ITEM_INT scaled integer message type.
          Note that this flag must always be set if missions are supported, because missions must always use MISSION_ITEM_INT (rather than MISSION_ITEM, which is deprecated).
        </description>
      </entry>
      <entry value="8" name="MAV_PROTOCOL_CAPABILITY_COMMAND_INT">
        <description>Autopilot supports COMMAND_INT scaled integer message type.</description>
      </entry>
      <entry value="16" name="MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE">
        <description>Parameter protocol uses byte-wise encoding of parameter values into param_value (float) fields: https://mavlink.io/en/services/parameter.html#parameter-encoding.
          Note that either this flag or MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST should be set if the parameter protocol is supported.
        </description>
      </entry>
      <entry value="32" name="MAV_PROTOCOL_CAPABILITY_FTP">
        <description>Autopilot supports the File Transfer Protocol v1: https://mavlink.io/en/services/ftp.html.</description>
      </entry>
      <entry value="64" name="MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET">
        <description>Autopilot supports commanding attitude offboard.</description>
      </entry>
      <entry value="128" name="MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED">
        <description>Autopilot supports commanding position and velocity targets in local NED frame.</description>
      </entry>
      <entry value="256" name="MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT">
        <description>Autopilot supports commanding position and velocity targets in global scaled integers.</description>
      </entry>
      <entry value="512" name="MAV_PROTOCOL_CAPABILITY_TERRAIN">
        <description>Autopilot supports terrain protocol / data handling.</description>
      </entry>
      <entry value="1024" name="MAV_PROTOCOL_CAPABILITY_RESERVED3">
        <description>Reserved for future use.</description>
      </entry>
      <entry value="2048" name="MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION">
        <description>Autopilot supports the MAV_CMD_DO_FLIGHTTERMINATION command (flight termination).</description>
      </entry>
      <entry value="4096" name="MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION">
        <description>Autopilot supports onboard compass calibration.</description>
      </entry>
      <entry value="8192" name="MAV_PROTOCOL_CAPABILITY_MAVLINK2">
        <description>Autopilot supports MAVLink version 2.</description>
      </entry>
      <entry value="16384" name="MAV_PROTOCOL_CAPABILITY_MISSION_FENCE">
        <description>Autopilot supports mission fence protocol.</description>
      </entry>
      <entry value="32768" name="MAV_PROTOCOL_CAPABILITY_MISSION_RALLY">
        <description>Autopilot supports mission rally point protocol.</description>
      </entry>
      <entry value="65536" name="MAV_PROTOCOL_CAPABILITY_RESERVED2">
        <description>Reserved for future use.</description>
      </entry>
      <entry value="131072" name="MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST">
        <description>Parameter protocol uses C-cast of parameter values to set the param_value (float) fields: https://mavlink.io/en/services/parameter.html#parameter-encoding.
          Note that either this flag or MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE should be set if the parameter protocol is supported.
        </description>
      </entry>
      <entry value="262144" name="MAV_PROTOCOL_CAPABILITY_COMPONENT_IMPLEMENTS_GIMBAL_MANAGER">
        <description>This component implements/is a gimbal manager. This means the GIMBAL_MANAGER_INFORMATION, and other messages can be requested.
        </description>
      </entry>
      <entry value="524288" name="MAV_PROTOCOL_CAPABILITY_COMPONENT_ACCEPTS_GCS_CONTROL">
        <wip/>
        <description>Component supports locking control to a particular GCS independent of its system (via MAV_CMD_REQUEST_OPERATOR_CONTROL).</description>
      </entry>
    </enum>
    <enum name="MAV_MISSION_TYPE">
      <description>Type of mission items being requested/sent in mission protocol.</description>
      <entry value="0" name="MAV_MISSION_TYPE_MISSION">
        <description>Items are mission commands for main mission.</description>
      </entry>
      <entry value="1" name="MAV_MISSION_TYPE_FENCE">
        <description>Specifies GeoFence area(s). Items are MAV_CMD_NAV_FENCE_ GeoFence items.</description>
      </entry>
      <entry value="2" name="MAV_MISSION_TYPE_RALLY">
        <description>Specifies the rally points for the vehicle. Rally points are alternative RTL points. Items are MAV_CMD_NAV_RALLY_POINT rally point items.</description>
      </entry>
      <entry value="255" name="MAV_MISSION_TYPE_ALL">
        <description>Only used in MISSION_CLEAR_ALL to clear all mission types.</description>
      </entry>
    </enum>
    <enum name="MAV_ESTIMATOR_TYPE">
      <description>Enumeration of estimator types</description>
      <entry value="0" name="MAV_ESTIMATOR_TYPE_UNKNOWN">
        <description>Unknown type of the estimator.</description>
      </entry>
      <entry value="1" name="MAV_ESTIMATOR_TYPE_NAIVE">
        <description>This is a naive estimator without any real covariance feedback.</description>
      </entry>
      <entry value="2" name="MAV_ESTIMATOR_TYPE_VISION">
        <description>Computer vision based estimate. Might be up to scale.</description>
      </entry>
      <entry value="3" name="MAV_ESTIMATOR_TYPE_VIO">
        <description>Visual-inertial estimate.</description>
      </entry>
      <entry value="4" name="MAV_ESTIMATOR_TYPE_GPS">
        <description>Plain GPS estimate.</description>
      </entry>
      <entry value="5" name="MAV_ESTIMATOR_TYPE_GPS_INS">
        <description>Estimator integrating GPS and inertial sensing.</description>
      </entry>
      <entry value="6" name="MAV_ESTIMATOR_TYPE_MOCAP">
        <description>Estimate from external motion capturing system.</description>
      </entry>
      <entry value="7" name="MAV_ESTIMATOR_TYPE_LIDAR">
        <description>Estimator based on lidar sensor input.</description>
      </entry>
      <entry value="8" name="MAV_ESTIMATOR_TYPE_AUTOPILOT">
        <description>Estimator on autopilot.</description>
      </entry>
    </enum>
    <enum name="MAV_BATTERY_TYPE">
      <description>Enumeration of battery types</description>
      <entry value="0" name="MAV_BATTERY_TYPE_UNKNOWN">
        <description>Not specified.</description>
      </entry>
      <entry value="1" name="MAV_BATTERY_TYPE_LIPO">
        <description>Lithium polymer battery</description>
      </entry>
      <entry value="2" name="MAV_BATTERY_TYPE_LIFE">
        <description>Lithium-iron-phosphate battery</description>
      </entry>
      <entry value="3" name="MAV_BATTERY_TYPE_LION">
        <description>Lithium-ION battery</description>
      </entry>
      <entry value="4" name="MAV_BATTERY_TYPE_NIMH">
        <description>Nickel metal hydride battery</description>
      </entry>
    </enum>
    <enum name="MAV_BATTERY_FUNCTION">
      <description>Enumeration of battery functions</description>
      <entry value="0" name="MAV_BATTERY_FUNCTION_UNKNOWN">
        <description>Battery function is unknown</description>
      </entry>
      <entry value="1" name="MAV_BATTERY_FUNCTION_ALL">
        <description>Battery supports all flight systems</description>
      </entry>
      <entry value="2" name="MAV_BATTERY_FUNCTION_PROPULSION">
        <description>Battery for the propulsion system</description>
      </entry>
      <entry value="3" name="MAV_BATTERY_FUNCTION_AVIONICS">
        <description>Avionics battery</description>
      </entry>
      <entry value="4" name="MAV_BATTERY_FUNCTION_PAYLOAD">
        <description>Payload battery</description>
      </entry>
    </enum>
    <enum name="MAV_BATTERY_CHARGE_STATE">
      <description>Enumeration for battery charge states.</description>
      <entry value="0" name="MAV_BATTERY_CHARGE_STATE_UNDEFINED">
        <description>Low battery state is not provided</description>
      </entry>
      <entry value="1" name="MAV_BATTERY_CHARGE_STATE_OK">
        <description>Battery is not in low state. Normal operation.</description>
      </entry>
      <entry value="2" name="MAV_BATTERY_CHARGE_STATE_LOW">
        <description>Battery state is low, warn and monitor close.</description>
      </entry>
      <entry value="3" name="MAV_BATTERY_CHARGE_STATE_CRITICAL">
        <description>Battery state is critical, return or abort immediately.</description>
      </entry>
      <entry value="4" name="MAV_BATTERY_CHARGE_STATE_EMERGENCY">
        <description>Battery state is too low for ordinary abort sequence. Perform fastest possible emergency stop to prevent damage.</description>
      </entry>
      <entry value="5" name="MAV_BATTERY_CHARGE_STATE_FAILED">
        <description>Battery failed, damage unavoidable. Possible causes (faults) are listed in MAV_BATTERY_FAULT.</description>
      </entry>
      <entry value="6" name="MAV_BATTERY_CHARGE_STATE_UNHEALTHY">
        <description>Battery is diagnosed to be defective or an error occurred, usage is discouraged / prohibited. Possible causes (faults) are listed in MAV_BATTERY_FAULT.</description>
      </entry>
      <entry value="7" name="MAV_BATTERY_CHARGE_STATE_CHARGING">
        <description>Battery is charging.</description>
      </entry>
    </enum>
    <enum name="MAV_BATTERY_MODE">
      <description>Battery mode. Note, the normal operation mode (i.e. when flying) should be reported as MAV_BATTERY_MODE_UNKNOWN to allow message trimming in normal flight.</description>
      <entry value="0" name="MAV_BATTERY_MODE_UNKNOWN">
        <description>Battery mode not supported/unknown battery mode/normal operation.</description>
      </entry>
      <entry value="1" name="MAV_BATTERY_MODE_AUTO_DISCHARGING">
        <description>Battery is auto discharging (towards storage level).</description>
      </entry>
      <entry value="2" name="MAV_BATTERY_MODE_HOT_SWAP">
        <description>Battery in hot-swap mode (current limited to prevent spikes that might damage sensitive electrical circuits).</description>
      </entry>
    </enum>
    <enum name="MAV_BATTERY_FAULT" bitmask="true">
      <description>Smart battery supply status/fault flags (bitmask) for health indication. The battery must also report either MAV_BATTERY_CHARGE_STATE_FAILED or MAV_BATTERY_CHARGE_STATE_UNHEALTHY if any of these are set.</description>
      <entry value="1" name="MAV_BATTERY_FAULT_DEEP_DISCHARGE">
        <description>Battery has deep discharged.</description>
      </entry>
      <entry value="2" name="MAV_BATTERY_FAULT_SPIKES">
        <description>Voltage spikes.</description>
      </entry>
      <entry value="4" name="MAV_BATTERY_FAULT_CELL_FAIL">
        <description>One or more cells have failed. Battery should also report MAV_BATTERY_CHARGE_STATE_FAILE (and should not be used).</description>
      </entry>
      <entry value="8" name="MAV_BATTERY_FAULT_OVER_CURRENT">
        <description>Over-current fault.</description>
      </entry>
      <entry value="16" name="MAV_BATTERY_FAULT_OVER_TEMPERATURE">
        <description>Over-temperature fault.</description>
      </entry>
      <entry value="32" name="MAV_BATTERY_FAULT_UNDER_TEMPERATURE">
        <description>Under-temperature fault.</description>
      </entry>
      <entry value="64" name="MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE">
        <description>Vehicle voltage is not compatible with this battery (batteries on same power rail should have similar voltage).</description>
      </entry>
      <entry value="128" name="MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE">
        <description>Battery firmware is not compatible with current autopilot firmware.</description>
      </entry>
      <entry value="256" name="BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION">
        <description>Battery is not compatible due to cell configuration (e.g. 5s1p when vehicle requires 6s).</description>
      </entry>
    </enum>
    <enum name="MAV_FUEL_TYPE">
      <description>Fuel types for use in FUEL_TYPE. Fuel types specify the units for the maximum, available and consumed fuel, and for the flow rates.</description>
      <entry value="0" name="MAV_FUEL_TYPE_UNKNOWN">
        <description>Not specified. Fuel levels are normalized (i.e. maximum is 1, and other levels are relative to 1).</description>
      </entry>
      <entry value="1" name="MAV_FUEL_TYPE_LIQUID">
        <description>A generic liquid fuel. Fuel levels are in millilitres (ml). Fuel rates are in millilitres/second.</description>
      </entry>
      <entry value="2" name="MAV_FUEL_TYPE_GAS">
        <description>A gas tank. Fuel levels are in kilo-Pascal (kPa), and flow rates are in milliliters per second (ml/s).</description>
      </entry>
    </enum>
    <enum name="MAV_GENERATOR_STATUS_FLAG" bitmask="true">
      <description>Flags to report status/failure cases for a power generator (used in GENERATOR_STATUS). Note that FAULTS are conditions that cause the generator to fail. Warnings are conditions that require attention before the next use (they indicate the system is not operating properly).</description>
      <entry value="1" name="MAV_GENERATOR_STATUS_FLAG_OFF">
        <description>Generator is off.</description>
      </entry>
      <entry value="2" name="MAV_GENERATOR_STATUS_FLAG_READY">
        <description>Generator is ready to start generating power.</description>
      </entry>
      <entry value="4" name="MAV_GENERATOR_STATUS_FLAG_GENERATING">
        <description>Generator is generating power.</description>
      </entry>
      <entry value="8" name="MAV_GENERATOR_STATUS_FLAG_CHARGING">
        <description>Generator is charging the batteries (generating enough power to charge and provide the load).</description>
      </entry>
      <entry value="16" name="MAV_GENERATOR_STATUS_FLAG_REDUCED_POWER">
        <description>Generator is operating at a reduced maximum power.</description>
      </entry>
      <entry value="32" name="MAV_GENERATOR_STATUS_FLAG_MAXPOWER">
        <description>Generator is providing the maximum output.</description>
      </entry>
      <entry value="64" name="MAV_GENERATOR_STATUS_FLAG_OVERTEMP_WARNING">
        <description>Generator is near the maximum operating temperature, cooling is insufficient.</description>
      </entry>
      <entry value="128" name="MAV_GENERATOR_STATUS_FLAG_OVERTEMP_FAULT">
        <description>Generator hit the maximum operating temperature and shutdown.</description>
      </entry>
      <entry value="256" name="MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_WARNING">
        <description>Power electronics are near the maximum operating temperature, cooling is insufficient.</description>
      </entry>
      <entry value="512" name="MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_OVERTEMP_FAULT">
        <description>Power electronics hit the maximum operating temperature and shutdown.</description>
      </entry>
      <entry value="1024" name="MAV_GENERATOR_STATUS_FLAG_ELECTRONICS_FAULT">
        <description>Power electronics experienced a fault and shutdown.</description>
      </entry>
      <entry value="2048" name="MAV_GENERATOR_STATUS_FLAG_POWERSOURCE_FAULT">
        <description>The power source supplying the generator failed e.g. mechanical generator stopped, tether is no longer providing power, solar cell is in shade, hydrogen reaction no longer happening.</description>
      </entry>
      <entry value="4096" name="MAV_GENERATOR_STATUS_FLAG_COMMUNICATION_WARNING">
        <description>Generator controller having communication problems.</description>
      </entry>
      <entry value="8192" name="MAV_GENERATOR_STATUS_FLAG_COOLING_WARNING">
        <description>Power electronic or generator cooling system error.</description>
      </entry>
      <entry value="16384" name="MAV_GENERATOR_STATUS_FLAG_POWER_RAIL_FAULT">
        <description>Generator controller power rail experienced a fault.</description>
      </entry>
      <entry value="32768" name="MAV_GENERATOR_STATUS_FLAG_OVERCURRENT_FAULT">
        <description>Generator controller exceeded the overcurrent threshold and shutdown to prevent damage.</description>
      </entry>
      <entry value="65536" name="MAV_GENERATOR_STATUS_FLAG_BATTERY_OVERCHARGE_CURRENT_FAULT">
        <description>Generator controller detected a high current going into the batteries and shutdown to prevent battery damage.</description>
      </entry>
      <entry value="131072" name="MAV_GENERATOR_STATUS_FLAG_OVERVOLTAGE_FAULT">
        <description>Generator controller exceeded it's overvoltage threshold and shutdown to prevent it exceeding the voltage rating.</description>
      </entry>
      <entry value="262144" name="MAV_GENERATOR_STATUS_FLAG_BATTERY_UNDERVOLT_FAULT">
        <description>Batteries are under voltage (generator will not start).</description>
      </entry>
      <entry value="524288" name="MAV_GENERATOR_STATUS_FLAG_START_INHIBITED">
        <description>Generator start is inhibited by e.g. a safety switch.</description>
      </entry>
      <entry value="1048576" name="MAV_GENERATOR_STATUS_FLAG_MAINTENANCE_REQUIRED">
        <description>Generator requires maintenance.</description>
      </entry>
      <entry value="2097152" name="MAV_GENERATOR_STATUS_FLAG_WARMING_UP">
        <description>Generator is not ready to generate yet.</description>
      </entry>
      <entry value="4194304" name="MAV_GENERATOR_STATUS_FLAG_IDLE">
        <description>Generator is idle.</description>
      </entry>
    </enum>
    <enum name="MAV_VTOL_STATE">
      <description>Enumeration of VTOL states</description>
      <entry value="0" name="MAV_VTOL_STATE_UNDEFINED">
        <description>MAV is not configured as VTOL</description>
      </entry>
      <entry value="1" name="MAV_VTOL_STATE_TRANSITION_TO_FW">
        <description>VTOL is in transition from multicopter to fixed-wing</description>
      </entry>
      <entry value="2" name="MAV_VTOL_STATE_TRANSITION_TO_MC">
        <description>VTOL is in transition from fixed-wing to multicopter</description>
      </entry>
      <entry value="3" name="MAV_VTOL_STATE_MC">
        <description>VTOL is in multicopter state</description>
      </entry>
      <entry value="4" name="MAV_VTOL_STATE_FW">
        <description>VTOL is in fixed-wing state</description>
      </entry>
    </enum>
    <enum name="MAV_LANDED_STATE">
      <description>Enumeration of landed detector states</description>
      <entry value="0" name="MAV_LANDED_STATE_UNDEFINED">
        <description>MAV landed state is unknown</description>
      </entry>
      <entry value="1" name="MAV_LANDED_STATE_ON_GROUND">
        <description>MAV is landed (on ground)</description>
      </entry>
      <entry value="2" name="MAV_LANDED_STATE_IN_AIR">
        <description>MAV is in air</description>
      </entry>
      <entry value="3" name="MAV_LANDED_STATE_TAKEOFF">
        <description>MAV currently taking off</description>
      </entry>
      <entry value="4" name="MAV_LANDED_STATE_LANDING">
        <description>MAV currently landing</description>
      </entry>
    </enum>
    <enum name="ADSB_ALTITUDE_TYPE">
      <description>Enumeration of the ADSB altimeter types</description>
      <entry value="0" name="ADSB_ALTITUDE_TYPE_PRESSURE_QNH">
        <description>Altitude reported from a Baro source using QNH reference</description>
      </entry>
      <entry value="1" name="ADSB_ALTITUDE_TYPE_GEOMETRIC">
        <description>Altitude reported from a GNSS source</description>
      </entry>
    </enum>
    <enum name="ADSB_EMITTER_TYPE">
      <description>ADSB classification for the type of vehicle emitting the transponder signal</description>
      <entry value="0" name="ADSB_EMITTER_TYPE_NO_INFO"/>
      <entry value="1" name="ADSB_EMITTER_TYPE_LIGHT"/>
      <entry value="2" name="ADSB_EMITTER_TYPE_SMALL"/>
      <entry value="3" name="ADSB_EMITTER_TYPE_LARGE"/>
      <entry value="4" name="ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE"/>
      <entry value="5" name="ADSB_EMITTER_TYPE_HEAVY"/>
      <entry value="6" name="ADSB_EMITTER_TYPE_HIGHLY_MANUV"/>
      <entry value="7" name="ADSB_EMITTER_TYPE_ROTOCRAFT"/>
      <entry value="8" name="ADSB_EMITTER_TYPE_UNASSIGNED"/>
      <entry value="9" name="ADSB_EMITTER_TYPE_GLIDER"/>
      <entry value="10" name="ADSB_EMITTER_TYPE_LIGHTER_AIR"/>
      <entry value="11" name="ADSB_EMITTER_TYPE_PARACHUTE"/>
      <entry value="12" name="ADSB_EMITTER_TYPE_ULTRA_LIGHT"/>
      <entry value="13" name="ADSB_EMITTER_TYPE_UNASSIGNED2"/>
      <entry value="14" name="ADSB_EMITTER_TYPE_UAV"/>
      <entry value="15" name="ADSB_EMITTER_TYPE_SPACE"/>
      <entry value="16" name="ADSB_EMITTER_TYPE_UNASSGINED3"/>
      <entry value="17" name="ADSB_EMITTER_TYPE_EMERGENCY_SURFACE"/>
      <entry value="18" name="ADSB_EMITTER_TYPE_SERVICE_SURFACE"/>
      <entry value="19" name="ADSB_EMITTER_TYPE_POINT_OBSTACLE"/>
    </enum>
    <enum name="ADSB_FLAGS" bitmask="true">
      <description>These flags indicate status such as data validity of each data source. Set = data valid</description>
      <entry value="1" name="ADSB_FLAGS_VALID_COORDS"/>
      <entry value="2" name="ADSB_FLAGS_VALID_ALTITUDE"/>
      <entry value="4" name="ADSB_FLAGS_VALID_HEADING"/>
      <entry value="8" name="ADSB_FLAGS_VALID_VELOCITY"/>
      <entry value="16" name="ADSB_FLAGS_VALID_CALLSIGN"/>
      <entry value="32" name="ADSB_FLAGS_VALID_SQUAWK"/>
      <entry value="64" name="ADSB_FLAGS_SIMULATED"/>
      <entry value="128" name="ADSB_FLAGS_VERTICAL_VELOCITY_VALID"/>
      <entry value="256" name="ADSB_FLAGS_BARO_VALID"/>
      <entry value="32768" name="ADSB_FLAGS_SOURCE_UAT"/>
    </enum>
    <enum name="MAV_DO_REPOSITION_FLAGS" bitmask="true">
      <description>Bitmap of options for the MAV_CMD_DO_REPOSITION</description>
      <entry value="1" name="MAV_DO_REPOSITION_FLAGS_CHANGE_MODE">
        <description>The aircraft should immediately transition into guided. This should not be set for follow me applications</description>
      </entry>
    </enum>
    <enum name="SPEED_TYPE">
      <description>Speed setpoint types used in MAV_CMD_DO_CHANGE_SPEED</description>
      <entry value="0" name="SPEED_TYPE_AIRSPEED">
        <description>Airspeed</description>
      </entry>
      <entry value="1" name="SPEED_TYPE_GROUNDSPEED">
        <description>Groundspeed</description>
      </entry>
      <entry value="2" name="SPEED_TYPE_CLIMB_SPEED">
        <description>Climb speed</description>
      </entry>
      <entry value="3" name="SPEED_TYPE_DESCENT_SPEED">
        <description>Descent speed</description>
      </entry>
    </enum>
    <!-- ESTIMATOR_STATUS_FLAGS - these values should be bit-and with the messages flags field to know if flag has been set -->
    <enum name="ESTIMATOR_STATUS_FLAGS" bitmask="true">
      <description>Flags in ESTIMATOR_STATUS message</description>
      <entry value="1" name="ESTIMATOR_ATTITUDE">
        <description>True if the attitude estimate is good</description>
      </entry>
      <entry value="2" name="ESTIMATOR_VELOCITY_HORIZ">
        <description>True if the horizontal velocity estimate is good</description>
      </entry>
      <entry value="4" name="ESTIMATOR_VELOCITY_VERT">
        <description>True if the  vertical velocity estimate is good</description>
      </entry>
      <entry value="8" name="ESTIMATOR_POS_HORIZ_REL">
        <description>True if the horizontal position (relative) estimate is good</description>
      </entry>
      <entry value="16" name="ESTIMATOR_POS_HORIZ_ABS">
        <description>True if the horizontal position (absolute) estimate is good</description>
      </entry>
      <entry value="32" name="ESTIMATOR_POS_VERT_ABS">
        <description>True if the vertical position (absolute) estimate is good</description>
      </entry>
      <entry value="64" name="ESTIMATOR_POS_VERT_AGL">
        <description>True if the vertical position (above ground) estimate is good</description>
      </entry>
      <entry value="128" name="ESTIMATOR_CONST_POS_MODE">
        <description>True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)</description>
      </entry>
      <entry value="256" name="ESTIMATOR_PRED_POS_HORIZ_REL">
        <description>True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate</description>
      </entry>
      <entry value="512" name="ESTIMATOR_PRED_POS_HORIZ_ABS">
        <description>True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate</description>
      </entry>
      <entry value="1024" name="ESTIMATOR_GPS_GLITCH">
        <description>True if the EKF has detected a GPS glitch</description>
      </entry>
      <entry value="2048" name="ESTIMATOR_ACCEL_ERROR">
        <description>True if the EKF has detected bad accelerometer data</description>
      </entry>
    </enum>
    <!-- motor test type enum -->
    <enum name="MOTOR_TEST_ORDER">
      <description>Sequence that motors are tested when using MAV_CMD_DO_MOTOR_TEST.</description>
      <entry name="MOTOR_TEST_ORDER_DEFAULT" value="0">
        <description>Default autopilot motor test method.</description>
      </entry>
      <entry name="MOTOR_TEST_ORDER_SEQUENCE" value="1">
        <description>Motor numbers are specified as their index in a predefined vehicle-specific sequence.</description>
      </entry>
      <entry name="MOTOR_TEST_ORDER_BOARD" value="2">
        <description>Motor numbers are specified as the output as labeled on the board.</description>
      </entry>
    </enum>
    <!-- motor test throttle type enum -->
    <enum name="MOTOR_TEST_THROTTLE_TYPE">
      <description>Defines how throttle value is represented in MAV_CMD_DO_MOTOR_TEST.</description>
      <entry value="0" name="MOTOR_TEST_THROTTLE_PERCENT">
        <description>Throttle as a percentage (0 ~ 100)</description>
      </entry>
      <entry value="1" name="MOTOR_TEST_THROTTLE_PWM">
        <description>Throttle as an absolute PWM value (normally in range of 1000~2000).</description>
      </entry>
      <entry value="2" name="MOTOR_TEST_THROTTLE_PILOT">
        <description>Throttle pass-through from pilot's transmitter.</description>
      </entry>
      <entry value="3" name="MOTOR_TEST_COMPASS_CAL">
        <description>Per-motor compass calibration test.</description>
      </entry>
    </enum>
    <!-- GPS_INPUT ignore flags enum -->
    <enum name="GPS_INPUT_IGNORE_FLAGS" bitmask="true">
      <entry value="1" name="GPS_INPUT_IGNORE_FLAG_ALT">
        <description>ignore altitude field</description>
      </entry>
      <entry value="2" name="GPS_INPUT_IGNORE_FLAG_HDOP">
        <description>ignore hdop field</description>
      </entry>
      <entry value="4" name="GPS_INPUT_IGNORE_FLAG_VDOP">
        <description>ignore vdop field</description>
      </entry>
      <entry value="8" name="GPS_INPUT_IGNORE_FLAG_VEL_HORIZ">
        <description>ignore horizontal velocity field (vn and ve)</description>
      </entry>
      <entry value="16" name="GPS_INPUT_IGNORE_FLAG_VEL_VERT">
        <description>ignore vertical velocity field (vd)</description>
      </entry>
      <entry value="32" name="GPS_INPUT_IGNORE_FLAG_SPEED_ACCURACY">
        <description>ignore speed accuracy field</description>
      </entry>
      <entry value="64" name="GPS_INPUT_IGNORE_FLAG_HORIZONTAL_ACCURACY">
        <description>ignore horizontal accuracy field</description>
      </entry>
      <entry value="128" name="GPS_INPUT_IGNORE_FLAG_VERTICAL_ACCURACY">
        <description>ignore vertical accuracy field</description>
      </entry>
    </enum>
    <enum name="MAV_COLLISION_ACTION">
      <description>Possible actions an aircraft can take to avoid a collision.</description>
      <entry value="0" name="MAV_COLLISION_ACTION_NONE">
        <description>Ignore any potential collisions</description>
      </entry>
      <entry value="1" name="MAV_COLLISION_ACTION_REPORT">
        <description>Report potential collision</description>
      </entry>
      <entry value="2" name="MAV_COLLISION_ACTION_ASCEND_OR_DESCEND">
        <description>Ascend or Descend to avoid threat</description>
      </entry>
      <entry value="3" name="MAV_COLLISION_ACTION_MOVE_HORIZONTALLY">
        <description>Move horizontally to avoid threat</description>
      </entry>
      <entry value="4" name="MAV_COLLISION_ACTION_MOVE_PERPENDICULAR">
        <description>Aircraft to move perpendicular to the collision's velocity vector</description>
      </entry>
      <entry value="5" name="MAV_COLLISION_ACTION_RTL">
        <description>Aircraft to fly directly back to its launch point</description>
      </entry>
      <entry value="6" name="MAV_COLLISION_ACTION_HOVER">
        <description>Aircraft to stop in place</description>
      </entry>
    </enum>
    <enum name="MAV_COLLISION_THREAT_LEVEL">
      <description>Aircraft-rated danger from this threat.</description>
      <entry value="0" name="MAV_COLLISION_THREAT_LEVEL_NONE">
        <description>Not a threat</description>
      </entry>
      <entry value="1" name="MAV_COLLISION_THREAT_LEVEL_LOW">
        <description>Craft is mildly concerned about this threat</description>
      </entry>
      <entry value="2" name="MAV_COLLISION_THREAT_LEVEL_HIGH">
        <description>Craft is panicking, and may take actions to avoid threat</description>
      </entry>
    </enum>
    <enum name="MAV_COLLISION_SRC">
      <description>Source of information about this collision.</description>
      <entry value="0" name="MAV_COLLISION_SRC_ADSB">
        <description>ID field references ADSB_VEHICLE packets</description>
      </entry>
      <entry value="1" name="MAV_COLLISION_SRC_MAVLINK_GPS_GLOBAL_INT">
        <description>ID field references MAVLink SRC ID</description>
      </entry>
    </enum>
    <enum name="GPS_FIX_TYPE">
      <description>Type of GPS fix</description>
      <entry value="0" name="GPS_FIX_TYPE_NO_GPS">
        <description>No GPS connected</description>
      </entry>
      <entry value="1" name="GPS_FIX_TYPE_NO_FIX">
        <description>No position information, GPS is connected</description>
      </entry>
      <entry value="2" name="GPS_FIX_TYPE_2D_FIX">
        <description>2D position</description>
      </entry>
      <entry value="3" name="GPS_FIX_TYPE_3D_FIX">
        <description>3D position</description>
      </entry>
      <entry value="4" name="GPS_FIX_TYPE_DGPS">
        <description>DGPS/SBAS aided 3D position</description>
      </entry>
      <entry value="5" name="GPS_FIX_TYPE_RTK_FLOAT">
        <description>RTK float, 3D position</description>
      </entry>
      <entry value="6" name="GPS_FIX_TYPE_RTK_FIXED">
        <description>RTK Fixed, 3D position</description>
      </entry>
      <entry value="7" name="GPS_FIX_TYPE_STATIC">
        <description>Static fixed, typically used for base stations</description>
      </entry>
      <entry value="8" name="GPS_FIX_TYPE_PPP">
        <description>PPP, 3D position.</description>
      </entry>
    </enum>
    <enum name="RTK_BASELINE_COORDINATE_SYSTEM">
      <description>RTK GPS baseline coordinate system, used for RTK corrections</description>
      <entry value="0" name="RTK_BASELINE_COORDINATE_SYSTEM_ECEF">
        <description>Earth-centered, Earth-fixed</description>
      </entry>
      <entry value="1" name="RTK_BASELINE_COORDINATE_SYSTEM_NED">
        <description>RTK basestation centered, north, east, down</description>
      </entry>
    </enum>
    <enum name="LANDING_TARGET_TYPE">
      <description>Type of landing target</description>
      <entry value="0" name="LANDING_TARGET_TYPE_LIGHT_BEACON">
        <description>Landing target signaled by light beacon (ex: IR-LOCK)</description>
      </entry>
      <entry value="1" name="LANDING_TARGET_TYPE_RADIO_BEACON">
        <description>Landing target signaled by radio beacon (ex: ILS, NDB)</description>
      </entry>
      <entry value="2" name="LANDING_TARGET_TYPE_VISION_FIDUCIAL">
        <description>Landing target represented by a fiducial marker (ex: ARTag)</description>
      </entry>
      <entry value="3" name="LANDING_TARGET_TYPE_VISION_OTHER">
        <description>Landing target represented by a pre-defined visual shape/feature (ex: X-marker, H-marker, square)</description>
      </entry>
    </enum>
    <enum name="VTOL_TRANSITION_HEADING">
      <description>Direction of VTOL transition</description>
      <entry value="0" name="VTOL_TRANSITION_HEADING_VEHICLE_DEFAULT">
        <description>Respect the heading configuration of the vehicle.</description>
      </entry>
      <entry value="1" name="VTOL_TRANSITION_HEADING_NEXT_WAYPOINT">
        <description>Use the heading pointing towards the next waypoint.</description>
      </entry>
      <entry value="2" name="VTOL_TRANSITION_HEADING_TAKEOFF">
        <description>Use the heading on takeoff (while sitting on the ground).</description>
      </entry>
      <entry value="3" name="VTOL_TRANSITION_HEADING_SPECIFIED">
        <description>Use the specified heading in parameter 4.</description>
      </entry>
      <entry value="4" name="VTOL_TRANSITION_HEADING_ANY">
        <description>Use the current heading when reaching takeoff altitude (potentially facing the wind when weather-vaning is active).</description>
      </entry>
    </enum>
    <enum name="CAMERA_CAP_FLAGS" bitmask="true">
      <description>Camera capability flags (Bitmap)</description>
      <entry value="1" name="CAMERA_CAP_FLAGS_CAPTURE_VIDEO">
        <description>Camera is able to record video</description>
      </entry>
      <entry value="2" name="CAMERA_CAP_FLAGS_CAPTURE_IMAGE">
        <description>Camera is able to capture images</description>
      </entry>
      <entry value="4" name="CAMERA_CAP_FLAGS_HAS_MODES">
        <description>Camera has separate Video and Image/Photo modes (MAV_CMD_SET_CAMERA_MODE)</description>
      </entry>
      <entry value="8" name="CAMERA_CAP_FLAGS_CAN_CAPTURE_IMAGE_IN_VIDEO_MODE">
        <description>Camera can capture images while in video mode</description>
      </entry>
      <entry value="16" name="CAMERA_CAP_FLAGS_CAN_CAPTURE_VIDEO_IN_IMAGE_MODE">
        <description>Camera can capture videos while in Photo/Image mode</description>
      </entry>
      <entry value="32" name="CAMERA_CAP_FLAGS_HAS_IMAGE_SURVEY_MODE">
        <description>Camera has image survey mode (MAV_CMD_SET_CAMERA_MODE)</description>
      </entry>
      <entry value="64" name="CAMERA_CAP_FLAGS_HAS_BASIC_ZOOM">
        <description>Camera has basic zoom control (MAV_CMD_SET_CAMERA_ZOOM)</description>
      </entry>
      <entry value="128" name="CAMERA_CAP_FLAGS_HAS_BASIC_FOCUS">
        <description>Camera has basic focus control (MAV_CMD_SET_CAMERA_FOCUS)</description>
      </entry>
      <entry value="256" name="CAMERA_CAP_FLAGS_HAS_VIDEO_STREAM">
        <description>Camera has video streaming capabilities (request VIDEO_STREAM_INFORMATION with MAV_CMD_REQUEST_MESSAGE for video streaming info)</description>
      </entry>
      <entry value="512" name="CAMERA_CAP_FLAGS_HAS_TRACKING_POINT">
        <description>Camera supports tracking of a point on the camera view.</description>
      </entry>
      <entry value="1024" name="CAMERA_CAP_FLAGS_HAS_TRACKING_RECTANGLE">
        <description>Camera supports tracking of a selection rectangle on the camera view.</description>
      </entry>
      <entry value="2048" name="CAMERA_CAP_FLAGS_HAS_TRACKING_GEO_STATUS">
        <description>Camera supports tracking geo status (CAMERA_TRACKING_GEO_STATUS).</description>
      </entry>
      <entry value="4096" name="CAMERA_CAP_FLAGS_HAS_THERMAL_RANGE">
        <description>Camera supports absolute thermal range (request CAMERA_THERMAL_RANGE with MAV_CMD_REQUEST_MESSAGE).</description>
      </entry>
    </enum>
    <enum name="VIDEO_STREAM_STATUS_FLAGS" bitmask="true">
      <description>Stream status flags (Bitmap)</description>
      <entry value="1" name="VIDEO_STREAM_STATUS_FLAGS_RUNNING">
        <description>Stream is active (running)</description>
      </entry>
      <entry value="2" name="VIDEO_STREAM_STATUS_FLAGS_THERMAL">
        <description>Stream is thermal imaging</description>
      </entry>
      <entry value="4" name="VIDEO_STREAM_STATUS_FLAGS_THERMAL_RANGE_ENABLED">
        <description>Stream can report absolute thermal range (see CAMERA_THERMAL_RANGE).</description>
      </entry>
    </enum>
    <enum name="VIDEO_STREAM_TYPE">
      <description>Video stream types</description>
      <entry value="0" name="VIDEO_STREAM_TYPE_RTSP">
        <description>Stream is RTSP</description>
      </entry>
      <entry value="1" name="VIDEO_STREAM_TYPE_RTPUDP">
        <description>Stream is RTP UDP (URI gives the port number)</description>
      </entry>
      <entry value="2" name="VIDEO_STREAM_TYPE_TCP_MPEG">
        <description>Stream is MPEG on TCP</description>
      </entry>
      <entry value="3" name="VIDEO_STREAM_TYPE_MPEG_TS">
        <description>Stream is MPEG TS (URI gives the port number)</description>
      </entry>
    </enum>
    <enum name="VIDEO_STREAM_ENCODING">
      <description>Video stream encodings</description>
      <entry value="0" name="VIDEO_STREAM_ENCODING_UNKNOWN">
        <description>Stream encoding is unknown</description>
      </entry>
      <entry value="1" name="VIDEO_STREAM_ENCODING_H264">
        <description>Stream encoding is H.264</description>
      </entry>
      <entry value="2" name="VIDEO_STREAM_ENCODING_H265">
        <description>Stream encoding is H.265</description>
      </entry>
    </enum>
    <enum name="CAMERA_TRACKING_STATUS_FLAGS">
      <description>Camera tracking status flags</description>
      <entry value="0" name="CAMERA_TRACKING_STATUS_FLAGS_IDLE">
        <description>Camera is not tracking</description>
      </entry>
      <entry value="1" name="CAMERA_TRACKING_STATUS_FLAGS_ACTIVE">
        <description>Camera is tracking</description>
      </entry>
      <entry value="2" name="CAMERA_TRACKING_STATUS_FLAGS_ERROR">
        <description>Camera tracking in error state</description>
      </entry>
    </enum>
    <enum name="CAMERA_TRACKING_MODE">
      <description>Camera tracking modes</description>
      <entry value="0" name="CAMERA_TRACKING_MODE_NONE">
        <description>Not tracking</description>
      </entry>
      <entry value="1" name="CAMERA_TRACKING_MODE_POINT">
        <description>Target is a point</description>
      </entry>
      <entry value="2" name="CAMERA_TRACKING_MODE_RECTANGLE">
        <description>Target is a rectangle</description>
      </entry>
    </enum>
    <enum name="CAMERA_TRACKING_TARGET_DATA" bitmask="true">
      <description>Camera tracking target data (shows where tracked target is within image)</description>
      <entry value="1" name="CAMERA_TRACKING_TARGET_DATA_EMBEDDED">
        <description>Target data embedded in image data (proprietary)</description>
      </entry>
      <entry value="2" name="CAMERA_TRACKING_TARGET_DATA_RENDERED">
        <description>Target data rendered in image</description>
      </entry>
      <entry value="4" name="CAMERA_TRACKING_TARGET_DATA_IN_STATUS">
        <description>Target data within status message (Point or Rectangle)</description>
      </entry>
    </enum>
    <enum name="CAMERA_ZOOM_TYPE">
      <description>Zoom types for MAV_CMD_SET_CAMERA_ZOOM</description>
      <entry value="0" name="ZOOM_TYPE_STEP">
        <description>Zoom one step increment (-1 for wide, 1 for tele)</description>
      </entry>
      <entry value="1" name="ZOOM_TYPE_CONTINUOUS">
        <description>Continuous normalized zoom in/out rate until stopped. Range -1..1, negative: wide, positive: narrow/tele, 0 to stop zooming. Other values should be clipped to the range.</description>
      </entry>
      <entry value="2" name="ZOOM_TYPE_RANGE">
        <description>Zoom value as proportion of full camera range (a percentage value between 0.0 and 100.0)</description>
      </entry>
      <entry value="3" name="ZOOM_TYPE_FOCAL_LENGTH">
        <description>Zoom value/variable focal length in millimetres. Note that there is no message to get the valid zoom range of the camera, so this can type can only be used for cameras where the zoom range is known (implying that this cannot reliably be used in a GCS for an arbitrary camera)</description>
      </entry>
      <entry value="4" name="ZOOM_TYPE_HORIZONTAL_FOV">
        <description>Zoom value as horizontal field of view in degrees.</description>
      </entry>
    </enum>
    <enum name="SET_FOCUS_TYPE">
      <description>Focus types for MAV_CMD_SET_CAMERA_FOCUS</description>
      <entry value="0" name="FOCUS_TYPE_STEP">
        <description>Focus one step increment (-1 for focusing in, 1 for focusing out towards infinity).</description>
      </entry>
      <entry value="1" name="FOCUS_TYPE_CONTINUOUS">
        <description>Continuous normalized focus in/out rate until stopped. Range -1..1, negative: in, positive: out towards infinity, 0 to stop focusing. Other values should be clipped to the range.</description>
      </entry>
      <entry value="2" name="FOCUS_TYPE_RANGE">
        <description>Focus value as proportion of full camera focus range (a value between 0.0 and 100.0)</description>
      </entry>
      <entry value="3" name="FOCUS_TYPE_METERS">
        <description>Focus value in metres. Note that there is no message to get the valid focus range of the camera, so this can type can only be used for cameras where the range is known (implying that this cannot reliably be used in a GCS for an arbitrary camera).</description>
      </entry>
      <entry value="4" name="FOCUS_TYPE_AUTO">
        <description>Focus automatically.</description>
      </entry>
      <entry value="5" name="FOCUS_TYPE_AUTO_SINGLE">
        <description>Single auto focus. Mainly used for still pictures. Usually abbreviated as AF-S.</description>
      </entry>
      <entry value="6" name="FOCUS_TYPE_AUTO_CONTINUOUS">
        <description>Continuous auto focus. Mainly used for dynamic scenes. Abbreviated as AF-C.</description>
      </entry>
    </enum>
    <enum name="CAMERA_SOURCE">
      <description>Camera sources for MAV_CMD_SET_CAMERA_SOURCE</description>
      <entry value="0" name="CAMERA_SOURCE_DEFAULT">
        <description>Default camera source.</description>
      </entry>
      <entry value="1" name="CAMERA_SOURCE_RGB">
        <description>RGB camera source.</description>
      </entry>
      <entry value="2" name="CAMERA_SOURCE_IR">
        <description>IR camera source.</description>
      </entry>
      <entry value="3" name="CAMERA_SOURCE_NDVI">
        <description>NDVI camera source.</description>
      </entry>
    </enum>
    <enum name="PARAM_ACK">
      <description>Result from PARAM_EXT_SET message.</description>
      <entry value="0" name="PARAM_ACK_ACCEPTED">
        <description>Parameter value ACCEPTED and SET</description>
      </entry>
      <entry value="1" name="PARAM_ACK_VALUE_UNSUPPORTED">
        <description>Parameter value UNKNOWN/UNSUPPORTED</description>
      </entry>
      <entry value="2" name="PARAM_ACK_FAILED">
        <description>Parameter failed to set</description>
      </entry>
      <entry value="3" name="PARAM_ACK_IN_PROGRESS">
        <description>Parameter value received but not yet set/accepted. A subsequent PARAM_EXT_ACK with the final result will follow once operation is completed. This is returned immediately for parameters that take longer to set, indicating that the the parameter was received and does not need to be resent.</description>
      </entry>
    </enum>
    <enum name="CAMERA_MODE">
      <description>Camera Modes.</description>
      <entry value="0" name="CAMERA_MODE_IMAGE">
        <description>Camera is in image/photo capture mode.</description>
      </entry>
      <entry value="1" name="CAMERA_MODE_VIDEO">
        <description>Camera is in video capture mode.</description>
      </entry>
      <entry value="2" name="CAMERA_MODE_IMAGE_SURVEY">
        <description>Camera is in image survey capture mode. It allows for camera controller to do specific settings for surveys.</description>
      </entry>
    </enum>
    <enum name="MAV_ARM_AUTH_DENIED_REASON">
      <entry value="0" name="MAV_ARM_AUTH_DENIED_REASON_GENERIC">
        <description>Not a specific reason</description>
      </entry>
      <entry value="1" name="MAV_ARM_AUTH_DENIED_REASON_NONE">
        <description>Authorizer will send the error as string to GCS</description>
      </entry>
      <entry value="2" name="MAV_ARM_AUTH_DENIED_REASON_INVALID_WAYPOINT">
        <description>At least one waypoint have a invalid value</description>
      </entry>
      <entry value="3" name="MAV_ARM_AUTH_DENIED_REASON_TIMEOUT">
        <description>Timeout in the authorizer process(in case it depends on network)</description>
      </entry>
      <entry value="4" name="MAV_ARM_AUTH_DENIED_REASON_AIRSPACE_IN_USE">
        <description>Airspace of the mission in use by another vehicle, second result parameter can have the waypoint id that caused it to be denied.</description>
      </entry>
      <entry value="5" name="MAV_ARM_AUTH_DENIED_REASON_BAD_WEATHER">
        <description>Weather is not good to fly</description>
      </entry>
    </enum>
    <enum name="RC_TYPE">
      <description>RC type. Used in MAV_CMD_START_RX_PAIR.</description>
      <entry value="0" name="RC_TYPE_SPEKTRUM">
        <description>Spektrum</description>
      </entry>
      <entry value="1" name="RC_TYPE_CRSF">
        <description>CRSF</description>
      </entry>
    </enum>
    <enum name="RC_SUB_TYPE">
      <description>RC sub-type of types defined in RC_TYPE. Used in MAV_CMD_START_RX_PAIR. Ignored if value does not correspond to the set RC_TYPE.</description>
      <entry value="0" name="RC_SUB_TYPE_SPEKTRUM_DSM2">
        <description>Spektrum DSM2</description>
      </entry>
      <entry value="1" name="RC_SUB_TYPE_SPEKTRUM_DSMX">
        <description>Spektrum DSMX</description>
      </entry>
      <entry value="2" name="RC_SUB_TYPE_SPEKTRUM_DSMX8">
        <description>Spektrum DSMX8</description>
      </entry>
    </enum>
    <enum name="POSITION_TARGET_TYPEMASK" bitmask="true">
      <description>Bitmap to indicate which dimensions should be ignored by the vehicle: a value of 0b0000000000000000 or 0b0000001000000000 indicates that none of the setpoint dimensions should be ignored. If bit 9 is set the floats afx afy afz should be interpreted as force instead of acceleration.</description>
      <entry value="1" name="POSITION_TARGET_TYPEMASK_X_IGNORE">
        <description>Ignore position x</description>
      </entry>
      <entry value="2" name="POSITION_TARGET_TYPEMASK_Y_IGNORE">
        <description>Ignore position y</description>
      </entry>
      <entry value="4" name="POSITION_TARGET_TYPEMASK_Z_IGNORE">
        <description>Ignore position z</description>
      </entry>
      <entry value="8" name="POSITION_TARGET_TYPEMASK_VX_IGNORE">
        <description>Ignore velocity x</description>
      </entry>
      <entry value="16" name="POSITION_TARGET_TYPEMASK_VY_IGNORE">
        <description>Ignore velocity y</description>
      </entry>
      <entry value="32" name="POSITION_TARGET_TYPEMASK_VZ_IGNORE">
        <description>Ignore velocity z</description>
      </entry>
      <entry value="64" name="POSITION_TARGET_TYPEMASK_AX_IGNORE">
        <description>Ignore acceleration x</description>
      </entry>
      <entry value="128" name="POSITION_TARGET_TYPEMASK_AY_IGNORE">
        <description>Ignore acceleration y</description>
      </entry>
      <entry value="256" name="POSITION_TARGET_TYPEMASK_AZ_IGNORE">
        <description>Ignore acceleration z</description>
      </entry>
      <entry value="512" name="POSITION_TARGET_TYPEMASK_FORCE_SET">
        <description>Use force instead of acceleration</description>
      </entry>
      <entry value="1024" name="POSITION_TARGET_TYPEMASK_YAW_IGNORE">
        <description>Ignore yaw</description>
      </entry>
      <entry value="2048" name="POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE">
        <description>Ignore yaw rate</description>
      </entry>
    </enum>
    <enum name="ATTITUDE_TARGET_TYPEMASK" bitmask="true">
      <description>Bitmap to indicate which dimensions should be ignored by the vehicle: a value of 0b00000000 indicates that none of the setpoint dimensions should be ignored.</description>
      <entry value="1" name="ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE">
        <description>Ignore body roll rate</description>
      </entry>
      <entry value="2" name="ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE">
        <description>Ignore body pitch rate</description>
      </entry>
      <entry value="4" name="ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE">
        <description>Ignore body yaw rate</description>
      </entry>
      <entry value="32" name="ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET">
        <description>Use 3D body thrust setpoint instead of throttle</description>
      </entry>
      <entry value="64" name="ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE">
        <description>Ignore throttle</description>
      </entry>
      <entry value="128" name="ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE">
        <description>Ignore attitude</description>
      </entry>
    </enum>
    <enum name="UTM_FLIGHT_STATE">
      <description>Airborne status of UAS.</description>
      <entry value="1" name="UTM_FLIGHT_STATE_UNKNOWN">
        <description>The flight state can't be determined.</description>
      </entry>
      <entry value="2" name="UTM_FLIGHT_STATE_GROUND">
        <description>UAS on ground.</description>
      </entry>
      <entry value="3" name="UTM_FLIGHT_STATE_AIRBORNE">
        <description>UAS airborne.</description>
      </entry>
      <entry value="16" name="UTM_FLIGHT_STATE_EMERGENCY">
        <description>UAS is in an emergency flight state.</description>
      </entry>
      <entry value="32" name="UTM_FLIGHT_STATE_NOCTRL">
        <description>UAS has no active controls.</description>
      </entry>
    </enum>
    <enum name="UTM_DATA_AVAIL_FLAGS" bitmask="true">
      <description>Flags for the global position report.</description>
      <entry value="1" name="UTM_DATA_AVAIL_FLAGS_TIME_VALID">
        <description>The field time contains valid data.</description>
      </entry>
      <entry value="2" name="UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE">
        <description>The field uas_id contains valid data.</description>
      </entry>
      <entry value="4" name="UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE">
        <description>The fields lat, lon and h_acc contain valid data.</description>
      </entry>
      <entry value="8" name="UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE">
        <description>The fields alt and v_acc contain valid data.</description>
      </entry>
      <entry value="16" name="UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE">
        <description>The field relative_alt contains valid data.</description>
      </entry>
      <entry value="32" name="UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE">
        <description>The fields vx and vy contain valid data.</description>
      </entry>
      <entry value="64" name="UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE">
        <description>The field vz contains valid data.</description>
      </entry>
      <entry value="128" name="UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE">
        <description>The fields next_lat, next_lon and next_alt contain valid data.</description>
      </entry>
    </enum>
    <!-- cellular status information -->
    <enum name="CELLULAR_STATUS_FLAG">
      <description>These flags encode the cellular network status</description>
      <entry value="0" name="CELLULAR_STATUS_FLAG_UNKNOWN">
        <description>State unknown or not reportable.</description>
      </entry>
      <entry value="1" name="CELLULAR_STATUS_FLAG_FAILED">
        <description>Modem is unusable</description>
      </entry>
      <entry value="2" name="CELLULAR_STATUS_FLAG_INITIALIZING">
        <description>Modem is being initialized</description>
      </entry>
      <entry value="3" name="CELLULAR_STATUS_FLAG_LOCKED">
        <description>Modem is locked</description>
      </entry>
      <entry value="4" name="CELLULAR_STATUS_FLAG_DISABLED">
        <description>Modem is not enabled and is powered down</description>
      </entry>
      <entry value="5" name="CELLULAR_STATUS_FLAG_DISABLING">
        <description>Modem is currently transitioning to the CELLULAR_STATUS_FLAG_DISABLED state</description>
      </entry>
      <entry value="6" name="CELLULAR_STATUS_FLAG_ENABLING">
        <description>Modem is currently transitioning to the CELLULAR_STATUS_FLAG_ENABLED state</description>
      </entry>
      <entry value="7" name="CELLULAR_STATUS_FLAG_ENABLED">
        <description>Modem is enabled and powered on but not registered with a network provider and not available for data connections</description>
      </entry>
      <entry value="8" name="CELLULAR_STATUS_FLAG_SEARCHING">
        <description>Modem is searching for a network provider to register</description>
      </entry>
      <entry value="9" name="CELLULAR_STATUS_FLAG_REGISTERED">
        <description>Modem is registered with a network provider, and data connections and messaging may be available for use</description>
      </entry>
      <entry value="10" name="CELLULAR_STATUS_FLAG_DISCONNECTING">
        <description>Modem is disconnecting and deactivating the last active packet data bearer. This state will not be entered if more than one packet data bearer is active and one of the active bearers is deactivated</description>
      </entry>
      <entry value="11" name="CELLULAR_STATUS_FLAG_CONNECTING">
        <description>Modem is activating and connecting the first packet data bearer. Subsequent bearer activations when another bearer is already active do not cause this state to be entered</description>
      </entry>
      <entry value="12" name="CELLULAR_STATUS_FLAG_CONNECTED">
        <description>One or more packet data bearers is active and connected</description>
      </entry>
    </enum>
    <enum name="CELLULAR_NETWORK_FAILED_REASON">
      <description>These flags are used to diagnose the failure state of CELLULAR_STATUS</description>
      <entry value="0" name="CELLULAR_NETWORK_FAILED_REASON_NONE">
        <description>No error</description>
      </entry>
      <entry value="1" name="CELLULAR_NETWORK_FAILED_REASON_UNKNOWN">
        <description>Error state is unknown</description>
      </entry>
      <entry value="2" name="CELLULAR_NETWORK_FAILED_REASON_SIM_MISSING">
        <description>SIM is required for the modem but missing</description>
      </entry>
      <entry value="3" name="CELLULAR_NETWORK_FAILED_REASON_SIM_ERROR">
        <description>SIM is available, but not usable for connection</description>
      </entry>
    </enum>
    <enum name="CELLULAR_NETWORK_RADIO_TYPE">
      <description>Cellular network radio type</description>
      <entry value="0" name="CELLULAR_NETWORK_RADIO_TYPE_NONE"/>
      <entry value="1" name="CELLULAR_NETWORK_RADIO_TYPE_GSM"/>
      <entry value="2" name="CELLULAR_NETWORK_RADIO_TYPE_CDMA"/>
      <entry value="3" name="CELLULAR_NETWORK_RADIO_TYPE_WCDMA"/>
      <entry value="4" name="CELLULAR_NETWORK_RADIO_TYPE_LTE"/>
    </enum>
    <enum name="PRECISION_LAND_MODE">
      <description>Precision land modes (used in MAV_CMD_NAV_LAND).</description>
      <entry value="0" name="PRECISION_LAND_MODE_DISABLED">
        <description>Normal (non-precision) landing.</description>
      </entry>
      <entry value="1" name="PRECISION_LAND_MODE_OPPORTUNISTIC">
        <description>Use precision landing if beacon detected when land command accepted, otherwise land normally.</description>
      </entry>
      <entry value="2" name="PRECISION_LAND_MODE_REQUIRED">
        <description>Use precision landing, searching for beacon if not found when land command accepted (land normally if beacon cannot be found).</description>
      </entry>
    </enum>
    <!-- parachute action enum -->
    <enum name="PARACHUTE_ACTION">
      <description>Parachute actions. Trigger release and enable/disable auto-release.</description>
      <entry value="0" name="PARACHUTE_DISABLE">
        <description>Disable auto-release of parachute (i.e. release triggered by crash detectors).</description>
      </entry>
      <entry value="1" name="PARACHUTE_ENABLE">
        <description>Enable auto-release of parachute.</description>
      </entry>
      <entry value="2" name="PARACHUTE_RELEASE">
        <description>Release parachute and kill motors.</description>
      </entry>
    </enum>
    <enum name="MAV_TUNNEL_PAYLOAD_TYPE">
      <entry value="0" name="MAV_TUNNEL_PAYLOAD_TYPE_UNKNOWN">
        <description>Encoding of payload unknown.</description>
      </entry>
      <entry value="200" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED0">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="201" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED1">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="202" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED2">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="203" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED3">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="204" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED4">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="205" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED5">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="206" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED6">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="207" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED7">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="208" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED8">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="209" name="MAV_TUNNEL_PAYLOAD_TYPE_STORM32_RESERVED9">
        <description>Registered for STorM32 gimbal controller.</description>
      </entry>
      <entry value="210" name="MAV_TUNNEL_PAYLOAD_TYPE_MODALAI_REMOTE_OSD">
        <description>Registered for ModalAI remote OSD protocol.</description>
      </entry>
      <entry value="211" name="MAV_TUNNEL_PAYLOAD_TYPE_MODALAI_ESC_UART_PASSTHRU">
        <description>Registered for ModalAI ESC UART passthru protocol.</description>
      </entry>
      <entry value="212" name="MAV_TUNNEL_PAYLOAD_TYPE_MODALAI_IO_UART_PASSTHRU">
        <description>Registered for ModalAI vendor use.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_ID_TYPE">
      <entry value="0" name="MAV_ODID_ID_TYPE_NONE">
        <description>No type defined.</description>
      </entry>
      <entry value="1" name="MAV_ODID_ID_TYPE_SERIAL_NUMBER">
        <description>Manufacturer Serial Number (ANSI/CTA-2063 format).</description>
      </entry>
      <entry value="2" name="MAV_ODID_ID_TYPE_CAA_REGISTRATION_ID">
        <description>CAA (Civil Aviation Authority) registered ID. Format: [ICAO Country Code].[CAA Assigned ID].</description>
      </entry>
      <entry value="3" name="MAV_ODID_ID_TYPE_UTM_ASSIGNED_UUID">
        <description>UTM (Unmanned Traffic Management) assigned UUID (RFC4122).</description>
      </entry>
      <entry value="4" name="MAV_ODID_ID_TYPE_SPECIFIC_SESSION_ID">
        <description>A 20 byte ID for a specific flight/session. The exact ID type is indicated by the first byte of uas_id and these type values are managed by ICAO.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_UA_TYPE">
      <entry value="0" name="MAV_ODID_UA_TYPE_NONE">
        <description>No UA (Unmanned Aircraft) type defined.</description>
      </entry>
      <entry value="1" name="MAV_ODID_UA_TYPE_AEROPLANE">
        <description>Aeroplane/Airplane. Fixed wing.</description>
      </entry>
      <entry value="2" name="MAV_ODID_UA_TYPE_HELICOPTER_OR_MULTIROTOR">
        <description>Helicopter or multirotor.</description>
      </entry>
      <entry value="3" name="MAV_ODID_UA_TYPE_GYROPLANE">
        <description>Gyroplane.</description>
      </entry>
      <entry value="4" name="MAV_ODID_UA_TYPE_HYBRID_LIFT">
        <description>VTOL (Vertical Take-Off and Landing). Fixed wing aircraft that can take off vertically.</description>
      </entry>
      <entry value="5" name="MAV_ODID_UA_TYPE_ORNITHOPTER">
        <description>Ornithopter.</description>
      </entry>
      <entry value="6" name="MAV_ODID_UA_TYPE_GLIDER">
        <description>Glider.</description>
      </entry>
      <entry value="7" name="MAV_ODID_UA_TYPE_KITE">
        <description>Kite.</description>
      </entry>
      <entry value="8" name="MAV_ODID_UA_TYPE_FREE_BALLOON">
        <description>Free Balloon.</description>
      </entry>
      <entry value="9" name="MAV_ODID_UA_TYPE_CAPTIVE_BALLOON">
        <description>Captive Balloon.</description>
      </entry>
      <entry value="10" name="MAV_ODID_UA_TYPE_AIRSHIP">
        <description>Airship. E.g. a blimp.</description>
      </entry>
      <entry value="11" name="MAV_ODID_UA_TYPE_FREE_FALL_PARACHUTE">
        <description>Free Fall/Parachute (unpowered).</description>
      </entry>
      <entry value="12" name="MAV_ODID_UA_TYPE_ROCKET">
        <description>Rocket.</description>
      </entry>
      <entry value="13" name="MAV_ODID_UA_TYPE_TETHERED_POWERED_AIRCRAFT">
        <description>Tethered powered aircraft.</description>
      </entry>
      <entry value="14" name="MAV_ODID_UA_TYPE_GROUND_OBSTACLE">
        <description>Ground Obstacle.</description>
      </entry>
      <entry value="15" name="MAV_ODID_UA_TYPE_OTHER">
        <description>Other type of aircraft not listed earlier.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_STATUS">
      <entry value="0" name="MAV_ODID_STATUS_UNDECLARED">
        <description>The status of the (UA) Unmanned Aircraft is undefined.</description>
      </entry>
      <entry value="1" name="MAV_ODID_STATUS_GROUND">
        <description>The UA is on the ground.</description>
      </entry>
      <entry value="2" name="MAV_ODID_STATUS_AIRBORNE">
        <description>The UA is in the air.</description>
      </entry>
      <entry value="3" name="MAV_ODID_STATUS_EMERGENCY">
        <description>The UA is having an emergency.</description>
      </entry>
      <entry value="4" name="MAV_ODID_STATUS_REMOTE_ID_SYSTEM_FAILURE">
        <description>The remote ID system is failing or unreliable in some way.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_HEIGHT_REF">
      <entry value="0" name="MAV_ODID_HEIGHT_REF_OVER_TAKEOFF">
        <description>The height field is relative to the take-off location.</description>
      </entry>
      <entry value="1" name="MAV_ODID_HEIGHT_REF_OVER_GROUND">
        <description>The height field is relative to ground.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_HOR_ACC">
      <entry value="0" name="MAV_ODID_HOR_ACC_UNKNOWN">
        <description>The horizontal accuracy is unknown.</description>
      </entry>
      <entry value="1" name="MAV_ODID_HOR_ACC_10NM">
        <description>The horizontal accuracy is smaller than 10 Nautical Miles. 18.52 km.</description>
      </entry>
      <entry value="2" name="MAV_ODID_HOR_ACC_4NM">
        <description>The horizontal accuracy is smaller than 4 Nautical Miles. 7.408 km.</description>
      </entry>
      <entry value="3" name="MAV_ODID_HOR_ACC_2NM">
        <description>The horizontal accuracy is smaller than 2 Nautical Miles. 3.704 km.</description>
      </entry>
      <entry value="4" name="MAV_ODID_HOR_ACC_1NM">
        <description>The horizontal accuracy is smaller than 1 Nautical Miles. 1.852 km.</description>
      </entry>
      <entry value="5" name="MAV_ODID_HOR_ACC_0_5NM">
        <description>The horizontal accuracy is smaller than 0.5 Nautical Miles. 926 m.</description>
      </entry>
      <entry value="6" name="MAV_ODID_HOR_ACC_0_3NM">
        <description>The horizontal accuracy is smaller than 0.3 Nautical Miles. 555.6 m.</description>
      </entry>
      <entry value="7" name="MAV_ODID_HOR_ACC_0_1NM">
        <description>The horizontal accuracy is smaller than 0.1 Nautical Miles. 185.2 m.</description>
      </entry>
      <entry value="8" name="MAV_ODID_HOR_ACC_0_05NM">
        <description>The horizontal accuracy is smaller than 0.05 Nautical Miles. 92.6 m.</description>
      </entry>
      <entry value="9" name="MAV_ODID_HOR_ACC_30_METER">
        <description>The horizontal accuracy is smaller than 30 meter.</description>
      </entry>
      <entry value="10" name="MAV_ODID_HOR_ACC_10_METER">
        <description>The horizontal accuracy is smaller than 10 meter.</description>
      </entry>
      <entry value="11" name="MAV_ODID_HOR_ACC_3_METER">
        <description>The horizontal accuracy is smaller than 3 meter.</description>
      </entry>
      <entry value="12" name="MAV_ODID_HOR_ACC_1_METER">
        <description>The horizontal accuracy is smaller than 1 meter.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_VER_ACC">
      <entry value="0" name="MAV_ODID_VER_ACC_UNKNOWN">
        <description>The vertical accuracy is unknown.</description>
      </entry>
      <entry value="1" name="MAV_ODID_VER_ACC_150_METER">
        <description>The vertical accuracy is smaller than 150 meter.</description>
      </entry>
      <entry value="2" name="MAV_ODID_VER_ACC_45_METER">
        <description>The vertical accuracy is smaller than 45 meter.</description>
      </entry>
      <entry value="3" name="MAV_ODID_VER_ACC_25_METER">
        <description>The vertical accuracy is smaller than 25 meter.</description>
      </entry>
      <entry value="4" name="MAV_ODID_VER_ACC_10_METER">
        <description>The vertical accuracy is smaller than 10 meter.</description>
      </entry>
      <entry value="5" name="MAV_ODID_VER_ACC_3_METER">
        <description>The vertical accuracy is smaller than 3 meter.</description>
      </entry>
      <entry value="6" name="MAV_ODID_VER_ACC_1_METER">
        <description>The vertical accuracy is smaller than 1 meter.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_SPEED_ACC">
      <entry value="0" name="MAV_ODID_SPEED_ACC_UNKNOWN">
        <description>The speed accuracy is unknown.</description>
      </entry>
      <entry value="1" name="MAV_ODID_SPEED_ACC_10_METERS_PER_SECOND">
        <description>The speed accuracy is smaller than 10 meters per second.</description>
      </entry>
      <entry value="2" name="MAV_ODID_SPEED_ACC_3_METERS_PER_SECOND">
        <description>The speed accuracy is smaller than 3 meters per second.</description>
      </entry>
      <entry value="3" name="MAV_ODID_SPEED_ACC_1_METERS_PER_SECOND">
        <description>The speed accuracy is smaller than 1 meters per second.</description>
      </entry>
      <entry value="4" name="MAV_ODID_SPEED_ACC_0_3_METERS_PER_SECOND">
        <description>The speed accuracy is smaller than 0.3 meters per second.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_TIME_ACC">
      <entry value="0" name="MAV_ODID_TIME_ACC_UNKNOWN">
        <description>The timestamp accuracy is unknown.</description>
      </entry>
      <entry value="1" name="MAV_ODID_TIME_ACC_0_1_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.1 second.</description>
      </entry>
      <entry value="2" name="MAV_ODID_TIME_ACC_0_2_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.2 second.</description>
      </entry>
      <entry value="3" name="MAV_ODID_TIME_ACC_0_3_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.3 second.</description>
      </entry>
      <entry value="4" name="MAV_ODID_TIME_ACC_0_4_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.4 second.</description>
      </entry>
      <entry value="5" name="MAV_ODID_TIME_ACC_0_5_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.5 second.</description>
      </entry>
      <entry value="6" name="MAV_ODID_TIME_ACC_0_6_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.6 second.</description>
      </entry>
      <entry value="7" name="MAV_ODID_TIME_ACC_0_7_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.7 second.</description>
      </entry>
      <entry value="8" name="MAV_ODID_TIME_ACC_0_8_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.8 second.</description>
      </entry>
      <entry value="9" name="MAV_ODID_TIME_ACC_0_9_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 0.9 second.</description>
      </entry>
      <entry value="10" name="MAV_ODID_TIME_ACC_1_0_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 1.0 second.</description>
      </entry>
      <entry value="11" name="MAV_ODID_TIME_ACC_1_1_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 1.1 second.</description>
      </entry>
      <entry value="12" name="MAV_ODID_TIME_ACC_1_2_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 1.2 second.</description>
      </entry>
      <entry value="13" name="MAV_ODID_TIME_ACC_1_3_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 1.3 second.</description>
      </entry>
      <entry value="14" name="MAV_ODID_TIME_ACC_1_4_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 1.4 second.</description>
      </entry>
      <entry value="15" name="MAV_ODID_TIME_ACC_1_5_SECOND">
        <description>The timestamp accuracy is smaller than or equal to 1.5 second.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_AUTH_TYPE">
      <entry value="0" name="MAV_ODID_AUTH_TYPE_NONE">
        <description>No authentication type is specified.</description>
      </entry>
      <entry value="1" name="MAV_ODID_AUTH_TYPE_UAS_ID_SIGNATURE">
        <description>Signature for the UAS (Unmanned Aircraft System) ID.</description>
      </entry>
      <entry value="2" name="MAV_ODID_AUTH_TYPE_OPERATOR_ID_SIGNATURE">
        <description>Signature for the Operator ID.</description>
      </entry>
      <entry value="3" name="MAV_ODID_AUTH_TYPE_MESSAGE_SET_SIGNATURE">
        <description>Signature for the entire message set.</description>
      </entry>
      <entry value="4" name="MAV_ODID_AUTH_TYPE_NETWORK_REMOTE_ID">
        <description>Authentication is provided by Network Remote ID.</description>
      </entry>
      <entry value="5" name="MAV_ODID_AUTH_TYPE_SPECIFIC_AUTHENTICATION">
        <description>The exact authentication type is indicated by the first byte of authentication_data and these type values are managed by ICAO.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_DESC_TYPE">
      <entry value="0" name="MAV_ODID_DESC_TYPE_TEXT">
        <description>Optional free-form text description of the purpose of the flight.</description>
      </entry>
      <entry value="1" name="MAV_ODID_DESC_TYPE_EMERGENCY">
        <description>Optional additional clarification when status == MAV_ODID_STATUS_EMERGENCY.</description>
      </entry>
      <entry value="2" name="MAV_ODID_DESC_TYPE_EXTENDED_STATUS">
        <description>Optional additional clarification when status != MAV_ODID_STATUS_EMERGENCY.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_OPERATOR_LOCATION_TYPE">
      <entry value="0" name="MAV_ODID_OPERATOR_LOCATION_TYPE_TAKEOFF">
        <description>The location/altitude of the operator is the same as the take-off location.</description>
      </entry>
      <entry value="1" name="MAV_ODID_OPERATOR_LOCATION_TYPE_LIVE_GNSS">
        <description>The location/altitude of the operator is dynamic. E.g. based on live GNSS data.</description>
      </entry>
      <entry value="2" name="MAV_ODID_OPERATOR_LOCATION_TYPE_FIXED">
        <description>The location/altitude of the operator are fixed values.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_CLASSIFICATION_TYPE">
      <entry value="0" name="MAV_ODID_CLASSIFICATION_TYPE_UNDECLARED">
        <description>The classification type for the UA is undeclared.</description>
      </entry>
      <entry value="1" name="MAV_ODID_CLASSIFICATION_TYPE_EU">
        <description>The classification type for the UA follows EU (European Union) specifications.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_CATEGORY_EU">
      <entry value="0" name="MAV_ODID_CATEGORY_EU_UNDECLARED">
        <description>The category for the UA, according to the EU specification, is undeclared.</description>
      </entry>
      <entry value="1" name="MAV_ODID_CATEGORY_EU_OPEN">
        <description>The category for the UA, according to the EU specification, is the Open category.</description>
      </entry>
      <entry value="2" name="MAV_ODID_CATEGORY_EU_SPECIFIC">
        <description>The category for the UA, according to the EU specification, is the Specific category.</description>
      </entry>
      <entry value="3" name="MAV_ODID_CATEGORY_EU_CERTIFIED">
        <description>The category for the UA, according to the EU specification, is the Certified category.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_CLASS_EU">
      <entry value="0" name="MAV_ODID_CLASS_EU_UNDECLARED">
        <description>The class for the UA, according to the EU specification, is undeclared.</description>
      </entry>
      <entry value="1" name="MAV_ODID_CLASS_EU_CLASS_0">
        <description>The class for the UA, according to the EU specification, is Class 0.</description>
      </entry>
      <entry value="2" name="MAV_ODID_CLASS_EU_CLASS_1">
        <description>The class for the UA, according to the EU specification, is Class 1.</description>
      </entry>
      <entry value="3" name="MAV_ODID_CLASS_EU_CLASS_2">
        <description>The class for the UA, according to the EU specification, is Class 2.</description>
      </entry>
      <entry value="4" name="MAV_ODID_CLASS_EU_CLASS_3">
        <description>The class for the UA, according to the EU specification, is Class 3.</description>
      </entry>
      <entry value="5" name="MAV_ODID_CLASS_EU_CLASS_4">
        <description>The class for the UA, according to the EU specification, is Class 4.</description>
      </entry>
      <entry value="6" name="MAV_ODID_CLASS_EU_CLASS_5">
        <description>The class for the UA, according to the EU specification, is Class 5.</description>
      </entry>
      <entry value="7" name="MAV_ODID_CLASS_EU_CLASS_6">
        <description>The class for the UA, according to the EU specification, is Class 6.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_OPERATOR_ID_TYPE">
      <entry value="0" name="MAV_ODID_OPERATOR_ID_TYPE_CAA">
        <description>CAA (Civil Aviation Authority) registered operator ID.</description>
      </entry>
    </enum>
    <enum name="MAV_ODID_ARM_STATUS">
      <entry value="0" name="MAV_ODID_ARM_STATUS_GOOD_TO_ARM">
        <description>Passing arming checks.</description>
      </entry>
      <entry value="1" name="MAV_ODID_ARM_STATUS_PRE_ARM_FAIL_GENERIC">
        <description>Generic arming failure, see error string for details.</description>
      </entry>
    </enum>
    <enum name="TUNE_FORMAT">
      <description>Tune formats (used for vehicle buzzer/tone generation).</description>
      <entry value="1" name="TUNE_FORMAT_QBASIC1_1">
        <description>Format is QBasic 1.1 Play: https://www.qbasic.net/en/reference/qb11/Statement/PLAY-006.htm.</description>
      </entry>
      <entry value="2" name="TUNE_FORMAT_MML_MODERN">
        <description>Format is Modern Music Markup Language (MML): https://en.wikipedia.org/wiki/Music_Macro_Language#Modern_MML.</description>
      </entry>
    </enum>
    <!-- AIS related enums-->
    <enum name="AIS_TYPE">
      <description>Type of AIS vessel, enum duplicated from AIS standard, https://gpsd.gitlab.io/gpsd/AIVDM.html</description>
      <entry value="0" name="AIS_TYPE_UNKNOWN">
        <description>Not available (default).</description>
      </entry>
      <entry value="1" name="AIS_TYPE_RESERVED_1"/>
      <entry value="2" name="AIS_TYPE_RESERVED_2"/>
      <entry value="3" name="AIS_TYPE_RESERVED_3"/>
      <entry value="4" name="AIS_TYPE_RESERVED_4"/>
      <entry value="5" name="AIS_TYPE_RESERVED_5"/>
      <entry value="6" name="AIS_TYPE_RESERVED_6"/>
      <entry value="7" name="AIS_TYPE_RESERVED_7"/>
      <entry value="8" name="AIS_TYPE_RESERVED_8"/>
      <entry value="9" name="AIS_TYPE_RESERVED_9"/>
      <entry value="10" name="AIS_TYPE_RESERVED_10"/>
      <entry value="11" name="AIS_TYPE_RESERVED_11"/>
      <entry value="12" name="AIS_TYPE_RESERVED_12"/>
      <entry value="13" name="AIS_TYPE_RESERVED_13"/>
      <entry value="14" name="AIS_TYPE_RESERVED_14"/>
      <entry value="15" name="AIS_TYPE_RESERVED_15"/>
      <entry value="16" name="AIS_TYPE_RESERVED_16"/>
      <entry value="17" name="AIS_TYPE_RESERVED_17"/>
      <entry value="18" name="AIS_TYPE_RESERVED_18"/>
      <entry value="19" name="AIS_TYPE_RESERVED_19"/>
      <entry value="20" name="AIS_TYPE_WIG">
        <description>Wing In Ground effect.</description>
      </entry>
      <entry value="21" name="AIS_TYPE_WIG_HAZARDOUS_A"/>
      <entry value="22" name="AIS_TYPE_WIG_HAZARDOUS_B"/>
      <entry value="23" name="AIS_TYPE_WIG_HAZARDOUS_C"/>
      <entry value="24" name="AIS_TYPE_WIG_HAZARDOUS_D"/>
      <entry value="25" name="AIS_TYPE_WIG_RESERVED_1"/>
      <entry value="26" name="AIS_TYPE_WIG_RESERVED_2"/>
      <entry value="27" name="AIS_TYPE_WIG_RESERVED_3"/>
      <entry value="28" name="AIS_TYPE_WIG_RESERVED_4"/>
      <entry value="29" name="AIS_TYPE_WIG_RESERVED_5"/>
      <entry value="30" name="AIS_TYPE_FISHING"/>
      <entry value="31" name="AIS_TYPE_TOWING"/>
      <entry value="32" name="AIS_TYPE_TOWING_LARGE">
        <description>Towing: length exceeds 200m or breadth exceeds 25m.</description>
      </entry>
      <entry value="33" name="AIS_TYPE_DREDGING">
        <description>Dredging or other underwater ops.</description>
      </entry>
      <entry value="34" name="AIS_TYPE_DIVING"/>
      <entry value="35" name="AIS_TYPE_MILITARY"/>
      <entry value="36" name="AIS_TYPE_SAILING"/>
      <entry value="37" name="AIS_TYPE_PLEASURE"/>
      <entry value="38" name="AIS_TYPE_RESERVED_20"/>
      <entry value="39" name="AIS_TYPE_RESERVED_21"/>
      <entry value="40" name="AIS_TYPE_HSC">
        <description>High Speed Craft.</description>
      </entry>
      <entry value="41" name="AIS_TYPE_HSC_HAZARDOUS_A"/>
      <entry value="42" name="AIS_TYPE_HSC_HAZARDOUS_B"/>
      <entry value="43" name="AIS_TYPE_HSC_HAZARDOUS_C"/>
      <entry value="44" name="AIS_TYPE_HSC_HAZARDOUS_D"/>
      <entry value="45" name="AIS_TYPE_HSC_RESERVED_1"/>
      <entry value="46" name="AIS_TYPE_HSC_RESERVED_2"/>
      <entry value="47" name="AIS_TYPE_HSC_RESERVED_3"/>
      <entry value="48" name="AIS_TYPE_HSC_RESERVED_4"/>
      <entry value="49" name="AIS_TYPE_HSC_UNKNOWN"/>
      <entry value="50" name="AIS_TYPE_PILOT"/>
      <entry value="51" name="AIS_TYPE_SAR">
        <description>Search And Rescue vessel.</description>
      </entry>
      <entry value="52" name="AIS_TYPE_TUG"/>
      <entry value="53" name="AIS_TYPE_PORT_TENDER"/>
      <entry value="54" name="AIS_TYPE_ANTI_POLLUTION">
        <description>Anti-pollution equipment.</description>
      </entry>
      <entry value="55" name="AIS_TYPE_LAW_ENFORCEMENT"/>
      <entry value="56" name="AIS_TYPE_SPARE_LOCAL_1"/>
      <entry value="57" name="AIS_TYPE_SPARE_LOCAL_2"/>
      <entry value="58" name="AIS_TYPE_MEDICAL_TRANSPORT"/>
      <entry value="59" name="AIS_TYPE_NONECOMBATANT">
        <description>Noncombatant ship according to RR Resolution No. 18.</description>
      </entry>
      <entry value="60" name="AIS_TYPE_PASSENGER"/>
      <entry value="61" name="AIS_TYPE_PASSENGER_HAZARDOUS_A"/>
      <entry value="62" name="AIS_TYPE_PASSENGER_HAZARDOUS_B"/>
      <entry value="63" name="AIS_TYPE_PASSENGER_HAZARDOUS_C"/>
      <entry value="64" name="AIS_TYPE_PASSENGER_HAZARDOUS_D"/>
      <entry value="65" name="AIS_TYPE_PASSENGER_RESERVED_1"/>
      <entry value="66" name="AIS_TYPE_PASSENGER_RESERVED_2"/>
      <entry value="67" name="AIS_TYPE_PASSENGER_RESERVED_3"/>
      <entry value="68" name="AIS_TYPE_PASSENGER_RESERVED_4"/>
      <entry value="69" name="AIS_TYPE_PASSENGER_UNKNOWN"/>
      <entry value="70" name="AIS_TYPE_CARGO"/>
      <entry value="71" name="AIS_TYPE_CARGO_HAZARDOUS_A"/>
      <entry value="72" name="AIS_TYPE_CARGO_HAZARDOUS_B"/>
      <entry value="73" name="AIS_TYPE_CARGO_HAZARDOUS_C"/>
      <entry value="74" name="AIS_TYPE_CARGO_HAZARDOUS_D"/>
      <entry value="75" name="AIS_TYPE_CARGO_RESERVED_1"/>
      <entry value="76" name="AIS_TYPE_CARGO_RESERVED_2"/>
      <entry value="77" name="AIS_TYPE_CARGO_RESERVED_3"/>
      <entry value="78" name="AIS_TYPE_CARGO_RESERVED_4"/>
      <entry value="79" name="AIS_TYPE_CARGO_UNKNOWN"/>
      <entry value="80" name="AIS_TYPE_TANKER"/>
      <entry value="81" name="AIS_TYPE_TANKER_HAZARDOUS_A"/>
      <entry value="82" name="AIS_TYPE_TANKER_HAZARDOUS_B"/>
      <entry value="83" name="AIS_TYPE_TANKER_HAZARDOUS_C"/>
      <entry value="84" name="AIS_TYPE_TANKER_HAZARDOUS_D"/>
      <entry value="85" name="AIS_TYPE_TANKER_RESERVED_1"/>
      <entry value="86" name="AIS_TYPE_TANKER_RESERVED_2"/>
      <entry value="87" name="AIS_TYPE_TANKER_RESERVED_3"/>
      <entry value="88" name="AIS_TYPE_TANKER_RESERVED_4"/>
      <entry value="89" name="AIS_TYPE_TANKER_UNKNOWN"/>
      <entry value="90" name="AIS_TYPE_OTHER"/>
      <entry value="91" name="AIS_TYPE_OTHER_HAZARDOUS_A"/>
      <entry value="92" name="AIS_TYPE_OTHER_HAZARDOUS_B"/>
      <entry value="93" name="AIS_TYPE_OTHER_HAZARDOUS_C"/>
      <entry value="94" name="AIS_TYPE_OTHER_HAZARDOUS_D"/>
      <entry value="95" name="AIS_TYPE_OTHER_RESERVED_1"/>
      <entry value="96" name="AIS_TYPE_OTHER_RESERVED_2"/>
      <entry value="97" name="AIS_TYPE_OTHER_RESERVED_3"/>
      <entry value="98" name="AIS_TYPE_OTHER_RESERVED_4"/>
      <entry value="99" name="AIS_TYPE_OTHER_UNKNOWN"/>
    </enum>
    <enum name="AIS_NAV_STATUS">
      <description>Navigational status of AIS vessel, enum duplicated from AIS standard, https://gpsd.gitlab.io/gpsd/AIVDM.html</description>
      <entry value="0" name="UNDER_WAY">
        <description>Under way using engine.</description>
      </entry>
      <entry value="1" name="AIS_NAV_ANCHORED"/>
      <entry value="2" name="AIS_NAV_UN_COMMANDED"/>
      <entry value="3" name="AIS_NAV_RESTRICTED_MANOEUVERABILITY"/>
      <entry value="4" name="AIS_NAV_DRAUGHT_CONSTRAINED"/>
      <entry value="5" name="AIS_NAV_MOORED"/>
      <entry value="6" name="AIS_NAV_AGROUND"/>
      <entry value="7" name="AIS_NAV_FISHING"/>
      <entry value="8" name="AIS_NAV_SAILING"/>
      <entry value="9" name="AIS_NAV_RESERVED_HSC"/>
      <entry value="10" name="AIS_NAV_RESERVED_WIG"/>
      <entry value="11" name="AIS_NAV_RESERVED_1"/>
      <entry value="12" name="AIS_NAV_RESERVED_2"/>
      <entry value="13" name="AIS_NAV_RESERVED_3"/>
      <entry value="14" name="AIS_NAV_AIS_SART">
        <description>Search And Rescue Transponder.</description>
      </entry>
      <entry value="15" name="AIS_NAV_UNKNOWN">
        <description>Not available (default).</description>
      </entry>
    </enum>
    <enum name="AIS_FLAGS" bitmask="true">
      <description>These flags are used in the AIS_VESSEL.fields bitmask to indicate validity of data in the other message fields. When set, the data is valid.</description>
      <entry value="1" name="AIS_FLAGS_POSITION_ACCURACY">
        <description>1 = Position accuracy less than 10m, 0 = position accuracy greater than 10m.</description>
      </entry>
      <entry value="2" name="AIS_FLAGS_VALID_COG"/>
      <entry value="4" name="AIS_FLAGS_VALID_VELOCITY"/>
      <entry value="8" name="AIS_FLAGS_HIGH_VELOCITY">
        <description>1 = Velocity over 52.5765m/s (102.2 knots)</description>
      </entry>
      <entry value="16" name="AIS_FLAGS_VALID_TURN_RATE"/>
      <entry value="32" name="AIS_FLAGS_TURN_RATE_SIGN_ONLY">
        <description>Only the sign of the returned turn rate value is valid, either greater than 5deg/30s or less than -5deg/30s</description>
      </entry>
      <entry value="64" name="AIS_FLAGS_VALID_DIMENSIONS"/>
      <entry value="128" name="AIS_FLAGS_LARGE_BOW_DIMENSION">
        <description>Distance to bow is larger than 511m</description>
      </entry>
      <entry value="256" name="AIS_FLAGS_LARGE_STERN_DIMENSION">
        <description>Distance to stern is larger than 511m</description>
      </entry>
      <entry value="512" name="AIS_FLAGS_LARGE_PORT_DIMENSION">
        <description>Distance to port side is larger than 63m</description>
      </entry>
      <entry value="1024" name="AIS_FLAGS_LARGE_STARBOARD_DIMENSION">
        <description>Distance to starboard side is larger than 63m</description>
      </entry>
      <entry value="2048" name="AIS_FLAGS_VALID_CALLSIGN"/>
      <entry value="4096" name="AIS_FLAGS_VALID_NAME"/>
    </enum>
    <enum name="FAILURE_UNIT">
      <!-- This enum is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>List of possible units where failures can be injected.</description>
      <entry value="0" name="FAILURE_UNIT_SENSOR_GYRO"/>
      <entry value="1" name="FAILURE_UNIT_SENSOR_ACCEL"/>
      <entry value="2" name="FAILURE_UNIT_SENSOR_MAG"/>
      <entry value="3" name="FAILURE_UNIT_SENSOR_BARO"/>
      <entry value="4" name="FAILURE_UNIT_SENSOR_GPS"/>
      <entry value="5" name="FAILURE_UNIT_SENSOR_OPTICAL_FLOW"/>
      <entry value="6" name="FAILURE_UNIT_SENSOR_VIO"/>
      <entry value="7" name="FAILURE_UNIT_SENSOR_DISTANCE_SENSOR"/>
      <entry value="8" name="FAILURE_UNIT_SENSOR_AIRSPEED"/>
      <entry value="100" name="FAILURE_UNIT_SYSTEM_BATTERY"/>
      <entry value="101" name="FAILURE_UNIT_SYSTEM_MOTOR"/>
      <entry value="102" name="FAILURE_UNIT_SYSTEM_SERVO"/>
      <entry value="103" name="FAILURE_UNIT_SYSTEM_AVOIDANCE"/>
      <entry value="104" name="FAILURE_UNIT_SYSTEM_RC_SIGNAL"/>
      <entry value="105" name="FAILURE_UNIT_SYSTEM_MAVLINK_SIGNAL"/>
    </enum>
    <enum name="FAILURE_TYPE">
      <!-- This enum is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>List of possible failure type to inject.</description>
      <entry value="0" name="FAILURE_TYPE_OK">
        <description>No failure injected, used to reset a previous failure.</description>
      </entry>
      <entry value="1" name="FAILURE_TYPE_OFF">
        <description>Sets unit off, so completely non-responsive.</description>
      </entry>
      <entry value="2" name="FAILURE_TYPE_STUCK">
        <description>Unit is stuck e.g. keeps reporting the same value.</description>
      </entry>
      <entry value="3" name="FAILURE_TYPE_GARBAGE">
        <description>Unit is reporting complete garbage.</description>
      </entry>
      <entry value="4" name="FAILURE_TYPE_WRONG">
        <description>Unit is consistently wrong.</description>
      </entry>
      <entry value="5" name="FAILURE_TYPE_SLOW">
        <description>Unit is slow, so e.g. reporting at slower than expected rate.</description>
      </entry>
      <entry value="6" name="FAILURE_TYPE_DELAYED">
        <description>Data of unit is delayed in time.</description>
      </entry>
      <entry value="7" name="FAILURE_TYPE_INTERMITTENT">
        <description>Unit is sometimes working, sometimes not.</description>
      </entry>
    </enum>
    <enum name="NAV_VTOL_LAND_OPTIONS">
      <entry value="0" name="NAV_VTOL_LAND_OPTIONS_DEFAULT">
        <description>Default autopilot landing behaviour.</description>
      </entry>
      <entry value="1" name="NAV_VTOL_LAND_OPTIONS_FW_DESCENT">
        <description>Descend in fixed wing mode, transitioning to multicopter mode for vertical landing when close to the ground.
          The fixed wing descent pattern is at the discretion of the vehicle (e.g. transition altitude, loiter direction, radius, and speed, etc.).
        </description>
      </entry>
      <entry value="2" name="NAV_VTOL_LAND_OPTIONS_HOVER_DESCENT">
        <description>Land in multicopter mode on reaching the landing coordinates (the whole landing is by "hover descent").</description>
      </entry>
    </enum>
    <enum name="MAV_WINCH_STATUS_FLAG" bitmask="true">
      <description>Winch status flags used in WINCH_STATUS</description>
      <entry value="1" name="MAV_WINCH_STATUS_HEALTHY">
        <description>Winch is healthy</description>
      </entry>
      <entry value="2" name="MAV_WINCH_STATUS_FULLY_RETRACTED">
        <description>Winch line is fully retracted</description>
      </entry>
      <entry value="4" name="MAV_WINCH_STATUS_MOVING">
        <description>Winch motor is moving</description>
      </entry>
      <entry value="8" name="MAV_WINCH_STATUS_CLUTCH_ENGAGED">
        <description>Winch clutch is engaged allowing motor to move freely.</description>
      </entry>
      <entry value="16" name="MAV_WINCH_STATUS_LOCKED">
        <description>Winch is locked by locking mechanism.</description>
      </entry>
      <entry value="32" name="MAV_WINCH_STATUS_DROPPING">
        <description>Winch is gravity dropping payload.</description>
      </entry>
      <entry value="64" name="MAV_WINCH_STATUS_ARRESTING">
        <description>Winch is arresting payload descent.</description>
      </entry>
      <entry value="128" name="MAV_WINCH_STATUS_GROUND_SENSE">
        <description>Winch is using torque measurements to sense the ground.</description>
      </entry>
      <entry value="256" name="MAV_WINCH_STATUS_RETRACTING">
        <description>Winch is returning to the fully retracted position.</description>
      </entry>
      <entry value="512" name="MAV_WINCH_STATUS_REDELIVER">
        <description>Winch is redelivering the payload. This is a failover state if the line tension goes above a threshold during RETRACTING.</description>
      </entry>
      <entry value="1024" name="MAV_WINCH_STATUS_ABANDON_LINE">
        <description>Winch is abandoning the line and possibly payload. Winch unspools the entire calculated line length. This is a failover state from REDELIVER if the number of attempts exceeds a threshold.</description>
      </entry>
      <entry value="2048" name="MAV_WINCH_STATUS_LOCKING">
        <description>Winch is engaging the locking mechanism.</description>
      </entry>
      <entry value="4096" name="MAV_WINCH_STATUS_LOAD_LINE">
        <description>Winch is spooling on line.</description>
      </entry>
      <entry value="8192" name="MAV_WINCH_STATUS_LOAD_PAYLOAD">
        <description>Winch is loading a payload.</description>
      </entry>
    </enum>
    <enum name="MAG_CAL_STATUS">
      <entry value="0" name="MAG_CAL_NOT_STARTED"/>
      <entry value="1" name="MAG_CAL_WAITING_TO_START"/>
      <entry value="2" name="MAG_CAL_RUNNING_STEP_ONE"/>
      <entry value="3" name="MAG_CAL_RUNNING_STEP_TWO"/>
      <entry value="4" name="MAG_CAL_SUCCESS"/>
      <entry value="5" name="MAG_CAL_FAILED"/>
      <entry value="6" name="MAG_CAL_BAD_ORIENTATION"/>
      <entry value="7" name="MAG_CAL_BAD_RADIUS"/>
    </enum>
    <enum name="MAV_EVENT_ERROR_REASON">
      <description>Reason for an event error response.</description>
      <entry value="0" name="MAV_EVENT_ERROR_REASON_UNAVAILABLE">
        <description>The requested event is not available (anymore).</description>
      </entry>
    </enum>
    <enum name="MAV_EVENT_CURRENT_SEQUENCE_FLAGS">
      <description>Flags for CURRENT_EVENT_SEQUENCE.</description>
      <entry value="1" name="MAV_EVENT_CURRENT_SEQUENCE_FLAGS_RESET">
        <description>A sequence reset has happened (e.g. vehicle reboot).</description>
      </entry>
    </enum>
    <enum name="HIL_SENSOR_UPDATED_FLAGS" bitmask="true">
      <description>Flags in the HIL_SENSOR message indicate which fields have updated since the last message</description>
      <entry value="1" name="HIL_SENSOR_UPDATED_XACC">
        <description>The value in the xacc field has been updated</description>
      </entry>
      <entry value="2" name="HIL_SENSOR_UPDATED_YACC">
        <description>The value in the yacc field has been updated</description>
      </entry>
      <entry value="4" name="HIL_SENSOR_UPDATED_ZACC">
        <description>The value in the zacc field has been updated</description>
      </entry>
      <entry value="8" name="HIL_SENSOR_UPDATED_XGYRO">
        <description>The value in the xgyro field has been updated</description>
      </entry>
      <entry value="16" name="HIL_SENSOR_UPDATED_YGYRO">
        <description>The value in the ygyro field has been updated</description>
      </entry>
      <entry value="32" name="HIL_SENSOR_UPDATED_ZGYRO">
        <description>The value in the zgyro field has been updated</description>
      </entry>
      <entry value="64" name="HIL_SENSOR_UPDATED_XMAG">
        <description>The value in the xmag field has been updated</description>
      </entry>
      <entry value="128" name="HIL_SENSOR_UPDATED_YMAG">
        <description>The value in the ymag field has been updated</description>
      </entry>
      <entry value="256" name="HIL_SENSOR_UPDATED_ZMAG">
        <description>The value in the zmag field has been updated</description>
      </entry>
      <entry value="512" name="HIL_SENSOR_UPDATED_ABS_PRESSURE">
        <description>The value in the abs_pressure field has been updated</description>
      </entry>
      <entry value="1024" name="HIL_SENSOR_UPDATED_DIFF_PRESSURE">
        <description>The value in the diff_pressure field has been updated</description>
      </entry>
      <entry value="2048" name="HIL_SENSOR_UPDATED_PRESSURE_ALT">
        <description>The value in the pressure_alt field has been updated</description>
      </entry>
      <entry value="4096" name="HIL_SENSOR_UPDATED_TEMPERATURE">
        <description>The value in the temperature field has been updated</description>
      </entry>
      <entry value="2147483648" name="HIL_SENSOR_UPDATED_RESET">
        <description>Full reset of attitude/position/velocities/etc was performed in sim (Bit 31).</description>
      </entry>
    </enum>
    <enum name="HIGHRES_IMU_UPDATED_FLAGS" bitmask="true">
      <description>Flags in the HIGHRES_IMU message indicate which fields have updated since the last message</description>
      <entry value="1" name="HIGHRES_IMU_UPDATED_XACC">
        <description>The value in the xacc field has been updated</description>
      </entry>
      <entry value="2" name="HIGHRES_IMU_UPDATED_YACC">
        <description>The value in the yacc field has been updated</description>
      </entry>
      <entry value="4" name="HIGHRES_IMU_UPDATED_ZACC">
        <description>The value in the zacc field has been updated since</description>
      </entry>
      <entry value="8" name="HIGHRES_IMU_UPDATED_XGYRO">
        <description>The value in the xgyro field has been updated</description>
      </entry>
      <entry value="16" name="HIGHRES_IMU_UPDATED_YGYRO">
        <description>The value in the ygyro field has been updated</description>
      </entry>
      <entry value="32" name="HIGHRES_IMU_UPDATED_ZGYRO">
        <description>The value in the zgyro field has been updated</description>
      </entry>
      <entry value="64" name="HIGHRES_IMU_UPDATED_XMAG">
        <description>The value in the xmag field has been updated</description>
      </entry>
      <entry value="128" name="HIGHRES_IMU_UPDATED_YMAG">
        <description>The value in the ymag field has been updated</description>
      </entry>
      <entry value="256" name="HIGHRES_IMU_UPDATED_ZMAG">
        <description>The value in the zmag field has been updated</description>
      </entry>
      <entry value="512" name="HIGHRES_IMU_UPDATED_ABS_PRESSURE">
        <description>The value in the abs_pressure field has been updated</description>
      </entry>
      <entry value="1024" name="HIGHRES_IMU_UPDATED_DIFF_PRESSURE">
        <description>The value in the diff_pressure field has been updated</description>
      </entry>
      <entry value="2048" name="HIGHRES_IMU_UPDATED_PRESSURE_ALT">
        <description>The value in the pressure_alt field has been updated</description>
      </entry>
      <entry value="4096" name="HIGHRES_IMU_UPDATED_TEMPERATURE">
        <description>The value in the temperature field has been updated</description>
      </entry>
    </enum>
    <enum name="CAN_FILTER_OP">
      <entry value="0" name="CAN_FILTER_REPLACE"/>
      <entry value="1" name="CAN_FILTER_ADD"/>
      <entry value="2" name="CAN_FILTER_REMOVE"/>
    </enum>
    <enum name="MAV_FTP_ERR">
      <description>MAV FTP error codes (https://mavlink.io/en/services/ftp.html)</description>
      <entry value="0" name="MAV_FTP_ERR_NONE">
        <description>None: No error</description>
      </entry>
      <entry value="1" name="MAV_FTP_ERR_FAIL">
        <description>Fail: Unknown failure</description>
      </entry>
      <entry value="2" name="MAV_FTP_ERR_FAILERRNO">
        <description>FailErrno: Command failed, Err number sent back in PayloadHeader.data[1].
		This is a file-system error number understood by the server operating system.</description>
      </entry>
      <entry value="3" name="MAV_FTP_ERR_INVALIDDATASIZE">
        <description>InvalidDataSize: Payload size is invalid</description>
      </entry>
      <entry value="4" name="MAV_FTP_ERR_INVALIDSESSION">
        <description>InvalidSession: Session is not currently open</description>
      </entry>
      <entry value="5" name="MAV_FTP_ERR_NOSESSIONSAVAILABLE">
        <description>NoSessionsAvailable: All available sessions are already in use</description>
      </entry>
      <entry value="6" name="MAV_FTP_ERR_EOF">
        <description>EOF: Offset past end of file for ListDirectory and ReadFile commands</description>
      </entry>
      <entry value="7" name="MAV_FTP_ERR_UNKNOWNCOMMAND">
        <description>UnknownCommand: Unknown command / opcode</description>
      </entry>
      <entry value="8" name="MAV_FTP_ERR_FILEEXISTS">
        <description>FileExists: File/directory already exists</description>
      </entry>
      <entry value="9" name="MAV_FTP_ERR_FILEPROTECTED">
        <description>FileProtected: File/directory is write protected</description>
      </entry>
      <entry value="10" name="MAV_FTP_ERR_FILENOTFOUND">
        <description>FileNotFound: File/directory not found</description>
      </entry>
    </enum>
    <enum name="MAV_FTP_OPCODE">
      <description>MAV FTP opcodes: https://mavlink.io/en/services/ftp.html</description>
      <entry value="0" name="MAV_FTP_OPCODE_NONE">
        <description>None. Ignored, always ACKed</description>
      </entry>
      <entry value="1" name="MAV_FTP_OPCODE_TERMINATESESSION">
        <description>TerminateSession: Terminates open Read session</description>
      </entry>
      <entry value="2" name="MAV_FTP_OPCODE_RESETSESSION">
        <description>ResetSessions: Terminates all open read sessions</description>
      </entry>
      <entry value="3" name="MAV_FTP_OPCODE_LISTDIRECTORY">
        <description>ListDirectory. List files and directories in path from offset</description>
      </entry>
      <entry value="4" name="MAV_FTP_OPCODE_OPENFILERO">
        <description>OpenFileRO: Opens file at path for reading, returns session</description>
      </entry>
      <entry value="5" name="MAV_FTP_OPCODE_READFILE">
        <description>ReadFile: Reads size bytes from offset in session</description>
      </entry>
      <entry value="6" name="MAV_FTP_OPCODE_CREATEFILE">
        <description>CreateFile: Creates file at path for writing, returns session</description>
      </entry>
      <entry value="7" name="MAV_FTP_OPCODE_WRITEFILE">
        <description>WriteFile: Writes size bytes to offset in session</description>
      </entry>
      <entry value="8" name="MAV_FTP_OPCODE_REMOVEFILE">
        <description>RemoveFile: Remove file at path</description>
      </entry>
      <entry value="9" name="MAV_FTP_OPCODE_CREATEDIRECTORY">
        <description>CreateDirectory: Creates directory at path</description>
      </entry>
      <entry value="10" name="MAV_FTP_OPCODE_REMOVEDIRECTORY">
        <description>RemoveDirectory: Removes directory at path. The directory must be empty.</description>
      </entry>
      <entry value="11" name="MAV_FTP_OPCODE_OPENFILEWO">
        <description>OpenFileWO: Opens file at path for writing, returns session</description>
      </entry>
      <entry value="12" name="MAV_FTP_OPCODE_TRUNCATEFILE">
        <description>TruncateFile: Truncate file at path to offset length</description>
      </entry>
      <entry value="13" name="MAV_FTP_OPCODE_RENAME">
        <description>Rename: Rename path1 to path2</description>
      </entry>
      <entry value="14" name="MAV_FTP_OPCODE_CALCFILECRC">
        <description>CalcFileCRC32: Calculate CRC32 for file at path</description>
      </entry>
      <entry value="15" name="MAV_FTP_OPCODE_BURSTREADFILE">
        <description>BurstReadFile: Burst download session file</description>
      </entry>
      <entry value="128" name="MAV_FTP_OPCODE_ACK">
        <description>ACK: ACK response</description>
      </entry>
      <entry value="129" name="MAV_FTP_OPCODE_NAK">
        <description>NAK: NAK response</description>
      </entry>
    </enum>
    <enum name="MISSION_STATE">
      <description>
        States of the mission state machine.
        Note that these states are independent of whether the mission is in a mode that can execute mission items or not (is suspended).
        They may not all be relevant on all vehicles.
      </description>
      <entry value="0" name="MISSION_STATE_UNKNOWN">
        <description>The mission status reporting is not supported.</description>
      </entry>
      <entry value="1" name="MISSION_STATE_NO_MISSION">
        <description>No mission on the vehicle.</description>
      </entry>
      <entry value="2" name="MISSION_STATE_NOT_STARTED">
        <description>Mission has not started. This is the case after a mission has uploaded but not yet started executing.</description>
      </entry>
      <entry value="3" name="MISSION_STATE_ACTIVE">
        <description>Mission is active, and will execute mission items when in auto mode.</description>
      </entry>
      <entry value="4" name="MISSION_STATE_PAUSED">
        <description>Mission is paused when in auto mode.</description>
      </entry>
      <entry value="5" name="MISSION_STATE_COMPLETE">
        <description>Mission has executed all mission items.</description>
      </entry>
    </enum>
    <enum name="SAFETY_SWITCH_STATE">
      <description>
	Possible safety switch states.
      </description>
      <entry value="0" name="SAFETY_SWITCH_STATE_SAFE">
        <description>Safety switch is engaged and vehicle should be safe to approach.</description>
      </entry>
      <entry value="1" name="SAFETY_SWITCH_STATE_DANGEROUS">
        <description>Safety switch is NOT engaged and motors, propellers and other actuators should be considered active.</description>
      </entry>
    </enum>
    <enum name="ILLUMINATOR_MODE">
      <description>Modes of illuminator</description>
      <entry value="0" name="ILLUMINATOR_MODE_UNKNOWN">
        <description>Illuminator mode is not specified/unknown</description>
      </entry>
      <entry value="1" name="ILLUMINATOR_MODE_INTERNAL_CONTROL">
        <description>Illuminator behavior is controlled by MAV_CMD_DO_ILLUMINATOR_CONFIGURE settings</description>
      </entry>
      <entry value="2" name="ILLUMINATOR_MODE_EXTERNAL_SYNC">
        <description>Illuminator behavior is controlled by external factors: e.g. an external hardware signal</description>
      </entry>
    </enum>
    <enum name="ILLUMINATOR_ERROR_FLAGS" bitmask="true">
      <description>Illuminator module error flags (bitmap, 0 means no error)</description>
      <entry value="1" name="ILLUMINATOR_ERROR_FLAGS_THERMAL_THROTTLING">
        <description>Illuminator thermal throttling error.</description>
      </entry>
      <entry value="2" name="ILLUMINATOR_ERROR_FLAGS_OVER_TEMPERATURE_SHUTDOWN">
        <description>Illuminator over temperature shutdown error.</description>
      </entry>
      <entry value="4" name="ILLUMINATOR_ERROR_FLAGS_THERMISTOR_FAILURE">
        <description>Illuminator thermistor failure.</description>
      </entry>
    </enum>
    <enum name="MAV_STANDARD_MODE">
      <description>Standard modes with a well understood meaning across flight stacks and vehicle types.
        For example, most flight stack have the concept of a "return" or "RTL" mode that takes a vehicle to safety, even though the precise mechanics of this mode may differ.
        The modes supported by a flight stack can be queried using AVAILABLE_MODES and set using MAV_CMD_DO_SET_STANDARD_MODE.
        The current mode is streamed in CURRENT_MODE.
        See https://mavlink.io/en/services/standard_modes.html
      </description>
      <entry value="0" name="MAV_STANDARD_MODE_NON_STANDARD">
        <description>Non standard mode.
          This may be used when reporting the mode if the current flight mode is not a standard mode.
        </description>
      </entry>
      <entry value="1" name="MAV_STANDARD_MODE_POSITION_HOLD">
        <description>Position mode (manual).
          Position-controlled and stabilized manual mode.
          When sticks are released vehicles return to their level-flight orientation and hold both position and altitude against wind and external forces.
          This mode can only be set by vehicles that can hold a fixed position.
          Multicopter (MC) vehicles actively brake and hold both position and altitude against wind and external forces.
          Hybrid MC/FW ("VTOL") vehicles first transition to multicopter mode (if needed) but otherwise behave in the same way as MC vehicles.
          Fixed-wing (FW) vehicles must not support this mode.
          Other vehicle types must not support this mode (this may be revisited through the PR process).
        </description>
      </entry>
      <entry value="2" name="MAV_STANDARD_MODE_ORBIT">
        <description>Orbit (manual).
          Position-controlled and stabilized manual mode.
          The vehicle circles around a fixed setpoint in the horizontal plane at a particular radius, altitude, and direction.
          Flight stacks may further allow manual control over the setpoint position, radius, direction, speed, and/or altitude of the circle, but this is not mandated.
          Flight stacks may support the [MAV_CMD_DO_ORBIT](https://mavlink.io/en/messages/common.html#MAV_CMD_DO_ORBIT) for changing the orbit parameters.
          MC and FW vehicles may support this mode.
          Hybrid MC/FW ("VTOL") vehicles may support this mode in MC/FW or both modes; if the mode is not supported by the current configuration the vehicle should transition to the supported configuration.
          Other vehicle types must not support this mode (this may be revisited through the PR process).
        </description>
      </entry>
      <entry value="3" name="MAV_STANDARD_MODE_CRUISE">
        <description>Cruise mode (manual).
          Position-controlled and stabilized manual mode.
          When sticks are released vehicles return to their level-flight orientation and hold their original track against wind and external forces.
          Fixed-wing (FW) vehicles level orientation and maintain current track and altitude against wind and external forces.
          Hybrid MC/FW ("VTOL") vehicles first transition to FW mode (if needed) but otherwise behave in the same way as MC vehicles.
          Multicopter (MC) vehicles must not support this mode.
          Other vehicle types must not support this mode (this may be revisited through the PR process).
        </description>
      </entry>
      <entry value="4" name="MAV_STANDARD_MODE_ALTITUDE_HOLD">
        <description>Altitude hold (manual).
          Altitude-controlled and stabilized manual mode.
          When sticks are released vehicles return to their level-flight orientation and hold their altitude.
          MC vehicles continue with existing momentum and may move with wind (or other external forces).
          FW vehicles continue with current heading, but may be moved off-track by wind.
          Hybrid MC/FW ("VTOL") vehicles behave according to their current configuration/mode (FW or MC).
          Other vehicle types must not support this mode (this may be revisited through the PR process).
        </description>
      </entry>
      <entry value="5" name="MAV_STANDARD_MODE_SAFE_RECOVERY">
        <description>Safe recovery mode (auto).
          Automatic mode that takes vehicle to a predefined safe location via a safe flight path, and may also automatically land the vehicle.
          This mode is more commonly referred to as RTL and/or or Smart RTL.
          The precise return location, flight path, and landing behaviour depend on vehicle configuration and type.
          For example, the vehicle might return to the home/launch location, a rally point, or the start of a mission landing, it might follow a direct path, mission path, or breadcrumb path, and land using a mission landing pattern or some other kind of descent.
        </description>
      </entry>
      <entry value="6" name="MAV_STANDARD_MODE_MISSION">
        <description>Mission mode (automatic).
          Automatic mode that executes MAVLink missions.
          Missions are executed from the current waypoint as soon as the mode is enabled.
        </description>
      </entry>
      <entry value="7" name="MAV_STANDARD_MODE_LAND">
        <description>Land mode (auto).
          Automatic mode that lands the vehicle at the current location.
          The precise landing behaviour depends on vehicle configuration and type.
        </description>
      </entry>
      <entry value="8" name="MAV_STANDARD_MODE_TAKEOFF">
        <description>Takeoff mode (auto).
          Automatic takeoff mode.
          The precise takeoff behaviour depends on vehicle configuration and type.
        </description>
      </entry>
    </enum>
    <enum name="MAV_MODE_PROPERTY" bitmask="true">
      <description>Mode properties.
      </description>
      <entry value="1" name="MAV_MODE_PROPERTY_ADVANCED">
        <description>If set, this mode is an advanced mode.
          For example a rate-controlled manual mode might be advanced, whereas a position-controlled manual mode is not.
          A GCS can optionally use this flag to configure the UI for its intended users.
        </description>
      </entry>
      <entry value="2" name="MAV_MODE_PROPERTY_NOT_USER_SELECTABLE">
        <description>If set, this mode should not be added to the list of selectable modes.
          The mode might still be selected by the FC directly (for example as part of a failsafe).
        </description>
      </entry>
      <entry value="4" name="MAV_MODE_PROPERTY_AUTO_MODE">
        <description>If set, this mode is automatically controlled (it may use but does not require a manual controller).
          If unset the mode is a assumed to require user input (be a manual mode).
        </description>
      </entry>
    </enum>
    <enum name="HIL_ACTUATOR_CONTROLS_FLAGS" bitmask="true">
      <description>Flags used in HIL_ACTUATOR_CONTROLS message.</description>
      <entry value="1" name="HIL_ACTUATOR_CONTROLS_FLAGS_LOCKSTEP">
        <description>Simulation is using lockstep</description>
      </entry>
    </enum>
  </enums>
  <messages>
    <message id="1" name="SYS_STATUS">
      <description>The general system state. If the system is following the MAVLink standard, the system state is mainly defined by three orthogonal states/modes: The system mode, which is either LOCKED (motors shut down and locked), MANUAL (system under RC control), GUIDED (system with autonomous position control, position setpoint controlled manually) or AUTO (system guided by path/waypoint planner). The NAV_MODE defined the current flight state: LIFTOFF (often an open-loop maneuver), LANDING, WAYPOINTS or VECTOR. This represents the internal navigation state machine. The system status shows whether the system is currently active or not and if an emergency occurred. During the CRITICAL and EMERGENCY states the MAV is still considered to be active, but should start emergency procedures autonomously. After a failure occurred it should first move from active to critical to allow manual intervention and then move to emergency after a certain timeout.</description>
      <field type="uint32_t" name="onboard_control_sensors_present" enum="MAV_SYS_STATUS_SENSOR" print_format="0x%04x">Bitmap showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present.</field>
      <field type="uint32_t" name="onboard_control_sensors_enabled" enum="MAV_SYS_STATUS_SENSOR" print_format="0x%04x">Bitmap showing which onboard controllers and sensors are enabled:  Value of 0: not enabled. Value of 1: enabled.</field>
      <field type="uint32_t" name="onboard_control_sensors_health" enum="MAV_SYS_STATUS_SENSOR" print_format="0x%04x">Bitmap showing which onboard controllers and sensors have an error (or are operational). Value of 0: error. Value of 1: healthy.</field>
      <field type="uint16_t" name="load" units="d%">Maximum usage in percent of the mainloop time. Values: [0-1000] - should always be below 1000</field>
      <field type="uint16_t" name="voltage_battery" units="mV" invalid="UINT16_MAX">Battery voltage, UINT16_MAX: Voltage not sent by autopilot</field>
      <field type="int16_t" name="current_battery" units="cA" invalid="-1">Battery current, -1: Current not sent by autopilot</field>
      <field type="int8_t" name="battery_remaining" units="%" invalid="-1">Battery energy remaining, -1: Battery remaining energy not sent by autopilot</field>
      <field type="uint16_t" name="drop_rate_comm" units="c%">Communication drop rate, (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)</field>
      <field type="uint16_t" name="errors_comm">Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted on reception on the MAV)</field>
      <field type="uint16_t" name="errors_count1">Autopilot-specific errors</field>
      <field type="uint16_t" name="errors_count2">Autopilot-specific errors</field>
      <field type="uint16_t" name="errors_count3">Autopilot-specific errors</field>
      <field type="uint16_t" name="errors_count4">Autopilot-specific errors</field>
      <extensions/>
      <field type="uint32_t" name="onboard_control_sensors_present_extended" enum="MAV_SYS_STATUS_SENSOR_EXTENDED" print_format="0x%04x">Bitmap showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1: present.</field>
      <field type="uint32_t" name="onboard_control_sensors_enabled_extended" enum="MAV_SYS_STATUS_SENSOR_EXTENDED" print_format="0x%04x">Bitmap showing which onboard controllers and sensors are enabled:  Value of 0: not enabled. Value of 1: enabled.</field>
      <field type="uint32_t" name="onboard_control_sensors_health_extended" enum="MAV_SYS_STATUS_SENSOR_EXTENDED" print_format="0x%04x">Bitmap showing which onboard controllers and sensors have an error (or are operational). Value of 0: error. Value of 1: healthy.</field>
    </message>
    <message id="2" name="SYSTEM_TIME">
      <description>The system time is the time of the master clock.
        This can be emitted by flight controllers, onboard computers, or other components in the MAVLink network.
        Components that are using a less reliable time source, such as a battery-backed real time clock, can choose to match their system clock to that of a SYSTEM_TYPE that indicates a more recent time.
        This allows more broadly accurate date stamping of logs, and so on.
        If precise time synchronization is needed then use TIMESYNC instead.</description>
      <field type="uint64_t" name="time_unix_usec" units="us">Timestamp (UNIX epoch time).</field>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
    </message>
    <message id="4" name="PING">
      <deprecated since="2011-08" replaced_by="TIMESYNC">To be removed / merged with TIMESYNC</deprecated>
      <description>A ping message either requesting or responding to a ping. This allows to measure the system latencies, including serial port, radio modem and UDP connections. The ping microservice is documented at https://mavlink.io/en/services/ping.html</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint32_t" name="seq">PING sequence</field>
      <field type="uint8_t" name="target_system">0: request ping from all receiving systems. If greater than 0: message is a ping response and number is the system id of the requesting system</field>
      <field type="uint8_t" name="target_component">0: request ping from all receiving components. If greater than 0: message is a ping response and number is the component id of the requesting component.</field>
    </message>
    <message id="5" name="CHANGE_OPERATOR_CONTROL">
      <description>Request to control this MAV</description>
      <field type="uint8_t" name="target_system">System the GCS requests control for</field>
      <field type="uint8_t" name="control_request">0: request control of this MAV, 1: Release control of this MAV</field>
      <field type="uint8_t" name="version" units="rad">0: key as plaintext, 1-255: future, different hashing/encryption variants. The GCS should in general use the safest mode possible initially and then gradually move down the encryption level if it gets a NACK message indicating an encryption mismatch.</field>
      <field type="char[25]" name="passkey">Password / Key, depending on version plaintext or encrypted. 25 or less characters, NULL terminated. The characters may involve A-Z, a-z, 0-9, and "!?,.-"</field>
    </message>
    <message id="6" name="CHANGE_OPERATOR_CONTROL_ACK">
      <description>Accept / deny control of this MAV</description>
      <field type="uint8_t" name="gcs_system_id">ID of the GCS this message </field>
      <field type="uint8_t" name="control_request">0: request control of this MAV, 1: Release control of this MAV</field>
      <field type="uint8_t" name="ack">0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under control</field>
    </message>
    <message id="7" name="AUTH_KEY">
      <description>Emit an encrypted signature / key identifying this system. PLEASE NOTE: This protocol has been kept simple, so transmitting the key requires an encrypted channel for true safety.</description>
      <field type="char[32]" name="key">key</field>
    </message>
    <message id="8" name="LINK_NODE_STATUS">
      <wip/>
      <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Status generated in each node in the communication chain and injected into MAVLink stream.</description>
      <field type="uint64_t" name="timestamp" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="tx_buf" units="%">Remaining free transmit buffer space</field>
      <field type="uint8_t" name="rx_buf" units="%">Remaining free receive buffer space</field>
      <field type="uint32_t" name="tx_rate" units="bytes/s">Transmit rate</field>
      <field type="uint32_t" name="rx_rate" units="bytes/s">Receive rate</field>
      <field type="uint16_t" name="rx_parse_err" units="bytes">Number of bytes that could not be parsed correctly.</field>
      <field type="uint16_t" name="tx_overflows" units="bytes">Transmit buffer overflows. This number wraps around as it reaches UINT16_MAX</field>
      <field type="uint16_t" name="rx_overflows" units="bytes">Receive buffer overflows. This number wraps around as it reaches UINT16_MAX</field>
      <field type="uint32_t" name="messages_sent">Messages sent</field>
      <field type="uint32_t" name="messages_received">Messages received (estimated from counting seq)</field>
      <field type="uint32_t" name="messages_lost">Messages lost (estimated from counting seq)</field>
    </message>
    <message id="11" name="SET_MODE">
      <deprecated since="2015-12" replaced_by="MAV_CMD_DO_SET_MODE">Use COMMAND_LONG with MAV_CMD_DO_SET_MODE instead</deprecated>
      <description>Set the system mode, as defined by enum MAV_MODE. There is no target component id as the mode is by definition for the overall aircraft, not only for one component.</description>
      <field type="uint8_t" name="target_system">The system setting the mode</field>
      <field type="uint8_t" name="base_mode" enum="MAV_MODE">The new base mode.</field>
      <field type="uint32_t" name="custom_mode">The new autopilot-specific mode. This field can be ignored by an autopilot.</field>
    </message>
    <!-- IDs 15-17 reserved for PARAM_VALUE_UNION and other param messages -->
    <message id="20" name="PARAM_REQUEST_READ">
      <description>Request to read the onboard parameter with the param_id string id. Onboard parameters are stored as key[const char*] -&gt; value[float]. This allows to send a parameter to any other component (such as the GCS) without the need of previous knowledge of possible parameter names. Thus the same GCS can store different parameters for different autopilots. See also https://mavlink.io/en/services/parameter.html for a full documentation of QGroundControl and IMU code.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="char[16]" name="param_id">Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string</field>
      <field type="int16_t" name="param_index" invalid="-1">Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored)</field>
    </message>
    <message id="21" name="PARAM_REQUEST_LIST">
      <description>Request all parameters of this component. After this request, all parameters are emitted. The parameter microservice is documented at https://mavlink.io/en/services/parameter.html</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
    </message>
    <message id="22" name="PARAM_VALUE">
      <description>Emit the value of a onboard parameter. The inclusion of param_count and param_index in the message allows the recipient to keep track of received parameters and allows him to re-request missing parameters after a loss or timeout. The parameter microservice is documented at https://mavlink.io/en/services/parameter.html</description>
      <field type="char[16]" name="param_id">Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string</field>
      <field type="float" name="param_value">Onboard parameter value</field>
      <field type="uint8_t" name="param_type" enum="MAV_PARAM_TYPE">Onboard parameter type.</field>
      <field type="uint16_t" name="param_count">Total number of onboard parameters</field>
      <field type="uint16_t" name="param_index">Index of this onboard parameter</field>
    </message>
    <message id="23" name="PARAM_SET">
      <description>Set a parameter value (write new value to permanent storage).
        The receiving component should acknowledge the new parameter value by broadcasting a PARAM_VALUE message (broadcasting ensures that multiple GCS all have an up-to-date list of all parameters). If the sending GCS did not receive a PARAM_VALUE within its timeout time, it should re-send the PARAM_SET message. The parameter microservice is documented at https://mavlink.io/en/services/parameter.html.
      </description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="char[16]" name="param_id">Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string</field>
      <field type="float" name="param_value">Onboard parameter value</field>
      <field type="uint8_t" name="param_type" enum="MAV_PARAM_TYPE">Onboard parameter type.</field>
    </message>
    <message id="24" name="GPS_RAW_INT">
      <description>The global position, as returned by the Global Positioning System (GPS). This is
                NOT the global position estimate of the system, but rather a RAW sensor value. See message GLOBAL_POSITION_INT for the global position estimate.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="fix_type" enum="GPS_FIX_TYPE">GPS fix type.</field>
      <field type="int32_t" name="lat" units="degE7">Latitude (WGS84, EGM96 ellipsoid)</field>
      <field type="int32_t" name="lon" units="degE7">Longitude (WGS84, EGM96 ellipsoid)</field>
      <field type="int32_t" name="alt" units="mm">Altitude (MSL). Positive for up. Note that virtually all GPS modules provide the MSL altitude in addition to the WGS84 altitude.</field>
      <field type="uint16_t" name="eph" invalid="UINT16_MAX" multiplier="1E-2">GPS HDOP horizontal dilution of position (unitless * 100). If unknown, set to: UINT16_MAX</field>
      <field type="uint16_t" name="epv" invalid="UINT16_MAX" multiplier="1E-2">GPS VDOP vertical dilution of position (unitless * 100). If unknown, set to: UINT16_MAX</field>
      <field type="uint16_t" name="vel" units="cm/s" invalid="UINT16_MAX">GPS ground speed. If unknown, set to: UINT16_MAX</field>
      <field type="uint16_t" name="cog" units="cdeg" invalid="UINT16_MAX">Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX</field>
      <field type="uint8_t" name="satellites_visible" invalid="UINT8_MAX">Number of satellites visible. If unknown, set to UINT8_MAX</field>
      <extensions/>
      <field type="int32_t" name="alt_ellipsoid" units="mm">Altitude (above WGS84, EGM96 ellipsoid). Positive for up.</field>
      <field type="uint32_t" name="h_acc" units="mm">Position uncertainty.</field>
      <field type="uint32_t" name="v_acc" units="mm">Altitude uncertainty.</field>
      <field type="uint32_t" name="vel_acc" units="mm/s">Speed uncertainty.</field>
      <field type="uint32_t" name="hdg_acc" units="degE5">Heading / track uncertainty</field>
      <field type="uint16_t" name="yaw" units="cdeg" invalid="0">Yaw in earth frame from north. Use 0 if this GPS does not provide yaw. Use UINT16_MAX if this GPS is configured to provide yaw and is currently unable to provide it. Use 36000 for north.</field>
    </message>
    <message id="25" name="GPS_STATUS">
      <description>The positioning status, as reported by GPS. This message is intended to display status information about each satellite visible to the receiver. See message GLOBAL_POSITION_INT for the global position estimate. This message can contain information for up to 20 satellites.</description>
      <field type="uint8_t" name="satellites_visible">Number of satellites visible</field>
      <field type="uint8_t[20]" name="satellite_prn">Global satellite ID</field>
      <field type="uint8_t[20]" name="satellite_used">0: Satellite not used, 1: used for localization</field>
      <field type="uint8_t[20]" name="satellite_elevation" units="deg">Elevation (0: right on top of receiver, 90: on the horizon) of satellite</field>
      <field type="uint8_t[20]" name="satellite_azimuth" units="deg" multiplier="360/255">Direction of satellite, 0: 0 deg, 255: 360 deg.</field>
      <field type="uint8_t[20]" name="satellite_snr" units="dB">Signal to noise ratio of satellite</field>
    </message>
    <message id="26" name="SCALED_IMU">
      <description>The RAW IMU readings for the usual 9DOF sensor setup. This message should contain the scaled values to the described units</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="int16_t" name="xacc" units="mG">X acceleration</field>
      <field type="int16_t" name="yacc" units="mG">Y acceleration</field>
      <field type="int16_t" name="zacc" units="mG">Z acceleration</field>
      <field type="int16_t" name="xgyro" units="mrad/s">Angular speed around X axis</field>
      <field type="int16_t" name="ygyro" units="mrad/s">Angular speed around Y axis</field>
      <field type="int16_t" name="zgyro" units="mrad/s">Angular speed around Z axis</field>
      <field type="int16_t" name="xmag" units="mgauss">X Magnetic field</field>
      <field type="int16_t" name="ymag" units="mgauss">Y Magnetic field</field>
      <field type="int16_t" name="zmag" units="mgauss">Z Magnetic field</field>
      <extensions/>
      <field type="int16_t" name="temperature" units="cdegC">Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).</field>
    </message>
    <message id="27" name="RAW_IMU">
      <description>The RAW IMU readings for a 9DOF sensor, which is identified by the id (default IMU1). This message should always contain the true raw values without any scaling to allow data capture and system debugging.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="int16_t" name="xacc">X acceleration (raw)</field>
      <field type="int16_t" name="yacc">Y acceleration (raw)</field>
      <field type="int16_t" name="zacc">Z acceleration (raw)</field>
      <field type="int16_t" name="xgyro">Angular speed around X axis (raw)</field>
      <field type="int16_t" name="ygyro">Angular speed around Y axis (raw)</field>
      <field type="int16_t" name="zgyro">Angular speed around Z axis (raw)</field>
      <field type="int16_t" name="xmag">X Magnetic field (raw)</field>
      <field type="int16_t" name="ymag">Y Magnetic field (raw)</field>
      <field type="int16_t" name="zmag">Z Magnetic field (raw)</field>
      <extensions/>
      <field type="uint8_t" name="id" instance="true">Id. Ids are numbered from 0 and map to IMUs numbered from 1 (e.g. IMU1 will have a message with id=0)</field>
      <field type="int16_t" name="temperature" units="cdegC">Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).</field>
    </message>
    <message id="28" name="RAW_PRESSURE">
      <description>The RAW pressure readings for the typical setup of one absolute pressure and one differential pressure sensor. The sensor values should be the raw, UNSCALED ADC values.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="int16_t" name="press_abs">Absolute pressure (raw)</field>
      <field type="int16_t" name="press_diff1" invalid="0">Differential pressure 1 (raw, 0 if nonexistent)</field>
      <field type="int16_t" name="press_diff2" invalid="0">Differential pressure 2 (raw, 0 if nonexistent)</field>
      <field type="int16_t" name="temperature">Raw Temperature measurement (raw)</field>
    </message>
    <message id="29" name="SCALED_PRESSURE">
      <description>The pressure readings for the typical setup of one absolute and differential pressure sensor. The units are as specified in each field.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="press_abs" units="hPa">Absolute pressure</field>
      <field type="float" name="press_diff" units="hPa">Differential pressure 1</field>
      <field type="int16_t" name="temperature" units="cdegC">Absolute pressure temperature</field>
      <extensions/>
      <field type="int16_t" name="temperature_press_diff" units="cdegC" invalid="0">Differential pressure temperature (0, if not available). Report values of 0 (or 1) as 1 cdegC.</field>
    </message>
    <message id="30" name="ATTITUDE">
      <description>The attitude in the aeronautical frame (right-handed, Z-down, Y-right, X-front, ZYX, intrinsic).</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="roll" units="rad">Roll angle (-pi..+pi)</field>
      <field type="float" name="pitch" units="rad">Pitch angle (-pi..+pi)</field>
      <field type="float" name="yaw" units="rad">Yaw angle (-pi..+pi)</field>
      <field type="float" name="rollspeed" units="rad/s">Roll angular speed</field>
      <field type="float" name="pitchspeed" units="rad/s">Pitch angular speed</field>
      <field type="float" name="yawspeed" units="rad/s">Yaw angular speed</field>
    </message>
    <message id="31" name="ATTITUDE_QUATERNION">
      <description>The attitude in the aeronautical frame (right-handed, Z-down, X-front, Y-right), expressed as quaternion. Quaternion order is w, x, y, z and a zero rotation would be expressed as (1 0 0 0).</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="q1">Quaternion component 1, w (1 in null-rotation)</field>
      <field type="float" name="q2">Quaternion component 2, x (0 in null-rotation)</field>
      <field type="float" name="q3">Quaternion component 3, y (0 in null-rotation)</field>
      <field type="float" name="q4">Quaternion component 4, z (0 in null-rotation)</field>
      <field type="float" name="rollspeed" units="rad/s">Roll angular speed</field>
      <field type="float" name="pitchspeed" units="rad/s">Pitch angular speed</field>
      <field type="float" name="yawspeed" units="rad/s">Yaw angular speed</field>
      <extensions/>
      <field type="float[4]" name="repr_offset_q" invalid="[0]">Rotation offset by which the attitude quaternion and angular speed vector should be rotated for user display (quaternion with [w, x, y, z] order, zero-rotation is [1, 0, 0, 0], send [0, 0, 0, 0] if field not supported). This field is intended for systems in which the reference attitude may change during flight. For example, tailsitters VTOLs rotate their reference attitude by 90 degrees between hover mode and fixed wing mode, thus repr_offset_q is equal to [1, 0, 0, 0] in hover mode and equal to [0.7071, 0, 0.7071, 0] in fixed wing mode.</field>
    </message>
    <message id="32" name="LOCAL_POSITION_NED">
      <description>The filtered local position (e.g. fused computer vision and accelerometers). Coordinate frame is right-handed, Z-axis down (aeronautical frame, NED / north-east-down convention)</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="x" units="m">X Position</field>
      <field type="float" name="y" units="m">Y Position</field>
      <field type="float" name="z" units="m">Z Position</field>
      <field type="float" name="vx" units="m/s">X Speed</field>
      <field type="float" name="vy" units="m/s">Y Speed</field>
      <field type="float" name="vz" units="m/s">Z Speed</field>
    </message>
    <message id="33" name="GLOBAL_POSITION_INT">
      <description>The filtered global position (e.g. fused GPS and accelerometers). The position is in GPS-frame (right-handed, Z-up). It
               is designed as scaled integer message since the resolution of float is not sufficient.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="int32_t" name="lat" units="degE7">Latitude, expressed</field>
      <field type="int32_t" name="lon" units="degE7">Longitude, expressed</field>
      <field type="int32_t" name="alt" units="mm">Altitude (MSL). Note that virtually all GPS modules provide both WGS84 and MSL.</field>
      <field type="int32_t" name="relative_alt" units="mm">Altitude above home</field>
      <field type="int16_t" name="vx" units="cm/s">Ground X Speed (Latitude, positive north)</field>
      <field type="int16_t" name="vy" units="cm/s">Ground Y Speed (Longitude, positive east)</field>
      <field type="int16_t" name="vz" units="cm/s">Ground Z Speed (Altitude, positive down)</field>
      <field type="uint16_t" name="hdg" units="cdeg" invalid="UINT16_MAX">Vehicle heading (yaw angle), 0.0..359.99 degrees. If unknown, set to: UINT16_MAX</field>
    </message>
    <message id="34" name="RC_CHANNELS_SCALED">
      <description>The scaled values of the RC channels received: (-100%) -10000, (0%) 0, (100%) 10000. Channels that are inactive should be set to INT16_MAX.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="port">Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.</field>
      <field type="int16_t" name="chan1_scaled" invalid="INT16_MAX">RC channel 1 value scaled.</field>
      <field type="int16_t" name="chan2_scaled" invalid="INT16_MAX">RC channel 2 value scaled.</field>
      <field type="int16_t" name="chan3_scaled" invalid="INT16_MAX">RC channel 3 value scaled.</field>
      <field type="int16_t" name="chan4_scaled" invalid="INT16_MAX">RC channel 4 value scaled.</field>
      <field type="int16_t" name="chan5_scaled" invalid="INT16_MAX">RC channel 5 value scaled.</field>
      <field type="int16_t" name="chan6_scaled" invalid="INT16_MAX">RC channel 6 value scaled.</field>
      <field type="int16_t" name="chan7_scaled" invalid="INT16_MAX">RC channel 7 value scaled.</field>
      <field type="int16_t" name="chan8_scaled" invalid="INT16_MAX">RC channel 8 value scaled.</field>
      <field type="uint8_t" name="rssi" invalid="UINT8_MAX">Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.</field>
    </message>
    <message id="35" name="RC_CHANNELS_RAW">
      <description>The RAW values of the RC channels received. The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%. A value of UINT16_MAX implies the channel is unused. Individual receivers/transmitters might violate this specification.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="port">Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.</field>
      <field type="uint16_t" name="chan1_raw" units="us" invalid="UINT16_MAX">RC channel 1 value.</field>
      <field type="uint16_t" name="chan2_raw" units="us" invalid="UINT16_MAX">RC channel 2 value.</field>
      <field type="uint16_t" name="chan3_raw" units="us" invalid="UINT16_MAX">RC channel 3 value.</field>
      <field type="uint16_t" name="chan4_raw" units="us" invalid="UINT16_MAX">RC channel 4 value.</field>
      <field type="uint16_t" name="chan5_raw" units="us" invalid="UINT16_MAX">RC channel 5 value.</field>
      <field type="uint16_t" name="chan6_raw" units="us" invalid="UINT16_MAX">RC channel 6 value.</field>
      <field type="uint16_t" name="chan7_raw" units="us" invalid="UINT16_MAX">RC channel 7 value.</field>
      <field type="uint16_t" name="chan8_raw" units="us" invalid="UINT16_MAX">RC channel 8 value.</field>
      <field type="uint8_t" name="rssi" invalid="UINT8_MAX">Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.</field>
    </message>
    <message id="36" name="SERVO_OUTPUT_RAW">
      <description>Superseded by ACTUATOR_OUTPUT_STATUS. The RAW values of the servo outputs (for RC input from the remote, use the RC_CHANNELS messages). The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%.</description>
      <field type="uint32_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="port">Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN, 1 = AUX.</field>
      <field type="uint16_t" name="servo1_raw" units="us">Servo output 1 value</field>
      <field type="uint16_t" name="servo2_raw" units="us">Servo output 2 value</field>
      <field type="uint16_t" name="servo3_raw" units="us">Servo output 3 value</field>
      <field type="uint16_t" name="servo4_raw" units="us">Servo output 4 value</field>
      <field type="uint16_t" name="servo5_raw" units="us">Servo output 5 value</field>
      <field type="uint16_t" name="servo6_raw" units="us">Servo output 6 value</field>
      <field type="uint16_t" name="servo7_raw" units="us">Servo output 7 value</field>
      <field type="uint16_t" name="servo8_raw" units="us">Servo output 8 value</field>
      <extensions/>
      <field type="uint16_t" name="servo9_raw" units="us">Servo output 9 value</field>
      <field type="uint16_t" name="servo10_raw" units="us">Servo output 10 value</field>
      <field type="uint16_t" name="servo11_raw" units="us">Servo output 11 value</field>
      <field type="uint16_t" name="servo12_raw" units="us">Servo output 12 value</field>
      <field type="uint16_t" name="servo13_raw" units="us">Servo output 13 value</field>
      <field type="uint16_t" name="servo14_raw" units="us">Servo output 14 value</field>
      <field type="uint16_t" name="servo15_raw" units="us">Servo output 15 value</field>
      <field type="uint16_t" name="servo16_raw" units="us">Servo output 16 value</field>
    </message>
    <message id="37" name="MISSION_REQUEST_PARTIAL_LIST">
      <description>Request a partial list of mission items from the system/component. https://mavlink.io/en/services/mission.html. If start and end index are the same, just send one waypoint.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="int16_t" name="start_index">Start index</field>
      <field type="int16_t" name="end_index">End index, -1 by default (-1: send list to end). Else a valid index of the list</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
    </message>
    <message id="38" name="MISSION_WRITE_PARTIAL_LIST">
      <description>This message is sent to the MAV to write a partial list. If start index == end index, only one item will be transmitted / updated. If the start index is NOT 0 and above the current list size, this request should be REJECTED!</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="int16_t" name="start_index">Start index. Must be smaller / equal to the largest index of the current onboard list.</field>
      <field type="int16_t" name="end_index">End index, equal or greater than start index.</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
    </message>
    <message id="39" name="MISSION_ITEM">
      <deprecated since="2020-06" replaced_by="MISSION_ITEM_INT"/>
      <description>Message encoding a mission item. This message is emitted to announce
                the presence of a mission item and to set a mission item on the system. The mission item can be either in x, y, z meters (type: LOCAL) or x:lat, y:lon, z:altitude. Local frame is Z-down, right handed (NED), global frame is Z-up, right handed (ENU). NaN may be used to indicate an optional/default value (e.g. to use the system's current latitude or yaw rather than a specific value). See also https://mavlink.io/en/services/mission.html.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="seq">Sequence</field>
      <field type="uint8_t" name="frame" enum="MAV_FRAME">The coordinate system of the waypoint.</field>
      <field type="uint16_t" name="command" enum="MAV_CMD">The scheduled action for the waypoint.</field>
      <field type="uint8_t" name="current">false:0, true:1</field>
      <field type="uint8_t" name="autocontinue">Autocontinue to next waypoint. 0: false, 1: true. Set false to pause mission after the item completes.</field>
      <field type="float" name="param1">PARAM1, see MAV_CMD enum</field>
      <field type="float" name="param2">PARAM2, see MAV_CMD enum</field>
      <field type="float" name="param3">PARAM3, see MAV_CMD enum</field>
      <field type="float" name="param4">PARAM4, see MAV_CMD enum</field>
      <field type="float" name="x">PARAM5 / local: X coordinate, global: latitude</field>
      <field type="float" name="y">PARAM6 / local: Y coordinate, global: longitude</field>
      <field type="float" name="z">PARAM7 / local: Z coordinate, global: altitude (relative or absolute, depending on frame).</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
    </message>
    <message id="40" name="MISSION_REQUEST">
      <deprecated since="2020-06" replaced_by="MISSION_REQUEST_INT">A system that gets this request should respond with MISSION_ITEM_INT (as though MISSION_REQUEST_INT was received).</deprecated>
      <description>Request the information of the mission item with the sequence number seq. The response of the system to this message should be a MISSION_ITEM message. https://mavlink.io/en/services/mission.html</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="seq">Sequence</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
    </message>
    <message id="41" name="MISSION_SET_CURRENT">
      <deprecated since="2022-08" replaced_by="MAV_CMD_DO_SET_MISSION_CURRENT"/>
      <description>
        Set the mission item with sequence number seq as the current item and emit MISSION_CURRENT (whether or not the mission number changed).
        If a mission is currently being executed, the system will continue to this new mission item on the shortest path, skipping any intermediate mission items.
        Note that mission jump repeat counters are not reset (see MAV_CMD_DO_JUMP param2).

        This message may trigger a mission state-machine change on some systems: for example from MISSION_STATE_NOT_STARTED or MISSION_STATE_PAUSED to MISSION_STATE_ACTIVE.
        If the system is in mission mode, on those systems this command might therefore start, restart or resume the mission.
        If the system is not in mission mode this message must not trigger a switch to mission mode.
      </description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="seq">Sequence</field>
    </message>
    <message id="42" name="MISSION_CURRENT">
      <description>
        Message that announces the sequence number of the current target mission item (that the system will fly towards/execute when the mission is running).
        This message should be streamed all the time (nominally at 1Hz).
        This message should be emitted following a call to MAV_CMD_DO_SET_MISSION_CURRENT or MISSION_SET_CURRENT.
      </description>
      <field type="uint16_t" name="seq">Sequence</field>
      <extensions/>
      <field type="uint16_t" name="total" invalid="UINT16_MAX">Total number of mission items on vehicle (on last item, sequence == total). If the autopilot stores its home location as part of the mission this will be excluded from the total. 0: Not supported, UINT16_MAX if no mission is present on the vehicle.</field>
      <field type="uint8_t" name="mission_state" enum="MISSION_STATE" invalid="0">Mission state machine state. MISSION_STATE_UNKNOWN if state reporting not supported.</field>
      <field type="uint8_t" name="mission_mode" invalid="0">Vehicle is in a mode that can execute mission items or suspended. 0: Unknown, 1: In mission mode, 2: Suspended (not in mission mode).</field>
      <field type="uint32_t" name="mission_id" invalid="0">Id of current on-vehicle mission plan, or 0 if IDs are not supported or there is no mission loaded. GCS can use this to track changes to the mission plan type. The same value is returned on mission upload (in the MISSION_ACK).</field>
      <field type="uint32_t" name="fence_id" invalid="0">Id of current on-vehicle fence plan, or 0 if IDs are not supported or there is no fence loaded. GCS can use this to track changes to the fence plan type. The same value is returned on fence upload (in the MISSION_ACK).</field>
      <field type="uint32_t" name="rally_points_id" invalid="0">Id of current on-vehicle rally point plan, or 0 if IDs are not supported or there are no rally points loaded. GCS can use this to track changes to the rally point plan type. The same value is returned on rally point upload (in the MISSION_ACK).</field>
    </message>
    <message id="43" name="MISSION_REQUEST_LIST">
      <description>Request the overall list of mission items from the system/component.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
    </message>
    <message id="44" name="MISSION_COUNT">
      <description>This message is emitted as response to MISSION_REQUEST_LIST by the MAV and to initiate a write transaction. The GCS can then request the individual mission item based on the knowledge of the total number of waypoints.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="count">Number of mission items in the sequence</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
      <field type="uint32_t" name="opaque_id" invalid="0">Id of current on-vehicle mission, fence, or rally point plan (on download from vehicle).
        This field is used when downloading a plan from a vehicle to a GCS.
        0 on upload to the vehicle from GCS.
        0 if plan ids are not supported.
        The current on-vehicle plan ids are streamed in `MISSION_CURRENT`, allowing a GCS to determine if any part of the plan has changed and needs to be re-uploaded.
        The ids are recalculated by the vehicle when any part of the on-vehicle plan changes (when a new plan is uploaded, the vehicle returns the new id to the GCS in MISSION_ACK).
      </field>
    </message>
    <message id="45" name="MISSION_CLEAR_ALL">
      <description>Delete all mission items at once.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
    </message>
    <message id="46" name="MISSION_ITEM_REACHED">
      <description>A certain mission item has been reached. The system will either hold this position (or circle on the orbit) or (if the autocontinue on the WP was set) continue to the next waypoint.</description>
      <field type="uint16_t" name="seq">Sequence</field>
    </message>
    <message id="47" name="MISSION_ACK">
      <description>Acknowledgment message during waypoint handling. The type field states if this message is a positive ack (type=0) or if an error happened (type=non-zero).</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint8_t" name="type" enum="MAV_MISSION_RESULT">Mission result.</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
      <field type="uint32_t" name="opaque_id" invalid="0">Id of new on-vehicle mission, fence, or rally point plan (on upload to vehicle).
        The id is calculated and returned by a vehicle when a new plan is uploaded by a GCS.
        The only requirement on the id is that it must change when there is any change to the on-vehicle plan type (there is no requirement that the id be globally unique).
        0 on download from the vehicle to the GCS (on download the ID is set in MISSION_COUNT).
        0 if plan ids are not supported.
        The current on-vehicle plan ids are streamed in `MISSION_CURRENT`, allowing a GCS to determine if any part of the plan has changed and needs to be re-uploaded.
      </field>
    </message>
    <message id="48" name="SET_GPS_GLOBAL_ORIGIN">
      <deprecated since="2025-04" replaced_by="MAV_CMD_SET_GLOBAL_ORIGIN"/>
      <description>Sets the GPS coordinates of the vehicle local origin (0,0,0) position. Vehicle should emit GPS_GLOBAL_ORIGIN irrespective of whether the origin is changed. This enables transform between the local coordinate frame and the global (GPS) coordinate frame, which may be necessary when (for example) indoor and outdoor settings are connected and the MAV should move from in- to outdoor.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="int32_t" name="latitude" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="longitude" units="degE7">Longitude (WGS84)</field>
      <field type="int32_t" name="altitude" units="mm">Altitude (MSL). Positive for up.</field>
      <extensions/>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
    </message>
    <message id="49" name="GPS_GLOBAL_ORIGIN">
      <description>Publishes the GPS coordinates of the vehicle local origin (0,0,0) position. Emitted whenever a new GPS-Local position mapping is requested or set - e.g. following SET_GPS_GLOBAL_ORIGIN message.</description>
      <field type="int32_t" name="latitude" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="longitude" units="degE7">Longitude (WGS84)</field>
      <field type="int32_t" name="altitude" units="mm">Altitude (MSL). Positive for up.</field>
      <extensions/>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
    </message>
    <message id="50" name="PARAM_MAP_RC">
      <description>Bind a RC channel to a parameter. The parameter should change according to the RC channel value.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="char[16]" name="param_id">Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string</field>
      <field type="int16_t" name="param_index">Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored), send -2 to disable any existing map for this rc_channel_index.</field>
      <field type="uint8_t" name="parameter_rc_channel_index">Index of parameter RC channel. Not equal to the RC channel id. Typically corresponds to a potentiometer-knob on the RC.</field>
      <field type="float" name="param_value0">Initial parameter value</field>
      <field type="float" name="scale">Scale, maps the RC range [-1, 1] to a parameter value</field>
      <field type="float" name="param_value_min">Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends on implementation)</field>
      <field type="float" name="param_value_max">Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends on implementation)</field>
    </message>
    <message id="51" name="MISSION_REQUEST_INT">
      <description>Request the information of the mission item with the sequence number seq. The response of the system to this message should be a MISSION_ITEM_INT message. https://mavlink.io/en/services/mission.html</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="seq">Sequence</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
    </message>
    <!-- Note, id 53 reserved for MISSION_CHECKSUM message (development.xml) -->
    <message id="54" name="SAFETY_SET_ALLOWED_AREA">
      <description>Set a safety zone (volume), which is defined by two corners of a cube. This message can be used to tell the MAV which setpoints/waypoints to accept and which to reject. Safety areas are often enforced by national or competition regulations.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint8_t" name="frame" enum="MAV_FRAME">Coordinate frame. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.</field>
      <field type="float" name="p1x" units="m">x position 1 / Latitude 1</field>
      <field type="float" name="p1y" units="m">y position 1 / Longitude 1</field>
      <field type="float" name="p1z" units="m">z position 1 / Altitude 1</field>
      <field type="float" name="p2x" units="m">x position 2 / Latitude 2</field>
      <field type="float" name="p2y" units="m">y position 2 / Longitude 2</field>
      <field type="float" name="p2z" units="m">z position 2 / Altitude 2</field>
    </message>
    <message id="55" name="SAFETY_ALLOWED_AREA">
      <description>Read out the safety zone the MAV currently assumes.</description>
      <field type="uint8_t" name="frame" enum="MAV_FRAME">Coordinate frame. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis down.</field>
      <field type="float" name="p1x" units="m">x position 1 / Latitude 1</field>
      <field type="float" name="p1y" units="m">y position 1 / Longitude 1</field>
      <field type="float" name="p1z" units="m">z position 1 / Altitude 1</field>
      <field type="float" name="p2x" units="m">x position 2 / Latitude 2</field>
      <field type="float" name="p2y" units="m">y position 2 / Longitude 2</field>
      <field type="float" name="p2z" units="m">z position 2 / Altitude 2</field>
    </message>
    <message id="61" name="ATTITUDE_QUATERNION_COV">
      <description>The attitude in the aeronautical frame (right-handed, Z-down, X-front, Y-right), expressed as quaternion. Quaternion order is w, x, y, z and a zero rotation would be expressed as (1 0 0 0).</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float[4]" name="q">Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation)</field>
      <field type="float" name="rollspeed" units="rad/s">Roll angular speed</field>
      <field type="float" name="pitchspeed" units="rad/s">Pitch angular speed</field>
      <field type="float" name="yawspeed" units="rad/s">Yaw angular speed</field>
      <field type="float[9]" name="covariance" invalid="[NaN:]">Row-major representation of a 3x3 attitude covariance matrix (states: roll, pitch, yaw; first three entries are the first ROW, next three entries are the second row, etc.). If unknown, assign NaN value to first element in the array.</field>
    </message>
    <message id="62" name="NAV_CONTROLLER_OUTPUT">
      <description>The state of the navigation and position controller.</description>
      <field type="float" name="nav_roll" units="deg">Current desired roll</field>
      <field type="float" name="nav_pitch" units="deg">Current desired pitch</field>
      <field type="int16_t" name="nav_bearing" units="deg">Current desired heading</field>
      <field type="int16_t" name="target_bearing" units="deg">Bearing to current waypoint/target</field>
      <field type="uint16_t" name="wp_dist" units="m">Distance to active waypoint</field>
      <field type="float" name="alt_error" units="m">Current altitude error</field>
      <field type="float" name="aspd_error" units="m/s">Current airspeed error</field>
      <field type="float" name="xtrack_error" units="m">Current crosstrack error on x-y plane</field>
    </message>
    <message id="63" name="GLOBAL_POSITION_INT_COV">
      <description>The filtered global position (e.g. fused GPS and accelerometers). The position is in GPS-frame (right-handed, Z-up). It  is designed as scaled integer message since the resolution of float is not sufficient. NOTE: This message is intended for onboard networks / companion computers and higher-bandwidth links and optimized for accuracy and completeness. Please use the GLOBAL_POSITION_INT message for a minimal subset.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="estimator_type" enum="MAV_ESTIMATOR_TYPE">Class id of the estimator this estimate originated from.</field>
      <field type="int32_t" name="lat" units="degE7">Latitude</field>
      <field type="int32_t" name="lon" units="degE7">Longitude</field>
      <field type="int32_t" name="alt" units="mm">Altitude in meters above MSL</field>
      <field type="int32_t" name="relative_alt" units="mm">Altitude above ground</field>
      <field type="float" name="vx" units="m/s">Ground X Speed (Latitude)</field>
      <field type="float" name="vy" units="m/s">Ground Y Speed (Longitude)</field>
      <field type="float" name="vz" units="m/s">Ground Z Speed (Altitude)</field>
      <field type="float[36]" name="covariance" invalid="[NaN:]">Row-major representation of a 6x6 position and velocity 6x6 cross-covariance matrix (states: lat, lon, alt, vx, vy, vz; first six entries are the first ROW, next six entries are the second row, etc.). If unknown, assign NaN value to first element in the array.</field>
    </message>
    <message id="64" name="LOCAL_POSITION_NED_COV">
      <description>The filtered local position (e.g. fused computer vision and accelerometers). Coordinate frame is right-handed, Z-axis down (aeronautical frame, NED / north-east-down convention)</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="estimator_type" enum="MAV_ESTIMATOR_TYPE">Class id of the estimator this estimate originated from.</field>
      <field type="float" name="x" units="m">X Position</field>
      <field type="float" name="y" units="m">Y Position</field>
      <field type="float" name="z" units="m">Z Position</field>
      <field type="float" name="vx" units="m/s">X Speed</field>
      <field type="float" name="vy" units="m/s">Y Speed</field>
      <field type="float" name="vz" units="m/s">Z Speed</field>
      <field type="float" name="ax" units="m/s/s">X Acceleration</field>
      <field type="float" name="ay" units="m/s/s">Y Acceleration</field>
      <field type="float" name="az" units="m/s/s">Z Acceleration</field>
      <field type="float[45]" name="covariance" invalid="[NaN:]">Row-major representation of position, velocity and acceleration 9x9 cross-covariance matrix upper right triangle (states: x, y, z, vx, vy, vz, ax, ay, az; first nine entries are the first ROW, next eight entries are the second row, etc.). If unknown, assign NaN value to first element in the array.</field>
    </message>
    <message id="65" name="RC_CHANNELS">
      <description>The PPM values of the RC channels received. The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%.  A value of UINT16_MAX implies the channel is unused. Individual receivers/transmitters might violate this specification.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="chancount">Total number of RC channels being received. This can be larger than 18, indicating that more channels are available but not given in this message. This value should be 0 when no RC channels are available.</field>
      <field type="uint16_t" name="chan1_raw" units="us" invalid="UINT16_MAX">RC channel 1 value.</field>
      <field type="uint16_t" name="chan2_raw" units="us" invalid="UINT16_MAX">RC channel 2 value.</field>
      <field type="uint16_t" name="chan3_raw" units="us" invalid="UINT16_MAX">RC channel 3 value.</field>
      <field type="uint16_t" name="chan4_raw" units="us" invalid="UINT16_MAX">RC channel 4 value.</field>
      <field type="uint16_t" name="chan5_raw" units="us" invalid="UINT16_MAX">RC channel 5 value.</field>
      <field type="uint16_t" name="chan6_raw" units="us" invalid="UINT16_MAX">RC channel 6 value.</field>
      <field type="uint16_t" name="chan7_raw" units="us" invalid="UINT16_MAX">RC channel 7 value.</field>
      <field type="uint16_t" name="chan8_raw" units="us" invalid="UINT16_MAX">RC channel 8 value.</field>
      <field type="uint16_t" name="chan9_raw" units="us" invalid="UINT16_MAX">RC channel 9 value.</field>
      <field type="uint16_t" name="chan10_raw" units="us" invalid="UINT16_MAX">RC channel 10 value.</field>
      <field type="uint16_t" name="chan11_raw" units="us" invalid="UINT16_MAX">RC channel 11 value.</field>
      <field type="uint16_t" name="chan12_raw" units="us" invalid="UINT16_MAX">RC channel 12 value.</field>
      <field type="uint16_t" name="chan13_raw" units="us" invalid="UINT16_MAX">RC channel 13 value.</field>
      <field type="uint16_t" name="chan14_raw" units="us" invalid="UINT16_MAX">RC channel 14 value.</field>
      <field type="uint16_t" name="chan15_raw" units="us" invalid="UINT16_MAX">RC channel 15 value.</field>
      <field type="uint16_t" name="chan16_raw" units="us" invalid="UINT16_MAX">RC channel 16 value.</field>
      <field type="uint16_t" name="chan17_raw" units="us" invalid="UINT16_MAX">RC channel 17 value.</field>
      <field type="uint16_t" name="chan18_raw" units="us" invalid="UINT16_MAX">RC channel 18 value.</field>
      <field type="uint8_t" name="rssi" invalid="UINT8_MAX">Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.</field>
    </message>
    <message id="66" name="REQUEST_DATA_STREAM">
      <deprecated since="2015-08" replaced_by="MAV_CMD_SET_MESSAGE_INTERVAL "/>
      <description>Request a data stream.</description>
      <field type="uint8_t" name="target_system">The target requested to send the message stream.</field>
      <field type="uint8_t" name="target_component">The target requested to send the message stream.</field>
      <field type="uint8_t" name="req_stream_id">The ID of the requested data stream</field>
      <field type="uint16_t" name="req_message_rate" units="Hz">The requested message rate</field>
      <field type="uint8_t" name="start_stop">1 to start sending, 0 to stop sending.</field>
    </message>
    <message id="67" name="DATA_STREAM">
      <deprecated since="2015-08" replaced_by="MESSAGE_INTERVAL"/>
      <description>Data stream status information.</description>
      <field type="uint8_t" name="stream_id">The ID of the requested data stream</field>
      <field type="uint16_t" name="message_rate" units="Hz">The message rate</field>
      <field type="uint8_t" name="on_off">1 stream is enabled, 0 stream is stopped.</field>
    </message>
    <message id="69" name="MANUAL_CONTROL">
      <description>This message provides an API for manually controlling the vehicle using standard joystick axes nomenclature, along with a joystick-like input device. Unused axes can be disabled and buttons states are transmitted as individual on/off bits of a bitmask</description>
      <field type="uint8_t" name="target">The system to be controlled.</field>
      <field type="int16_t" name="x" invalid="INT16_MAX">X-axis, normalized to the range [-1000,1000]. A value of INT16_MAX indicates that this axis is invalid. Generally corresponds to forward(1000)-backward(-1000) movement on a joystick and the pitch of a vehicle.</field>
      <field type="int16_t" name="y" invalid="INT16_MAX">Y-axis, normalized to the range [-1000,1000]. A value of INT16_MAX indicates that this axis is invalid. Generally corresponds to left(-1000)-right(1000) movement on a joystick and the roll of a vehicle.</field>
      <field type="int16_t" name="z" invalid="INT16_MAX">Z-axis, normalized to the range [-1000,1000]. A value of INT16_MAX indicates that this axis is invalid. Generally corresponds to a separate slider movement with maximum being 1000 and minimum being -1000 on a joystick and the thrust of a vehicle. Positive values are positive thrust, negative values are negative thrust.</field>
      <field type="int16_t" name="r" invalid="INT16_MAX">R-axis, normalized to the range [-1000,1000]. A value of INT16_MAX indicates that this axis is invalid. Generally corresponds to a twisting of the joystick, with counter-clockwise being 1000 and clockwise being -1000, and the yaw of a vehicle.</field>
      <field type="uint16_t" name="buttons">A bitfield corresponding to the joystick buttons' 0-15 current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 1.</field>
      <extensions/>
      <field type="uint16_t" name="buttons2">A bitfield corresponding to the joystick buttons' 16-31 current state, 1 for pressed, 0 for released. The lowest bit corresponds to Button 16.</field>
      <field type="uint8_t" name="enabled_extensions">Set bits to 1 to indicate which of the following extension fields contain valid data: bit 0: pitch, bit 1: roll, bit 2: aux1, bit 3: aux2, bit 4: aux3, bit 5: aux4, bit 6: aux5, bit 7: aux6</field>
      <field type="int16_t" name="s">Pitch-only-axis, normalized to the range [-1000,1000]. Generally corresponds to pitch on vehicles with additional degrees of freedom. Valid if bit 0 of enabled_extensions field is set. Set to 0 if invalid.</field>
      <field type="int16_t" name="t">Roll-only-axis, normalized to the range [-1000,1000]. Generally corresponds to roll on vehicles with additional degrees of freedom. Valid if bit 1 of enabled_extensions field is set. Set to 0 if invalid.</field>
      <field type="int16_t" name="aux1">Aux continuous input field 1. Normalized in the range [-1000,1000]. Purpose defined by recipient. Valid data if bit 2 of enabled_extensions field is set. 0 if bit 2 is unset.</field>
      <field type="int16_t" name="aux2">Aux continuous input field 2. Normalized in the range [-1000,1000]. Purpose defined by recipient. Valid data if bit 3 of enabled_extensions field is set. 0 if bit 3 is unset.</field>
      <field type="int16_t" name="aux3">Aux continuous input field 3. Normalized in the range [-1000,1000]. Purpose defined by recipient. Valid data if bit 4 of enabled_extensions field is set. 0 if bit 4 is unset.</field>
      <field type="int16_t" name="aux4">Aux continuous input field 4. Normalized in the range [-1000,1000]. Purpose defined by recipient. Valid data if bit 5 of enabled_extensions field is set. 0 if bit 5 is unset.</field>
      <field type="int16_t" name="aux5">Aux continuous input field 5. Normalized in the range [-1000,1000]. Purpose defined by recipient. Valid data if bit 6 of enabled_extensions field is set. 0 if bit 6 is unset.</field>
      <field type="int16_t" name="aux6">Aux continuous input field 6. Normalized in the range [-1000,1000]. Purpose defined by recipient. Valid data if bit 7 of enabled_extensions field is set. 0 if bit 7 is unset.</field>
    </message>
    <message id="70" name="RC_CHANNELS_OVERRIDE">
      <description>The RAW values of the RC channels sent to the MAV to override info received from the RC radio. The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%. Individual receivers/transmitters might violate this specification.  Note carefully the semantic differences between the first 8 channels and the subsequent channels</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="chan1_raw" units="us" invalid="UINT16_MAX">RC channel 1 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan2_raw" units="us" invalid="UINT16_MAX">RC channel 2 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan3_raw" units="us" invalid="UINT16_MAX">RC channel 3 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan4_raw" units="us" invalid="UINT16_MAX">RC channel 4 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan5_raw" units="us" invalid="UINT16_MAX">RC channel 5 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan6_raw" units="us" invalid="UINT16_MAX">RC channel 6 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan7_raw" units="us" invalid="UINT16_MAX">RC channel 7 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan8_raw" units="us" invalid="UINT16_MAX">RC channel 8 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this channel back to the RC radio.</field>
      <extensions/>
      <field type="uint16_t" name="chan9_raw" units="us" invalid="0">RC channel 9 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan10_raw" units="us" invalid="0">RC channel 10 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan11_raw" units="us" invalid="0">RC channel 11 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan12_raw" units="us" invalid="0">RC channel 12 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan13_raw" units="us" invalid="0">RC channel 13 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan14_raw" units="us" invalid="0">RC channel 14 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan15_raw" units="us" invalid="0">RC channel 15 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan16_raw" units="us" invalid="0">RC channel 16 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan17_raw" units="us" invalid="0">RC channel 17 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
      <field type="uint16_t" name="chan18_raw" units="us" invalid="0">RC channel 18 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means to release this channel back to the RC radio.</field>
    </message>
    <message id="73" name="MISSION_ITEM_INT">
      <description>Message encoding a mission item. This message is emitted to announce
                the presence of a mission item and to set a mission item on the system. The mission item can be either in x, y, z meters (type: LOCAL) or x:lat, y:lon, z:altitude. Local frame is Z-down, right handed (NED), global frame is Z-up, right handed (ENU). NaN or INT32_MAX may be used in float/integer params (respectively) to indicate optional/default values (e.g. to use the component's current latitude, yaw rather than a specific value). See also https://mavlink.io/en/services/mission.html.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="seq">Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the sequence (0,1,2,3,4).</field>
      <field type="uint8_t" name="frame" enum="MAV_FRAME">The coordinate system of the waypoint.</field>
      <field type="uint16_t" name="command" enum="MAV_CMD">The scheduled action for the waypoint.</field>
      <field type="uint8_t" name="current">false:0, true:1</field>
      <field type="uint8_t" name="autocontinue">Autocontinue to next waypoint. 0: false, 1: true. Set false to pause mission after the item completes.</field>
      <field type="float" name="param1">PARAM1, see MAV_CMD enum</field>
      <field type="float" name="param2">PARAM2, see MAV_CMD enum</field>
      <field type="float" name="param3">PARAM3, see MAV_CMD enum</field>
      <field type="float" name="param4">PARAM4, see MAV_CMD enum</field>
      <field type="int32_t" name="x">PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7</field>
      <field type="int32_t" name="y">PARAM6 / y position: local: x position in meters * 1e4, global: longitude in degrees *10^7</field>
      <field type="float" name="z">PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame.</field>
      <extensions/>
      <field type="uint8_t" name="mission_type" enum="MAV_MISSION_TYPE">Mission type.</field>
    </message>
    <message id="74" name="VFR_HUD">
      <description>Metrics typically displayed on a HUD for fixed wing aircraft.</description>
      <field type="float" name="airspeed" units="m/s">Vehicle speed in form appropriate for vehicle type. For standard aircraft this is typically calibrated airspeed (CAS) or indicated airspeed (IAS) - either of which can be used by a pilot to estimate stall speed.</field>
      <field type="float" name="groundspeed" units="m/s">Current ground speed.</field>
      <field type="int16_t" name="heading" units="deg">Current heading in compass units (0-360, 0=north).</field>
      <field type="uint16_t" name="throttle" units="%">Current throttle setting (0 to 100).</field>
      <field type="float" name="alt" units="m">Current altitude (MSL).</field>
      <field type="float" name="climb" units="m/s">Current climb rate.</field>
    </message>
    <message id="75" name="COMMAND_INT">
      <description>Send a command with up to seven parameters to the MAV, where params 5 and 6 are integers and the other values are floats. This is preferred over COMMAND_LONG as it allows the MAV_FRAME to be specified for interpreting positional information, such as altitude. COMMAND_INT is also preferred when sending latitude and longitude data in params 5 and 6, as it allows for greater precision. Param 5 and 6 encode positional data as scaled integers, where the scaling depends on the actual command value. NaN or INT32_MAX may be used in float/integer params (respectively) to indicate optional/default values (e.g. to use the component's current latitude, yaw rather than a specific value). The command microservice is documented at https://mavlink.io/en/services/command.html</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint8_t" name="frame" enum="MAV_FRAME">The coordinate system of the COMMAND.</field>
      <field type="uint16_t" name="command" enum="MAV_CMD">The scheduled action for the mission item.</field>
      <field type="uint8_t" name="current">Not used.</field>
      <field type="uint8_t" name="autocontinue">Not used (set 0).</field>
      <field type="float" name="param1" invalid="NaN">PARAM1, see MAV_CMD enum</field>
      <field type="float" name="param2" invalid="NaN">PARAM2, see MAV_CMD enum</field>
      <field type="float" name="param3" invalid="NaN">PARAM3, see MAV_CMD enum</field>
      <field type="float" name="param4" invalid="NaN">PARAM4, see MAV_CMD enum</field>
      <field type="int32_t" name="x" invalid="INT32_MAX">PARAM5 / local: x position in meters * 1e4, global: latitude in degrees * 10^7</field>
      <field type="int32_t" name="y" invalid="INT32_MAX">PARAM6 / local: y position in meters * 1e4, global: longitude in degrees * 10^7</field>
      <field type="float" name="z" invalid="NaN">PARAM7 / z position: global: altitude in meters (relative or absolute, depending on frame).</field>
    </message>
    <message id="76" name="COMMAND_LONG">
      <description>Send a command with up to seven parameters to the MAV. COMMAND_INT is generally preferred when sending MAV_CMD commands that include positional information; it offers higher precision and allows the MAV_FRAME to be specified (which may otherwise be ambiguous, particularly for altitude). The command microservice is documented at https://mavlink.io/en/services/command.html</description>
      <field type="uint8_t" name="target_system">System which should execute the command</field>
      <field type="uint8_t" name="target_component">Component which should execute the command, 0 for all components</field>
      <field type="uint16_t" name="command" enum="MAV_CMD">Command ID (of command to send).</field>
      <field type="uint8_t" name="confirmation">0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command)</field>
      <field type="float" name="param1" invalid="NaN">Parameter 1 (for the specific command).</field>
      <field type="float" name="param2" invalid="NaN">Parameter 2 (for the specific command).</field>
      <field type="float" name="param3" invalid="NaN">Parameter 3 (for the specific command).</field>
      <field type="float" name="param4" invalid="NaN">Parameter 4 (for the specific command).</field>
      <field type="float" name="param5" invalid="NaN">Parameter 5 (for the specific command).</field>
      <field type="float" name="param6" invalid="NaN">Parameter 6 (for the specific command).</field>
      <field type="float" name="param7" invalid="NaN">Parameter 7 (for the specific command).</field>
    </message>
    <message id="77" name="COMMAND_ACK">
      <description>Report status of a command. Includes feedback whether the command was executed. The command microservice is documented at https://mavlink.io/en/services/command.html</description>
      <field type="uint16_t" name="command" enum="MAV_CMD">Command ID (of acknowledged command).</field>
      <field type="uint8_t" name="result" enum="MAV_RESULT">Result of command.</field>
      <extensions/>
      <field type="uint8_t" name="progress" invalid="UINT8_MAX" units="%">The progress percentage when result is MAV_RESULT_IN_PROGRESS. Values: [0-100], or UINT8_MAX if the progress is unknown.</field>
      <field type="int32_t" name="result_param2">Additional result information. Can be set with a command-specific enum containing command-specific error reasons for why the command might be denied. If used, the associated enum must be documented in the corresponding MAV_CMD (this enum should have a 0 value to indicate "unused" or "unknown").</field>
      <field type="uint8_t" name="target_system">System ID of the target recipient. This is the ID of the system that sent the command for which this COMMAND_ACK is an acknowledgement.</field>
      <field type="uint8_t" name="target_component">Component ID of the target recipient. This is the ID of the system that sent the command for which this COMMAND_ACK is an acknowledgement.</field>
    </message>
    <message id="80" name="COMMAND_CANCEL">
      <wip/>
      <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Cancel a long running command. The target system should respond with a COMMAND_ACK to the original command with result=MAV_RESULT_CANCELLED if the long running process was cancelled. If it has already completed, the cancel action can be ignored. The cancel action can be retried until some sort of acknowledgement to the original command has been received. The command microservice is documented at https://mavlink.io/en/services/command.html</description>
      <field type="uint8_t" name="target_system">System executing long running command. Should not be broadcast (0).</field>
      <field type="uint8_t" name="target_component">Component executing long running command.</field>
      <field type="uint16_t" name="command" enum="MAV_CMD">Command ID (of command to cancel).</field>
    </message>
    <message id="81" name="MANUAL_SETPOINT">
      <description>Setpoint in roll, pitch, yaw and thrust from the operator</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="roll" units="rad/s">Desired roll rate</field>
      <field type="float" name="pitch" units="rad/s">Desired pitch rate</field>
      <field type="float" name="yaw" units="rad/s">Desired yaw rate</field>
      <field type="float" name="thrust">Collective thrust, normalized to 0 .. 1</field>
      <field type="uint8_t" name="mode_switch">Flight mode switch position, 0.. 255</field>
      <field type="uint8_t" name="manual_override_switch">Override mode switch position, 0.. 255</field>
    </message>
    <message id="82" name="SET_ATTITUDE_TARGET">
      <description>Sets a desired vehicle attitude. Used by an external controller to command the vehicle (manual controller or other system).</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint8_t" name="type_mask" enum="ATTITUDE_TARGET_TYPEMASK">Bitmap to indicate which dimensions should be ignored by the vehicle.</field>
      <field type="float[4]" name="q">Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0) from MAV_FRAME_LOCAL_NED to MAV_FRAME_BODY_FRD</field>
      <field type="float" name="body_roll_rate" units="rad/s">Body roll rate</field>
      <field type="float" name="body_pitch_rate" units="rad/s">Body pitch rate</field>
      <field type="float" name="body_yaw_rate" units="rad/s">Body yaw rate</field>
      <field type="float" name="thrust">Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)</field>
      <extensions/>
      <field type="float[3]" name="thrust_body">3D thrust setpoint in the body NED frame, normalized to -1 .. 1</field>
    </message>
    <message id="83" name="ATTITUDE_TARGET">
      <description>Reports the current commanded attitude of the vehicle as specified by the autopilot. This should match the commands sent in a SET_ATTITUDE_TARGET message if the vehicle is being controlled this way.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="type_mask" enum="ATTITUDE_TARGET_TYPEMASK">Bitmap to indicate which dimensions should be ignored by the vehicle.</field>
      <field type="float[4]" name="q">Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)</field>
      <field type="float" name="body_roll_rate" units="rad/s">Body roll rate</field>
      <field type="float" name="body_pitch_rate" units="rad/s">Body pitch rate</field>
      <field type="float" name="body_yaw_rate" units="rad/s">Body yaw rate</field>
      <field type="float" name="thrust">Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)</field>
    </message>
    <message id="84" name="SET_POSITION_TARGET_LOCAL_NED">
      <description>Sets a desired vehicle position in a local north-east-down coordinate frame. Used by an external controller to command the vehicle (manual controller or other system).</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint8_t" name="coordinate_frame" enum="MAV_FRAME">Valid options are: MAV_FRAME_LOCAL_NED = 1, MAV_FRAME_LOCAL_OFFSET_NED = 7, MAV_FRAME_BODY_NED = 8, MAV_FRAME_BODY_OFFSET_NED = 9</field>
      <field type="uint16_t" name="type_mask" enum="POSITION_TARGET_TYPEMASK">Bitmap to indicate which dimensions should be ignored by the vehicle.</field>
      <field type="float" name="x" units="m">X Position in NED frame</field>
      <field type="float" name="y" units="m">Y Position in NED frame</field>
      <field type="float" name="z" units="m">Z Position in NED frame (note, altitude is negative in NED)</field>
      <field type="float" name="vx" units="m/s">X velocity in NED frame</field>
      <field type="float" name="vy" units="m/s">Y velocity in NED frame</field>
      <field type="float" name="vz" units="m/s">Z velocity in NED frame</field>
      <field type="float" name="afx" units="m/s/s">X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="afy" units="m/s/s">Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="afz" units="m/s/s">Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="yaw" units="rad">yaw setpoint</field>
      <field type="float" name="yaw_rate" units="rad/s">yaw rate setpoint</field>
    </message>
    <message id="85" name="POSITION_TARGET_LOCAL_NED">
      <description>Reports the current commanded vehicle position, velocity, and acceleration as specified by the autopilot. This should match the commands sent in SET_POSITION_TARGET_LOCAL_NED if the vehicle is being controlled this way.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="coordinate_frame" enum="MAV_FRAME">Valid options are: MAV_FRAME_LOCAL_NED = 1, MAV_FRAME_LOCAL_OFFSET_NED = 7, MAV_FRAME_BODY_NED = 8, MAV_FRAME_BODY_OFFSET_NED = 9</field>
      <field type="uint16_t" name="type_mask" enum="POSITION_TARGET_TYPEMASK">Bitmap to indicate which dimensions should be ignored by the vehicle.</field>
      <field type="float" name="x" units="m">X Position in NED frame</field>
      <field type="float" name="y" units="m">Y Position in NED frame</field>
      <field type="float" name="z" units="m">Z Position in NED frame (note, altitude is negative in NED)</field>
      <field type="float" name="vx" units="m/s">X velocity in NED frame</field>
      <field type="float" name="vy" units="m/s">Y velocity in NED frame</field>
      <field type="float" name="vz" units="m/s">Z velocity in NED frame</field>
      <field type="float" name="afx" units="m/s/s">X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="afy" units="m/s/s">Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="afz" units="m/s/s">Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="yaw" units="rad">yaw setpoint</field>
      <field type="float" name="yaw_rate" units="rad/s">yaw rate setpoint</field>
    </message>
    <message id="86" name="SET_POSITION_TARGET_GLOBAL_INT">
      <description>Sets a desired vehicle position, velocity, and/or acceleration in a global coordinate system (WGS84). Used by an external controller to command the vehicle (manual controller or other system).</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot). The rationale for the timestamp in the setpoint is to allow the system to compensate for the transport delay of the setpoint. This allows the system to compensate processing latency.</field>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint8_t" name="coordinate_frame" enum="MAV_FRAME">Valid options are: MAV_FRAME_GLOBAL = 0, MAV_FRAME_GLOBAL_RELATIVE_ALT = 3, MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 (MAV_FRAME_GLOBAL_INT, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT are allowed synonyms, but have been deprecated)</field>
      <field type="uint16_t" name="type_mask" enum="POSITION_TARGET_TYPEMASK">Bitmap to indicate which dimensions should be ignored by the vehicle.</field>
      <field type="int32_t" name="lat_int" units="degE7">Latitude in WGS84 frame</field>
      <field type="int32_t" name="lon_int" units="degE7">Longitude in WGS84 frame</field>
      <field type="float" name="alt" units="m">Altitude (MSL, Relative to home, or AGL - depending on frame)</field>
      <field type="float" name="vx" units="m/s">X velocity in NED frame</field>
      <field type="float" name="vy" units="m/s">Y velocity in NED frame</field>
      <field type="float" name="vz" units="m/s">Z velocity in NED frame</field>
      <field type="float" name="afx" units="m/s/s">X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="afy" units="m/s/s">Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="afz" units="m/s/s">Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="yaw" units="rad">yaw setpoint</field>
      <field type="float" name="yaw_rate" units="rad/s">yaw rate setpoint</field>
    </message>
    <message id="87" name="POSITION_TARGET_GLOBAL_INT">
      <description>Reports the current commanded vehicle position, velocity, and acceleration as specified by the autopilot. This should match the commands sent in SET_POSITION_TARGET_GLOBAL_INT if the vehicle is being controlled this way.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot). The rationale for the timestamp in the setpoint is to allow the system to compensate for the transport delay of the setpoint. This allows the system to compensate processing latency.</field>
      <field type="uint8_t" name="coordinate_frame" enum="MAV_FRAME">Valid options are: MAV_FRAME_GLOBAL = 0, MAV_FRAME_GLOBAL_RELATIVE_ALT = 3, MAV_FRAME_GLOBAL_TERRAIN_ALT = 10 (MAV_FRAME_GLOBAL_INT, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT are allowed synonyms, but have been deprecated)</field>
      <field type="uint16_t" name="type_mask" enum="POSITION_TARGET_TYPEMASK">Bitmap to indicate which dimensions should be ignored by the vehicle.</field>
      <field type="int32_t" name="lat_int" units="degE7">Latitude in WGS84 frame</field>
      <field type="int32_t" name="lon_int" units="degE7">Longitude in WGS84 frame</field>
      <field type="float" name="alt" units="m">Altitude (MSL, AGL or relative to home altitude, depending on frame)</field>
      <field type="float" name="vx" units="m/s">X velocity in NED frame</field>
      <field type="float" name="vy" units="m/s">Y velocity in NED frame</field>
      <field type="float" name="vz" units="m/s">Z velocity in NED frame</field>
      <field type="float" name="afx" units="m/s/s">X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="afy" units="m/s/s">Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="afz" units="m/s/s">Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N</field>
      <field type="float" name="yaw" units="rad">yaw setpoint</field>
      <field type="float" name="yaw_rate" units="rad/s">yaw rate setpoint</field>
    </message>
    <message id="89" name="LOCAL_POSITION_NED_SYSTEM_GLOBAL_OFFSET">
      <description>The offset in X, Y, Z and yaw between the LOCAL_POSITION_NED messages of MAV X and the global coordinate frame in NED coordinates. Coordinate frame is right-handed, Z-axis down (aeronautical frame, NED / north-east-down convention)</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="x" units="m">X Position</field>
      <field type="float" name="y" units="m">Y Position</field>
      <field type="float" name="z" units="m">Z Position</field>
      <field type="float" name="roll" units="rad">Roll</field>
      <field type="float" name="pitch" units="rad">Pitch</field>
      <field type="float" name="yaw" units="rad">Yaw</field>
    </message>
    <message id="90" name="HIL_STATE">
      <deprecated since="2013-07" replaced_by="HIL_STATE_QUATERNION">Suffers from missing airspeed fields and singularities due to Euler angles</deprecated>
      <description>Sent from simulation to autopilot. This packet is useful for high throughput applications such as hardware in the loop simulations.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="roll" units="rad">Roll angle</field>
      <field type="float" name="pitch" units="rad">Pitch angle</field>
      <field type="float" name="yaw" units="rad">Yaw angle</field>
      <field type="float" name="rollspeed" units="rad/s">Body frame roll / phi angular speed</field>
      <field type="float" name="pitchspeed" units="rad/s">Body frame pitch / theta angular speed</field>
      <field type="float" name="yawspeed" units="rad/s">Body frame yaw / psi angular speed</field>
      <field type="int32_t" name="lat" units="degE7">Latitude</field>
      <field type="int32_t" name="lon" units="degE7">Longitude</field>
      <field type="int32_t" name="alt" units="mm">Altitude</field>
      <field type="int16_t" name="vx" units="cm/s">Ground X Speed (Latitude)</field>
      <field type="int16_t" name="vy" units="cm/s">Ground Y Speed (Longitude)</field>
      <field type="int16_t" name="vz" units="cm/s">Ground Z Speed (Altitude)</field>
      <field type="int16_t" name="xacc" units="mG">X acceleration</field>
      <field type="int16_t" name="yacc" units="mG">Y acceleration</field>
      <field type="int16_t" name="zacc" units="mG">Z acceleration</field>
    </message>
    <message id="91" name="HIL_CONTROLS">
      <description>Sent from autopilot to simulation. Hardware in the loop control outputs. Alternative to HIL_ACTUATOR_CONTROLS.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="roll_ailerons">Control output -1 .. 1</field>
      <field type="float" name="pitch_elevator">Control output -1 .. 1</field>
      <field type="float" name="yaw_rudder">Control output -1 .. 1</field>
      <field type="float" name="throttle">Throttle 0 .. 1</field>
      <field type="float" name="aux1">Aux 1, -1 .. 1</field>
      <field type="float" name="aux2">Aux 2, -1 .. 1</field>
      <field type="float" name="aux3">Aux 3, -1 .. 1</field>
      <field type="float" name="aux4">Aux 4, -1 .. 1</field>
      <field type="uint8_t" name="mode" enum="MAV_MODE">System mode.</field>
      <field type="uint8_t" name="nav_mode">Navigation mode (MAV_NAV_MODE)</field>
    </message>
    <message id="92" name="HIL_RC_INPUTS_RAW">
      <description>Sent from simulation to autopilot. The RAW values of the RC channels received. The standard PPM modulation is as follows: 1000 microseconds: 0%, 2000 microseconds: 100%. Individual receivers/transmitters might violate this specification.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint16_t" name="chan1_raw" units="us">RC channel 1 value</field>
      <field type="uint16_t" name="chan2_raw" units="us">RC channel 2 value</field>
      <field type="uint16_t" name="chan3_raw" units="us">RC channel 3 value</field>
      <field type="uint16_t" name="chan4_raw" units="us">RC channel 4 value</field>
      <field type="uint16_t" name="chan5_raw" units="us">RC channel 5 value</field>
      <field type="uint16_t" name="chan6_raw" units="us">RC channel 6 value</field>
      <field type="uint16_t" name="chan7_raw" units="us">RC channel 7 value</field>
      <field type="uint16_t" name="chan8_raw" units="us">RC channel 8 value</field>
      <field type="uint16_t" name="chan9_raw" units="us">RC channel 9 value</field>
      <field type="uint16_t" name="chan10_raw" units="us">RC channel 10 value</field>
      <field type="uint16_t" name="chan11_raw" units="us">RC channel 11 value</field>
      <field type="uint16_t" name="chan12_raw" units="us">RC channel 12 value</field>
      <field type="uint8_t" name="rssi" invalid="UINT8_MAX">Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.</field>
    </message>
    <message id="93" name="HIL_ACTUATOR_CONTROLS">
      <description>Sent from autopilot to simulation. Hardware in the loop control outputs. Alternative to HIL_CONTROLS.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float[16]" name="controls">Control outputs -1 .. 1. Channel assignment depends on the simulated hardware.</field>
      <field type="uint8_t" name="mode" enum="MAV_MODE_FLAG" display="bitmask">System mode. Includes arming state.</field>
      <field type="uint64_t" name="flags" enum="HIL_ACTUATOR_CONTROLS_FLAGS" display="bitmask">Flags bitmask.</field>
    </message>
    <message id="100" name="OPTICAL_FLOW">
      <description>Optical flow from a flow sensor (e.g. optical mouse sensor)</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="sensor_id">Sensor ID</field>
      <field type="int16_t" name="flow_x" units="dpix">Flow in x-sensor direction</field>
      <field type="int16_t" name="flow_y" units="dpix">Flow in y-sensor direction</field>
      <field type="float" name="flow_comp_m_x" units="m/s">Flow in x-sensor direction, angular-speed compensated</field>
      <field type="float" name="flow_comp_m_y" units="m/s">Flow in y-sensor direction, angular-speed compensated</field>
      <field type="uint8_t" name="quality">Optical flow quality / confidence. 0: bad, 255: maximum quality</field>
      <field type="float" name="ground_distance" units="m">Ground distance. Positive value: distance known. Negative value: Unknown distance</field>
      <extensions/>
      <field type="float" name="flow_rate_x" units="rad/s">Flow rate about X axis</field>
      <field type="float" name="flow_rate_y" units="rad/s">Flow rate about Y axis</field>
    </message>
    <message id="101" name="GLOBAL_VISION_POSITION_ESTIMATE">
      <description>Global position/attitude estimate from a vision source.</description>
      <field type="uint64_t" name="usec" units="us">Timestamp (UNIX time or since system boot)</field>
      <field type="float" name="x" units="m">Global X position</field>
      <field type="float" name="y" units="m">Global Y position</field>
      <field type="float" name="z" units="m">Global Z position</field>
      <field type="float" name="roll" units="rad">Roll angle</field>
      <field type="float" name="pitch" units="rad">Pitch angle</field>
      <field type="float" name="yaw" units="rad">Yaw angle</field>
      <extensions/>
      <field type="float[21]" name="covariance" invalid="[NaN:]">Row-major representation of pose 6x6 cross-covariance matrix upper right triangle (states: x_global, y_global, z_global, roll, pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If unknown, assign NaN value to first element in the array.</field>
      <field type="uint8_t" name="reset_counter">Estimate reset counter. This should be incremented when the estimate resets in any of the dimensions (position, velocity, attitude, angular speed). This is designed to be used when e.g an external SLAM system detects a loop-closure and the estimate jumps.</field>
    </message>
    <message id="102" name="VISION_POSITION_ESTIMATE">
      <description>Local position/attitude estimate from a vision source.</description>
      <field type="uint64_t" name="usec" units="us">Timestamp (UNIX time or time since system boot)</field>
      <field type="float" name="x" units="m">Local X position</field>
      <field type="float" name="y" units="m">Local Y position</field>
      <field type="float" name="z" units="m">Local Z position</field>
      <field type="float" name="roll" units="rad">Roll angle</field>
      <field type="float" name="pitch" units="rad">Pitch angle</field>
      <field type="float" name="yaw" units="rad">Yaw angle</field>
      <extensions/>
      <field type="float[21]" name="covariance" invalid="[NaN:]">Row-major representation of pose 6x6 cross-covariance matrix upper right triangle (states: x, y, z, roll, pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If unknown, assign NaN value to first element in the array.</field>
      <field type="uint8_t" name="reset_counter">Estimate reset counter. This should be incremented when the estimate resets in any of the dimensions (position, velocity, attitude, angular speed). This is designed to be used when e.g an external SLAM system detects a loop-closure and the estimate jumps.</field>
    </message>
    <message id="103" name="VISION_SPEED_ESTIMATE">
      <description>Speed estimate from a vision source.</description>
      <field type="uint64_t" name="usec" units="us">Timestamp (UNIX time or time since system boot)</field>
      <field type="float" name="x" units="m/s">Global X speed</field>
      <field type="float" name="y" units="m/s">Global Y speed</field>
      <field type="float" name="z" units="m/s">Global Z speed</field>
      <extensions/>
      <field type="float[9]" name="covariance" invalid="[NaN:]">Row-major representation of 3x3 linear velocity covariance matrix (states: vx, vy, vz; 1st three entries - 1st row, etc.). If unknown, assign NaN value to first element in the array.</field>
      <field type="uint8_t" name="reset_counter">Estimate reset counter. This should be incremented when the estimate resets in any of the dimensions (position, velocity, attitude, angular speed). This is designed to be used when e.g an external SLAM system detects a loop-closure and the estimate jumps.</field>
    </message>
    <message id="104" name="VICON_POSITION_ESTIMATE">
      <description>Global position estimate from a Vicon motion system source.</description>
      <field type="uint64_t" name="usec" units="us">Timestamp (UNIX time or time since system boot)</field>
      <field type="float" name="x" units="m">Global X position</field>
      <field type="float" name="y" units="m">Global Y position</field>
      <field type="float" name="z" units="m">Global Z position</field>
      <field type="float" name="roll" units="rad">Roll angle</field>
      <field type="float" name="pitch" units="rad">Pitch angle</field>
      <field type="float" name="yaw" units="rad">Yaw angle</field>
      <extensions/>
      <field type="float[21]" name="covariance" invalid="[NaN:]">Row-major representation of 6x6 pose cross-covariance matrix upper right triangle (states: x, y, z, roll, pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If unknown, assign NaN value to first element in the array.</field>
    </message>
    <message id="105" name="HIGHRES_IMU">
      <description>The IMU readings in SI units in NED body frame</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="xacc" units="m/s/s">X acceleration</field>
      <field type="float" name="yacc" units="m/s/s">Y acceleration</field>
      <field type="float" name="zacc" units="m/s/s">Z acceleration</field>
      <field type="float" name="xgyro" units="rad/s">Angular speed around X axis</field>
      <field type="float" name="ygyro" units="rad/s">Angular speed around Y axis</field>
      <field type="float" name="zgyro" units="rad/s">Angular speed around Z axis</field>
      <field type="float" name="xmag" units="gauss">X Magnetic field</field>
      <field type="float" name="ymag" units="gauss">Y Magnetic field</field>
      <field type="float" name="zmag" units="gauss">Z Magnetic field</field>
      <field type="float" name="abs_pressure" units="hPa">Absolute pressure</field>
      <field type="float" name="diff_pressure" units="hPa">Differential pressure</field>
      <field type="float" name="pressure_alt">Altitude calculated from pressure</field>
      <field type="float" name="temperature" units="degC">Temperature</field>
      <field type="uint16_t" name="fields_updated" enum="HIGHRES_IMU_UPDATED_FLAGS">Bitmap for fields that have updated since last message</field>
      <extensions/>
      <field type="uint8_t" name="id" instance="true">Id. Ids are numbered from 0 and map to IMUs numbered from 1 (e.g. IMU1 will have a message with id=0)</field>
    </message>
    <message id="106" name="OPTICAL_FLOW_RAD">
      <description>Optical flow from an angular rate flow sensor (e.g. PX4FLOW or mouse sensor)</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="sensor_id" instance="true">Sensor ID</field>
      <field type="uint32_t" name="integration_time_us" units="us">Integration time. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the.</field>
      <field type="float" name="integrated_x" units="rad">Flow around X axis (Sensor RH rotation about the X axis induces a positive flow. Sensor linear motion along the positive Y axis induces a negative flow.)</field>
      <field type="float" name="integrated_y" units="rad">Flow around Y axis (Sensor RH rotation about the Y axis induces a positive flow. Sensor linear motion along the positive X axis induces a positive flow.)</field>
      <field type="float" name="integrated_xgyro" units="rad">RH rotation around X axis</field>
      <field type="float" name="integrated_ygyro" units="rad">RH rotation around Y axis</field>
      <field type="float" name="integrated_zgyro" units="rad">RH rotation around Z axis</field>
      <field type="int16_t" name="temperature" units="cdegC">Temperature</field>
      <field type="uint8_t" name="quality">Optical flow quality / confidence. 0: no valid flow, 255: maximum quality</field>
      <field type="uint32_t" name="time_delta_distance_us" units="us">Time since the distance was sampled.</field>
      <field type="float" name="distance" units="m">Distance to the center of the flow field. Positive value (including zero): distance known. Negative value: Unknown distance.</field>
    </message>
    <message id="107" name="HIL_SENSOR">
      <description>The IMU readings in SI units in NED body frame</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="xacc" units="m/s/s">X acceleration</field>
      <field type="float" name="yacc" units="m/s/s">Y acceleration</field>
      <field type="float" name="zacc" units="m/s/s">Z acceleration</field>
      <field type="float" name="xgyro" units="rad/s">Angular speed around X axis in body frame</field>
      <field type="float" name="ygyro" units="rad/s">Angular speed around Y axis in body frame</field>
      <field type="float" name="zgyro" units="rad/s">Angular speed around Z axis in body frame</field>
      <field type="float" name="xmag" units="gauss">X Magnetic field</field>
      <field type="float" name="ymag" units="gauss">Y Magnetic field</field>
      <field type="float" name="zmag" units="gauss">Z Magnetic field</field>
      <field type="float" name="abs_pressure" units="hPa">Absolute pressure</field>
      <field type="float" name="diff_pressure" units="hPa">Differential pressure (airspeed)</field>
      <field type="float" name="pressure_alt">Altitude calculated from pressure</field>
      <field type="float" name="temperature" units="degC">Temperature</field>
      <field type="uint32_t" name="fields_updated" enum="HIL_SENSOR_UPDATED_FLAGS">Bitmap for fields that have updated since last message</field>
      <extensions/>
      <field type="uint8_t" name="id">Sensor ID (zero indexed). Used for multiple sensor inputs</field>
    </message>
    <message id="108" name="SIM_STATE">
      <description>Status of simulation environment, if used</description>
      <field type="float" name="q1">True attitude quaternion component 1, w (1 in null-rotation)</field>
      <field type="float" name="q2">True attitude quaternion component 2, x (0 in null-rotation)</field>
      <field type="float" name="q3">True attitude quaternion component 3, y (0 in null-rotation)</field>
      <field type="float" name="q4">True attitude quaternion component 4, z (0 in null-rotation)</field>
      <field type="float" name="roll" units="rad">Attitude roll expressed as Euler angles, not recommended except for human-readable outputs</field>
      <field type="float" name="pitch" units="rad">Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs</field>
      <field type="float" name="yaw" units="rad">Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs</field>
      <field type="float" name="xacc" units="m/s/s">X acceleration</field>
      <field type="float" name="yacc" units="m/s/s">Y acceleration</field>
      <field type="float" name="zacc" units="m/s/s">Z acceleration</field>
      <field type="float" name="xgyro" units="rad/s">Angular speed around X axis</field>
      <field type="float" name="ygyro" units="rad/s">Angular speed around Y axis</field>
      <field type="float" name="zgyro" units="rad/s">Angular speed around Z axis</field>
      <field type="float" name="lat" units="deg">Latitude (lower precision). Both this and the lat_int field should be set.</field>
      <field type="float" name="lon" units="deg">Longitude (lower precision). Both this and the lon_int field should be set.</field>
      <field type="float" name="alt" units="m">Altitude</field>
      <field type="float" name="std_dev_horz">Horizontal position standard deviation</field>
      <field type="float" name="std_dev_vert">Vertical position standard deviation</field>
      <field type="float" name="vn" units="m/s">True velocity in north direction in earth-fixed NED frame</field>
      <field type="float" name="ve" units="m/s">True velocity in east direction in earth-fixed NED frame</field>
      <field type="float" name="vd" units="m/s">True velocity in down direction in earth-fixed NED frame</field>
      <extensions/>
      <field type="int32_t" name="lat_int" units="degE7" invalid="0">Latitude (higher precision). If 0, recipients should use the lat field value (otherwise this field is preferred).</field>
      <field type="int32_t" name="lon_int" units="degE7" invalid="0">Longitude (higher precision). If 0, recipients should use the lon field value (otherwise this field is preferred).</field>
    </message>
    <message id="109" name="RADIO_STATUS">
      <description>Status generated by radio and injected into MAVLink stream.</description>
      <field type="uint8_t" name="rssi" invalid="UINT8_MAX">Local (message sender) received signal strength indication in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.</field>
      <field type="uint8_t" name="remrssi" invalid="UINT8_MAX">Remote (message receiver) signal strength indication in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.</field>
      <field type="uint8_t" name="txbuf" units="%">Remaining free transmitter buffer space.</field>
      <field type="uint8_t" name="noise" invalid="UINT8_MAX">Local background noise level. These are device dependent RSSI values (scale as approx 2x dB on SiK radios). Values: [0-254], UINT8_MAX: invalid/unknown.</field>
      <field type="uint8_t" name="remnoise" invalid="UINT8_MAX">Remote background noise level. These are device dependent RSSI values (scale as approx 2x dB on SiK radios). Values: [0-254], UINT8_MAX: invalid/unknown.</field>
      <field type="uint16_t" name="rxerrors">Count of radio packet receive errors (since boot).</field>
      <field type="uint16_t" name="fixed">Count of error corrected radio packets (since boot).</field>
    </message>
    <message id="110" name="FILE_TRANSFER_PROTOCOL">
      <description>File transfer protocol message: https://mavlink.io/en/services/ftp.html.</description>
      <field type="uint8_t" name="target_network">Network ID (0 for broadcast)</field>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast)</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast)</field>
      <field type="uint8_t[251]" name="payload">Variable length payload. The length is defined by the remaining message length when subtracting the header and other fields. The content/format of this block is defined in https://mavlink.io/en/services/ftp.html.</field>
    </message>
    <message id="111" name="TIMESYNC">
      <description>
        Time synchronization message.
        The message is used for both timesync requests and responses.
        The request is sent with `ts1=syncing component timestamp` and `tc1=0`, and may be broadcast or targeted to a specific system/component.
        The response is sent with `ts1=syncing component timestamp` (mirror back unchanged), and `tc1=responding component timestamp`, with the `target_system` and `target_component` set to ids of the original request.
        Systems can determine if they are receiving a request or response based on the value of `tc`.
        If the response has `target_system==target_component==0` the remote system has not been updated to use the component IDs and cannot reliably timesync; the requestor may report an error.
        Timestamps are UNIX Epoch time or time since system boot in nanoseconds (the timestamp format can be inferred by checking for the magnitude of the number; generally it doesn't matter as only the offset is used).
        The message sequence is repeated numerous times with results being filtered/averaged to estimate the offset.
        See also: https://mavlink.io/en/services/timesync.html.
      </description>
      <field type="int64_t" name="tc1" units="ns">Time sync timestamp 1. Syncing: 0. Responding: Timestamp of responding component.</field>
      <field type="int64_t" name="ts1" units="ns">Time sync timestamp 2. Timestamp of syncing component (mirrored in response).</field>
      <extensions/>
      <field type="uint8_t" name="target_system">Target system id. Request: 0 (broadcast) or id of specific system. Response must contain system id of the requesting component.</field>
      <field type="uint8_t" name="target_component">Target component id. Request: 0 (broadcast) or id of specific component. Response must contain component id of the requesting component.</field>
    </message>
    <message id="112" name="CAMERA_TRIGGER">
      <description>Camera-IMU triggering and synchronisation message.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp for image frame (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint32_t" name="seq">Image frame sequence</field>
    </message>
    <message id="113" name="HIL_GPS">
      <description>The global position, as returned by the Global Positioning System (GPS). This is
                 NOT the global position estimate of the system, but rather a RAW sensor value. See message GLOBAL_POSITION_INT for the global position estimate.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="fix_type">0-1: no fix, 2: 2D fix, 3: 3D fix. Some applications will not use the value of this field unless it is at least two, so always correctly fill in the fix.</field>
      <field type="int32_t" name="lat" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="lon" units="degE7">Longitude (WGS84)</field>
      <field type="int32_t" name="alt" units="mm">Altitude (MSL). Positive for up.</field>
      <field type="uint16_t" name="eph" invalid="UINT16_MAX" multiplier="1E-2">GPS HDOP horizontal dilution of position (unitless * 100). If unknown, set to: UINT16_MAX</field>
      <field type="uint16_t" name="epv" invalid="UINT16_MAX" multiplier="1E-2">GPS VDOP vertical dilution of position (unitless * 100). If unknown, set to: UINT16_MAX</field>
      <field type="uint16_t" name="vel" units="cm/s" invalid="UINT16_MAX">GPS ground speed. If unknown, set to: UINT16_MAX</field>
      <field type="int16_t" name="vn" units="cm/s">GPS velocity in north direction in earth-fixed NED frame</field>
      <field type="int16_t" name="ve" units="cm/s">GPS velocity in east direction in earth-fixed NED frame</field>
      <field type="int16_t" name="vd" units="cm/s">GPS velocity in down direction in earth-fixed NED frame</field>
      <field type="uint16_t" name="cog" units="cdeg" invalid="UINT16_MAX">Course over ground (NOT heading, but direction of movement), 0.0..359.99 degrees. If unknown, set to: UINT16_MAX</field>
      <field type="uint8_t" name="satellites_visible" invalid="UINT8_MAX">Number of satellites visible. If unknown, set to UINT8_MAX</field>
      <extensions/>
      <field type="uint8_t" name="id">GPS ID (zero indexed). Used for multiple GPS inputs</field>
      <field type="uint16_t" name="yaw" units="cdeg">Yaw of vehicle relative to Earth's North, zero means not available, use 36000 for north</field>
    </message>
    <message id="114" name="HIL_OPTICAL_FLOW">
      <description>Simulated optical flow from a flow sensor (e.g. PX4FLOW or optical mouse sensor)</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="sensor_id">Sensor ID</field>
      <field type="uint32_t" name="integration_time_us" units="us">Integration time. Divide integrated_x and integrated_y by the integration time to obtain average flow. The integration time also indicates the.</field>
      <field type="float" name="integrated_x" units="rad">Flow in radians around X axis (Sensor RH rotation about the X axis induces a positive flow. Sensor linear motion along the positive Y axis induces a negative flow.)</field>
      <field type="float" name="integrated_y" units="rad">Flow in radians around Y axis (Sensor RH rotation about the Y axis induces a positive flow. Sensor linear motion along the positive X axis induces a positive flow.)</field>
      <field type="float" name="integrated_xgyro" units="rad">RH rotation around X axis</field>
      <field type="float" name="integrated_ygyro" units="rad">RH rotation around Y axis</field>
      <field type="float" name="integrated_zgyro" units="rad">RH rotation around Z axis</field>
      <field type="int16_t" name="temperature" units="cdegC">Temperature</field>
      <field type="uint8_t" name="quality">Optical flow quality / confidence. 0: no valid flow, 255: maximum quality</field>
      <field type="uint32_t" name="time_delta_distance_us" units="us">Time since the distance was sampled.</field>
      <field type="float" name="distance" units="m" invalid="-1.0">Distance to the center of the flow field. Positive value (including zero): distance known. Negative value: Unknown distance.</field>
    </message>
    <message id="115" name="HIL_STATE_QUATERNION">
      <description>Sent from simulation to autopilot, avoids in contrast to HIL_STATE singularities. This packet is useful for high throughput applications such as hardware in the loop simulations.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float[4]" name="attitude_quaternion">Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)</field>
      <field type="float" name="rollspeed" units="rad/s">Body frame roll / phi angular speed</field>
      <field type="float" name="pitchspeed" units="rad/s">Body frame pitch / theta angular speed</field>
      <field type="float" name="yawspeed" units="rad/s">Body frame yaw / psi angular speed</field>
      <field type="int32_t" name="lat" units="degE7">Latitude</field>
      <field type="int32_t" name="lon" units="degE7">Longitude</field>
      <field type="int32_t" name="alt" units="mm">Altitude</field>
      <field type="int16_t" name="vx" units="cm/s">Ground X Speed (Latitude)</field>
      <field type="int16_t" name="vy" units="cm/s">Ground Y Speed (Longitude)</field>
      <field type="int16_t" name="vz" units="cm/s">Ground Z Speed (Altitude)</field>
      <field type="uint16_t" name="ind_airspeed" units="cm/s">Indicated airspeed</field>
      <field type="uint16_t" name="true_airspeed" units="cm/s">True airspeed</field>
      <field type="int16_t" name="xacc" units="mG">X acceleration</field>
      <field type="int16_t" name="yacc" units="mG">Y acceleration</field>
      <field type="int16_t" name="zacc" units="mG">Z acceleration</field>
    </message>
    <message id="116" name="SCALED_IMU2">
      <description>The RAW IMU readings for secondary 9DOF sensor setup. This message should contain the scaled values to the described units</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="int16_t" name="xacc" units="mG">X acceleration</field>
      <field type="int16_t" name="yacc" units="mG">Y acceleration</field>
      <field type="int16_t" name="zacc" units="mG">Z acceleration</field>
      <field type="int16_t" name="xgyro" units="mrad/s">Angular speed around X axis</field>
      <field type="int16_t" name="ygyro" units="mrad/s">Angular speed around Y axis</field>
      <field type="int16_t" name="zgyro" units="mrad/s">Angular speed around Z axis</field>
      <field type="int16_t" name="xmag" units="mgauss">X Magnetic field</field>
      <field type="int16_t" name="ymag" units="mgauss">Y Magnetic field</field>
      <field type="int16_t" name="zmag" units="mgauss">Z Magnetic field</field>
      <extensions/>
      <field type="int16_t" name="temperature" units="cdegC" invalid="0">Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).</field>
    </message>
    <message id="117" name="LOG_REQUEST_LIST">
      <description>Request a list of available logs. On some systems calling this may stop on-board logging until LOG_REQUEST_END is called. If there are no log files available this request shall be answered with one LOG_ENTRY message with id = 0 and num_logs = 0.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="start">First log id (0 for first available)</field>
      <field type="uint16_t" name="end">Last log id (0xffff for last available)</field>
    </message>
    <message id="118" name="LOG_ENTRY">
      <description>Reply to LOG_REQUEST_LIST</description>
      <field type="uint16_t" name="id">Log id</field>
      <field type="uint16_t" name="num_logs">Total number of logs</field>
      <field type="uint16_t" name="last_log_num">High log number</field>
      <field type="uint32_t" name="time_utc" units="s" invalid="0">UTC timestamp of log since 1970, or 0 if not available</field>
      <field type="uint32_t" name="size" units="bytes">Size of the log (may be approximate)</field>
    </message>
    <message id="119" name="LOG_REQUEST_DATA">
      <description>Request a chunk of a log</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="id">Log id (from LOG_ENTRY reply)</field>
      <field type="uint32_t" name="ofs">Offset into the log</field>
      <field type="uint32_t" name="count" units="bytes">Number of bytes</field>
    </message>
    <message id="120" name="LOG_DATA">
      <description>Reply to LOG_REQUEST_DATA</description>
      <field type="uint16_t" name="id">Log id (from LOG_ENTRY reply)</field>
      <field type="uint32_t" name="ofs">Offset into the log</field>
      <field type="uint8_t" name="count" units="bytes">Number of bytes (zero for end of log)</field>
      <field type="uint8_t[90]" name="data">log data</field>
    </message>
    <message id="121" name="LOG_ERASE">
      <description>Erase all logs</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
    </message>
    <message id="122" name="LOG_REQUEST_END">
      <description>Stop log transfer and resume normal logging</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
    </message>
    <message id="123" name="GPS_INJECT_DATA">
      <deprecated since="2022-05" replaced_by="GPS_RTCM_DATA"/>
      <description>Data for injecting into the onboard GPS (used for DGPS)</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint8_t" name="len" units="bytes">Data length</field>
      <field type="uint8_t[110]" name="data">Raw data (110 is enough for 12 satellites of RTCMv2)</field>
    </message>
    <message id="124" name="GPS2_RAW">
      <description>Second GPS data.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="fix_type" enum="GPS_FIX_TYPE">GPS fix type.</field>
      <field type="int32_t" name="lat" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="lon" units="degE7">Longitude (WGS84)</field>
      <field type="int32_t" name="alt" units="mm">Altitude (MSL). Positive for up.</field>
      <field type="uint16_t" name="eph" invalid="UINT16_MAX">GPS HDOP horizontal dilution of position (unitless * 100). If unknown, set to: UINT16_MAX</field>
      <field type="uint16_t" name="epv" invalid="UINT16_MAX">GPS VDOP vertical dilution of position (unitless * 100). If unknown, set to: UINT16_MAX</field>
      <field type="uint16_t" name="vel" units="cm/s" invalid="UINT16_MAX">GPS ground speed. If unknown, set to: UINT16_MAX</field>
      <field type="uint16_t" name="cog" units="cdeg" invalid="UINT16_MAX">Course over ground (NOT heading, but direction of movement): 0.0..359.99 degrees. If unknown, set to: UINT16_MAX</field>
      <field type="uint8_t" name="satellites_visible" invalid="UINT8_MAX">Number of satellites visible. If unknown, set to UINT8_MAX</field>
      <field type="uint8_t" name="dgps_numch">Number of DGPS satellites</field>
      <field type="uint32_t" name="dgps_age" units="ms">Age of DGPS info</field>
      <extensions/>
      <field type="uint16_t" name="yaw" units="cdeg" invalid="0">Yaw in earth frame from north. Use 0 if this GPS does not provide yaw. Use UINT16_MAX if this GPS is configured to provide yaw and is currently unable to provide it. Use 36000 for north.</field>
      <field type="int32_t" name="alt_ellipsoid" units="mm">Altitude (above WGS84, EGM96 ellipsoid). Positive for up.</field>
      <field type="uint32_t" name="h_acc" units="mm">Position uncertainty.</field>
      <field type="uint32_t" name="v_acc" units="mm">Altitude uncertainty.</field>
      <field type="uint32_t" name="vel_acc" units="mm/s">Speed uncertainty.</field>
      <field type="uint32_t" name="hdg_acc" units="degE5">Heading / track uncertainty</field>
    </message>
    <message id="125" name="POWER_STATUS">
      <description>Power supply status</description>
      <field type="uint16_t" name="Vcc" units="mV">5V rail voltage.</field>
      <field type="uint16_t" name="Vservo" units="mV">Servo rail voltage.</field>
      <field type="uint16_t" name="flags" enum="MAV_POWER_STATUS">Bitmap of power supply status flags.</field>
    </message>
    <message id="126" name="SERIAL_CONTROL">
      <description>Control a serial port. This can be used for raw access to an onboard serial peripheral such as a GPS or telemetry radio. It is designed to make it possible to update the devices firmware via MAVLink messages or change the devices settings. A message with zero bytes can be used to change just the baudrate.</description>
      <field type="uint8_t" name="device" enum="SERIAL_CONTROL_DEV">Serial control device type.</field>
      <field type="uint8_t" name="flags" enum="SERIAL_CONTROL_FLAG">Bitmap of serial control flags.</field>
      <field type="uint16_t" name="timeout" units="ms">Timeout for reply data</field>
      <field type="uint32_t" name="baudrate" units="bits/s">Baudrate of transfer. Zero means no change.</field>
      <field type="uint8_t" name="count" units="bytes">how many bytes in this transfer</field>
      <field type="uint8_t[70]" name="data">serial data</field>
      <extensions/>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
    </message>
    <message id="127" name="GPS_RTK">
      <description>RTK GPS data. Gives information on the relative baseline calculation the GPS is reporting</description>
      <field type="uint32_t" name="time_last_baseline_ms" units="ms">Time since boot of last baseline message received.</field>
      <field type="uint8_t" name="rtk_receiver_id">Identification of connected RTK receiver.</field>
      <field type="uint16_t" name="wn">GPS Week Number of last baseline</field>
      <field type="uint32_t" name="tow" units="ms">GPS Time of Week of last baseline</field>
      <field type="uint8_t" name="rtk_health">GPS-specific health report for RTK data.</field>
      <field type="uint8_t" name="rtk_rate" units="Hz">Rate of baseline messages being received by GPS</field>
      <field type="uint8_t" name="nsats">Current number of sats used for RTK calculation.</field>
      <field type="uint8_t" name="baseline_coords_type" enum="RTK_BASELINE_COORDINATE_SYSTEM">Coordinate system of baseline</field>
      <field type="int32_t" name="baseline_a_mm" units="mm">Current baseline in ECEF x or NED north component.</field>
      <field type="int32_t" name="baseline_b_mm" units="mm">Current baseline in ECEF y or NED east component.</field>
      <field type="int32_t" name="baseline_c_mm" units="mm">Current baseline in ECEF z or NED down component.</field>
      <field type="uint32_t" name="accuracy">Current estimate of baseline accuracy.</field>
      <field type="int32_t" name="iar_num_hypotheses">Current number of integer ambiguity hypotheses.</field>
    </message>
    <message id="128" name="GPS2_RTK">
      <description>RTK GPS data. Gives information on the relative baseline calculation the GPS is reporting</description>
      <field type="uint32_t" name="time_last_baseline_ms" units="ms">Time since boot of last baseline message received.</field>
      <field type="uint8_t" name="rtk_receiver_id">Identification of connected RTK receiver.</field>
      <field type="uint16_t" name="wn">GPS Week Number of last baseline</field>
      <field type="uint32_t" name="tow" units="ms">GPS Time of Week of last baseline</field>
      <field type="uint8_t" name="rtk_health">GPS-specific health report for RTK data.</field>
      <field type="uint8_t" name="rtk_rate" units="Hz">Rate of baseline messages being received by GPS</field>
      <field type="uint8_t" name="nsats">Current number of sats used for RTK calculation.</field>
      <field type="uint8_t" name="baseline_coords_type" enum="RTK_BASELINE_COORDINATE_SYSTEM">Coordinate system of baseline</field>
      <field type="int32_t" name="baseline_a_mm" units="mm">Current baseline in ECEF x or NED north component.</field>
      <field type="int32_t" name="baseline_b_mm" units="mm">Current baseline in ECEF y or NED east component.</field>
      <field type="int32_t" name="baseline_c_mm" units="mm">Current baseline in ECEF z or NED down component.</field>
      <field type="uint32_t" name="accuracy">Current estimate of baseline accuracy.</field>
      <field type="int32_t" name="iar_num_hypotheses">Current number of integer ambiguity hypotheses.</field>
    </message>
    <message id="129" name="SCALED_IMU3">
      <description>The RAW IMU readings for 3rd 9DOF sensor setup. This message should contain the scaled values to the described units</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="int16_t" name="xacc" units="mG">X acceleration</field>
      <field type="int16_t" name="yacc" units="mG">Y acceleration</field>
      <field type="int16_t" name="zacc" units="mG">Z acceleration</field>
      <field type="int16_t" name="xgyro" units="mrad/s">Angular speed around X axis</field>
      <field type="int16_t" name="ygyro" units="mrad/s">Angular speed around Y axis</field>
      <field type="int16_t" name="zgyro" units="mrad/s">Angular speed around Z axis</field>
      <field type="int16_t" name="xmag" units="mgauss">X Magnetic field</field>
      <field type="int16_t" name="ymag" units="mgauss">Y Magnetic field</field>
      <field type="int16_t" name="zmag" units="mgauss">Z Magnetic field</field>
      <extensions/>
      <field type="int16_t" name="temperature" units="cdegC" invalid="0">Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).</field>
    </message>
    <message id="130" name="DATA_TRANSMISSION_HANDSHAKE">
      <description>Handshake message to initiate, control and stop image streaming when using the Image Transmission Protocol: https://mavlink.io/en/services/image_transmission.html.</description>
      <field type="uint8_t" name="type" enum="MAVLINK_DATA_STREAM_TYPE">Type of requested/acknowledged data.</field>
      <field type="uint32_t" name="size" units="bytes">total data size (set on ACK only).</field>
      <field type="uint16_t" name="width">Width of a matrix or image.</field>
      <field type="uint16_t" name="height">Height of a matrix or image.</field>
      <field type="uint16_t" name="packets">Number of packets being sent (set on ACK only).</field>
      <field type="uint8_t" name="payload" units="bytes">Payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on ACK only).</field>
      <field type="uint8_t" name="jpg_quality" units="%">JPEG quality. Values: [1-100].</field>
    </message>
    <message id="131" name="ENCAPSULATED_DATA">
      <description>Data packet for images sent using the Image Transmission Protocol: https://mavlink.io/en/services/image_transmission.html.</description>
      <field type="uint16_t" name="seqnr">sequence number (starting with 0 on every transmission)</field>
      <field type="uint8_t[253]" name="data">image data bytes</field>
    </message>
    <message id="132" name="DISTANCE_SENSOR">
      <description>Distance sensor information for an onboard rangefinder.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint16_t" name="min_distance" units="cm">Minimum distance the sensor can measure</field>
      <field type="uint16_t" name="max_distance" units="cm">Maximum distance the sensor can measure</field>
      <field type="uint16_t" name="current_distance" units="cm">Current distance reading</field>
      <field type="uint8_t" name="type" enum="MAV_DISTANCE_SENSOR">Type of distance sensor.</field>
      <field type="uint8_t" name="id" instance="true">Onboard ID of the sensor</field>
      <field type="uint8_t" name="orientation" enum="MAV_SENSOR_ORIENTATION">Direction the sensor faces. downward-facing: ROTATION_PITCH_270, upward-facing: ROTATION_PITCH_90, backward-facing: ROTATION_PITCH_180, forward-facing: ROTATION_NONE, left-facing: ROTATION_YAW_90, right-facing: ROTATION_YAW_270</field>
      <field type="uint8_t" name="covariance" units="cm^2" invalid="UINT8_MAX">Measurement variance. Max standard deviation is 6cm. UINT8_MAX if unknown.</field>
      <extensions/>
      <field type="float" name="horizontal_fov" units="rad" invalid="0">Horizontal Field of View (angle) where the distance measurement is valid and the field of view is known. Otherwise this is set to 0.</field>
      <field type="float" name="vertical_fov" units="rad" invalid="0">Vertical Field of View (angle) where the distance measurement is valid and the field of view is known. Otherwise this is set to 0.</field>
      <field type="float[4]" name="quaternion" invalid="[0]">Quaternion of the sensor orientation in vehicle body frame (w, x, y, z order, zero-rotation is 1, 0, 0, 0). Zero-rotation is along the vehicle body x-axis. This field is required if the orientation is set to MAV_SENSOR_ROTATION_CUSTOM. Set it to 0 if invalid."</field>
      <field type="uint8_t" name="signal_quality" units="%" invalid="0">Signal quality of the sensor. Specific to each sensor type, representing the relation of the signal strength with the target reflectivity, distance, size or aspect, but normalised as a percentage. 0 = unknown/unset signal quality, 1 = invalid signal, 100 = perfect signal.</field>
    </message>
    <message id="133" name="TERRAIN_REQUEST">
      <description>Request for terrain data and terrain status. See terrain protocol docs: https://mavlink.io/en/services/terrain.html</description>
      <field type="int32_t" name="lat" units="degE7">Latitude of SW corner of first grid</field>
      <field type="int32_t" name="lon" units="degE7">Longitude of SW corner of first grid</field>
      <field type="uint16_t" name="grid_spacing" units="m">Grid spacing</field>
      <field type="uint64_t" name="mask" print_format="0x%07x">Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)</field>
    </message>
    <message id="134" name="TERRAIN_DATA">
      <description>Terrain data sent from GCS. The lat/lon and grid_spacing must be the same as a lat/lon from a TERRAIN_REQUEST. See terrain protocol docs: https://mavlink.io/en/services/terrain.html</description>
      <field type="int32_t" name="lat" units="degE7">Latitude of SW corner of first grid</field>
      <field type="int32_t" name="lon" units="degE7">Longitude of SW corner of first grid</field>
      <field type="uint16_t" name="grid_spacing" units="m">Grid spacing</field>
      <field type="uint8_t" name="gridbit">bit within the terrain request mask</field>
      <field type="int16_t[16]" name="data" units="m">Terrain data MSL</field>
    </message>
    <message id="135" name="TERRAIN_CHECK">
      <description>Request that the vehicle report terrain height at the given location (expected response is a TERRAIN_REPORT). Used by GCS to check if vehicle has all terrain data needed for a mission.</description>
      <field type="int32_t" name="lat" units="degE7">Latitude</field>
      <field type="int32_t" name="lon" units="degE7">Longitude</field>
    </message>
    <message id="136" name="TERRAIN_REPORT">
      <description>Streamed from drone to report progress of terrain map download (initiated by TERRAIN_REQUEST), or sent as a response to a TERRAIN_CHECK request. See terrain protocol docs: https://mavlink.io/en/services/terrain.html</description>
      <field type="int32_t" name="lat" units="degE7">Latitude</field>
      <field type="int32_t" name="lon" units="degE7">Longitude</field>
      <field type="uint16_t" name="spacing">grid spacing (zero if terrain at this location unavailable)</field>
      <field type="float" name="terrain_height" units="m">Terrain height MSL</field>
      <field type="float" name="current_height" units="m">Current vehicle height above lat/lon terrain height</field>
      <field type="uint16_t" name="pending">Number of 4x4 terrain blocks waiting to be received or read from disk</field>
      <field type="uint16_t" name="loaded">Number of 4x4 terrain blocks in memory</field>
    </message>
    <message id="137" name="SCALED_PRESSURE2">
      <description>Barometer readings for 2nd barometer</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="press_abs" units="hPa">Absolute pressure</field>
      <field type="float" name="press_diff" units="hPa">Differential pressure</field>
      <field type="int16_t" name="temperature" units="cdegC">Absolute pressure temperature</field>
      <extensions/>
      <field type="int16_t" name="temperature_press_diff" units="cdegC" invalid="0">Differential pressure temperature (0, if not available). Report values of 0 (or 1) as 1 cdegC.</field>
    </message>
    <message id="138" name="ATT_POS_MOCAP">
      <description>Motion capture attitude and position</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float[4]" name="q">Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)</field>
      <field type="float" name="x" units="m">X position (NED)</field>
      <field type="float" name="y" units="m">Y position (NED)</field>
      <field type="float" name="z" units="m">Z position (NED)</field>
      <extensions/>
      <field type="float[21]" name="covariance" invalid="[NaN:]">Row-major representation of a pose 6x6 cross-covariance matrix upper right triangle (states: x, y, z, roll, pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If unknown, assign NaN value to first element in the array.</field>
    </message>
    <message id="139" name="SET_ACTUATOR_CONTROL_TARGET">
      <description>Set the vehicle attitude and body angular rates.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="group_mlx">Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use this field to difference between instances.</field>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="float[8]" name="controls">Actuator controls. Normed to -1..+1 where 0 is neutral position. Throttle for single rotation direction motors is 0..1, negative range for reverse direction. Standard mapping for attitude controls (group 0): (index 0-7): roll, pitch, yaw, throttle, flaps, spoilers, airbrakes, landing gear. Load a pass-through mixer to repurpose them as generic outputs.</field>
    </message>
    <message id="140" name="ACTUATOR_CONTROL_TARGET">
      <description>Set the vehicle attitude and body angular rates.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="group_mlx">Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use this field to difference between instances.</field>
      <field type="float[8]" name="controls">Actuator controls. Normed to -1..+1 where 0 is neutral position. Throttle for single rotation direction motors is 0..1, negative range for reverse direction. Standard mapping for attitude controls (group 0): (index 0-7): roll, pitch, yaw, throttle, flaps, spoilers, airbrakes, landing gear. Load a pass-through mixer to repurpose them as generic outputs.</field>
    </message>
    <message id="141" name="ALTITUDE">
      <description>The current system altitude.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="altitude_monotonic" units="m">This altitude measure is initialized on system boot and monotonic (it is never reset, but represents the local altitude change). The only guarantee on this field is that it will never be reset and is consistent within a flight. The recommended value for this field is the uncorrected barometric altitude at boot time. This altitude will also drift and vary between flights.</field>
      <field type="float" name="altitude_amsl" units="m">This altitude measure is strictly above mean sea level and might be non-monotonic (it might reset on events like GPS lock or when a new QNH value is set). It should be the altitude to which global altitude waypoints are compared to. Note that it is *not* the GPS altitude, however, most GPS modules already output MSL by default and not the WGS84 altitude.</field>
      <field type="float" name="altitude_local" units="m">This is the local altitude in the local coordinate frame. It is not the altitude above home, but in reference to the coordinate origin (0, 0, 0). It is up-positive.</field>
      <field type="float" name="altitude_relative" units="m">This is the altitude above the home position. It resets on each change of the current home position.</field>
      <field type="float" name="altitude_terrain" units="m">This is the altitude above terrain. It might be fed by a terrain database or an altimeter. Values smaller than -1000 should be interpreted as unknown.</field>
      <field type="float" name="bottom_clearance" units="m">This is not the altitude, but the clear space below the system according to the fused clearance estimate. It generally should max out at the maximum range of e.g. the laser altimeter. It is generally a moving target. A negative value indicates no measurement available.</field>
    </message>
    <message id="142" name="RESOURCE_REQUEST">
      <description>The autopilot is requesting a resource (file, binary, other type of data)</description>
      <field type="uint8_t" name="request_id">Request ID. This ID should be re-used when sending back URI contents</field>
      <field type="uint8_t" name="uri_type">The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary</field>
      <field type="uint8_t[120]" name="uri">The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends on the URI type enum)</field>
      <field type="uint8_t" name="transfer_type">The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream.</field>
      <field type="uint8_t[120]" name="storage">The storage path the autopilot wants the URI to be stored in. Will only be valid if the transfer_type has a storage associated (e.g. MAVLink FTP).</field>
    </message>
    <message id="143" name="SCALED_PRESSURE3">
      <description>Barometer readings for 3rd barometer</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="press_abs" units="hPa">Absolute pressure</field>
      <field type="float" name="press_diff" units="hPa">Differential pressure</field>
      <field type="int16_t" name="temperature" units="cdegC">Absolute pressure temperature</field>
      <extensions/>
      <field type="int16_t" name="temperature_press_diff" units="cdegC" invalid="0">Differential pressure temperature (0, if not available). Report values of 0 (or 1) as 1 cdegC.</field>
    </message>
    <message id="144" name="FOLLOW_TARGET">
      <description>Current motion information from a designated system</description>
      <field type="uint64_t" name="timestamp" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="est_capabilities">bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3)</field>
      <field type="int32_t" name="lat" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="lon" units="degE7">Longitude (WGS84)</field>
      <field type="float" name="alt" units="m">Altitude (MSL)</field>
      <field type="float[3]" name="vel" units="m/s" invalid="[0]">target velocity (0,0,0) for unknown</field>
      <field type="float[3]" name="acc" units="m/s/s" invalid="[0]">linear target acceleration (0,0,0) for unknown</field>
      <field type="float[4]" name="attitude_q" invalid="[0]">(0 0 0 0 for unknown)</field>
      <field type="float[3]" name="rates" invalid="[0]">(0 0 0 for unknown)</field>
      <field type="float[3]" name="position_cov">eph epv</field>
      <field type="uint64_t" name="custom_state">button states or switches of a tracker device</field>
    </message>
    <message id="146" name="CONTROL_SYSTEM_STATE">
      <description>The smoothed, monotonic system state used to feed the control loops of the system.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="x_acc" units="m/s/s">X acceleration in body frame</field>
      <field type="float" name="y_acc" units="m/s/s">Y acceleration in body frame</field>
      <field type="float" name="z_acc" units="m/s/s">Z acceleration in body frame</field>
      <field type="float" name="x_vel" units="m/s">X velocity in body frame</field>
      <field type="float" name="y_vel" units="m/s">Y velocity in body frame</field>
      <field type="float" name="z_vel" units="m/s">Z velocity in body frame</field>
      <field type="float" name="x_pos" units="m">X position in local frame</field>
      <field type="float" name="y_pos" units="m">Y position in local frame</field>
      <field type="float" name="z_pos" units="m">Z position in local frame</field>
      <field type="float" name="airspeed" units="m/s" invalid="-1">Airspeed, set to -1 if unknown</field>
      <field type="float[3]" name="vel_variance">Variance of body velocity estimate</field>
      <field type="float[3]" name="pos_variance">Variance in local position</field>
      <field type="float[4]" name="q">The attitude, represented as Quaternion</field>
      <field type="float" name="roll_rate" units="rad/s">Angular rate in roll axis</field>
      <field type="float" name="pitch_rate" units="rad/s">Angular rate in pitch axis</field>
      <field type="float" name="yaw_rate" units="rad/s">Angular rate in yaw axis</field>
    </message>
    <message id="147" name="BATTERY_STATUS">
      <description>Battery information. Updates GCS with flight controller battery status. Smart batteries also use this message, but may additionally send BATTERY_INFO.</description>
      <field type="uint8_t" name="id" instance="true">Battery ID</field>
      <field type="uint8_t" name="battery_function" enum="MAV_BATTERY_FUNCTION">Function of the battery</field>
      <field type="uint8_t" name="type" enum="MAV_BATTERY_TYPE">Type (chemistry) of the battery</field>
      <field type="int16_t" name="temperature" units="cdegC" invalid="INT16_MAX">Temperature of the battery. INT16_MAX for unknown temperature.</field>
      <field type="uint16_t[10]" name="voltages" units="mV" invalid="[UINT16_MAX]">Battery voltage of cells 1 to 10 (see voltages_ext for cells 11-14). Cells in this field above the valid cell count for this battery should have the UINT16_MAX value. If individual cell voltages are unknown or not measured for this battery, then the overall battery voltage should be filled in cell 0, with all others set to UINT16_MAX. If the voltage of the battery is greater than (UINT16_MAX - 1), then cell 0 should be set to (UINT16_MAX - 1), and cell 1 to the remaining voltage. This can be extended to multiple cells if the total voltage is greater than 2 * (UINT16_MAX - 1).</field>
      <field type="int16_t" name="current_battery" units="cA" invalid="-1">Battery current, -1: autopilot does not measure the current</field>
      <field type="int32_t" name="current_consumed" units="mAh" invalid="-1">Consumed charge, -1: autopilot does not provide consumption estimate</field>
      <field type="int32_t" name="energy_consumed" units="hJ" invalid="-1">Consumed energy, -1: autopilot does not provide energy consumption estimate</field>
      <field type="int8_t" name="battery_remaining" units="%" invalid="-1">Remaining battery energy. Values: [0-100], -1: autopilot does not estimate the remaining battery.</field>
      <extensions/>
      <field type="int32_t" name="time_remaining" units="s" invalid="0">Remaining battery time, 0: autopilot does not provide remaining battery time estimate</field>
      <field type="uint8_t" name="charge_state" enum="MAV_BATTERY_CHARGE_STATE">State for extent of discharge, provided by autopilot for warning or external reactions</field>
      <field type="uint16_t[4]" name="voltages_ext" units="mV" invalid="[0]">Battery voltages for cells 11 to 14. Cells above the valid cell count for this battery should have a value of 0, where zero indicates not supported (note, this is different than for the voltages field and allows empty byte truncation). If the measured value is 0 then 1 should be sent instead.</field>
      <field type="uint8_t" name="mode" enum="MAV_BATTERY_MODE">Battery mode. Default (0) is that battery mode reporting is not supported or battery is in normal-use mode.</field>
      <field type="uint32_t" name="fault_bitmask" enum="MAV_BATTERY_FAULT">Fault/health indications. These should be set when charge_state is MAV_BATTERY_CHARGE_STATE_FAILED or MAV_BATTERY_CHARGE_STATE_UNHEALTHY (if not, fault reporting is not supported).</field>
    </message>
    <message id="148" name="AUTOPILOT_VERSION">
      <description>Version and capability of autopilot software. This should be emitted in response to a request with MAV_CMD_REQUEST_MESSAGE.</description>
      <field type="uint64_t" name="capabilities" enum="MAV_PROTOCOL_CAPABILITY">Bitmap of capabilities</field>
      <field type="uint32_t" name="flight_sw_version">Firmware version number.
        The field must be encoded as 4 bytes, where each byte (shown from MSB to LSB) is part of a semantic version: (major) (minor) (patch) (FIRMWARE_VERSION_TYPE).
      </field>
      <field type="uint32_t" name="middleware_sw_version">Middleware version number</field>
      <field type="uint32_t" name="os_sw_version">Operating system version number</field>
      <field type="uint32_t" name="board_version">HW / board version (last 8 bits should be silicon ID, if any). The first 16 bits of this field specify https://github.com/PX4/PX4-Bootloader/blob/master/board_types.txt</field>
      <field type="uint8_t[8]" name="flight_custom_version">Custom version field, commonly the first 8 bytes of the git hash. This is not an unique identifier, but should allow to identify the commit using the main version number even for very large code bases.</field>
      <field type="uint8_t[8]" name="middleware_custom_version">Custom version field, commonly the first 8 bytes of the git hash. This is not an unique identifier, but should allow to identify the commit using the main version number even for very large code bases.</field>
      <field type="uint8_t[8]" name="os_custom_version">Custom version field, commonly the first 8 bytes of the git hash. This is not an unique identifier, but should allow to identify the commit using the main version number even for very large code bases.</field>
      <field type="uint16_t" name="vendor_id">ID of the board vendor</field>
      <field type="uint16_t" name="product_id">ID of the product</field>
      <field type="uint64_t" name="uid">UID if provided by hardware (see uid2)</field>
      <extensions/>
      <field type="uint8_t[18]" name="uid2">UID if provided by hardware (supersedes the uid field. If this is non-zero, use this field, otherwise use uid)</field>
    </message>
    <message id="149" name="LANDING_TARGET">
      <description>The location of a landing target. See: https://mavlink.io/en/services/landing_target.html</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="target_num">The ID of the target if multiple targets are present</field>
      <field type="uint8_t" name="frame" enum="MAV_FRAME">Coordinate frame used for following fields.</field>
      <field type="float" name="angle_x" units="rad">X-axis angular offset of the target from the center of the image</field>
      <field type="float" name="angle_y" units="rad">Y-axis angular offset of the target from the center of the image</field>
      <field type="float" name="distance" units="m">Distance to the target from the vehicle</field>
      <field type="float" name="size_x" units="rad">Size of target along x-axis</field>
      <field type="float" name="size_y" units="rad">Size of target along y-axis</field>
      <extensions/>
      <field type="float" name="x" units="m">X Position of the landing target in MAV_FRAME</field>
      <field type="float" name="y" units="m">Y Position of the landing target in MAV_FRAME</field>
      <field type="float" name="z" units="m">Z Position of the landing target in MAV_FRAME</field>
      <field type="float[4]" name="q">Quaternion of landing target orientation (w, x, y, z order, zero-rotation is 1, 0, 0, 0)</field>
      <field type="uint8_t" name="type" enum="LANDING_TARGET_TYPE">Type of landing target</field>
      <field type="uint8_t" name="position_valid" invalid="0">Boolean indicating whether the position fields (x, y, z, q, type) contain valid target position information (valid: 1, invalid: 0). Default is 0 (invalid).</field>
    </message>
    <!-- imported from ardupilotmega.xml (2019) -->
    <message id="162" name="FENCE_STATUS">
      <description>Status of geo-fencing. Sent in extended status stream when fencing enabled.</description>
      <field type="uint8_t" name="breach_status">Breach status (0 if currently inside fence, 1 if outside).</field>
      <field type="uint16_t" name="breach_count">Number of fence breaches.</field>
      <field type="uint8_t" name="breach_type" enum="FENCE_BREACH">Last breach type.</field>
      <field type="uint32_t" name="breach_time" units="ms">Time (since boot) of last breach.</field>
      <extensions/>
      <field type="uint8_t" name="breach_mitigation" enum="FENCE_MITIGATE">Active action to prevent fence breach</field>
    </message>
    <!-- MESSAGE IDs 180 - 229: Space for custom messages in individual projectname_messages.xml files -->
    <!-- 192 MAG_CAL_REPORT imported from ardupilotmega.xml -->
    <message id="192" name="MAG_CAL_REPORT">
      <description>Reports results of completed compass calibration. Sent until MAG_CAL_ACK received.</description>
      <field type="uint8_t" name="compass_id" instance="true">Compass being calibrated.</field>
      <field type="uint8_t" name="cal_mask">Bitmask of compasses being calibrated.</field>
      <field type="uint8_t" name="cal_status" enum="MAG_CAL_STATUS">Calibration Status.</field>
      <field type="uint8_t" name="autosaved">0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters.</field>
      <field type="float" name="fitness" units="mgauss">RMS milligauss residuals.</field>
      <field type="float" name="ofs_x">X offset.</field>
      <field type="float" name="ofs_y">Y offset.</field>
      <field type="float" name="ofs_z">Z offset.</field>
      <field type="float" name="diag_x">X diagonal (matrix 11).</field>
      <field type="float" name="diag_y">Y diagonal (matrix 22).</field>
      <field type="float" name="diag_z">Z diagonal (matrix 33).</field>
      <field type="float" name="offdiag_x">X off-diagonal (matrix 12 and 21).</field>
      <field type="float" name="offdiag_y">Y off-diagonal (matrix 13 and 31).</field>
      <field type="float" name="offdiag_z">Z off-diagonal (matrix 32 and 23).</field>
      <extensions/>
      <field type="float" name="orientation_confidence">Confidence in orientation (higher is better).</field>
      <field type="uint8_t" name="old_orientation" enum="MAV_SENSOR_ORIENTATION">orientation before calibration.</field>
      <field type="uint8_t" name="new_orientation" enum="MAV_SENSOR_ORIENTATION">orientation after calibration.</field>
      <field type="float" name="scale_factor">field radius correction factor</field>
    </message>
    <!-- 225 EFI_STATUS imported from ardupilotmega.xml -->
    <message id="225" name="EFI_STATUS">
      <description>EFI status output</description>
      <field type="uint8_t" name="health">EFI health status</field>
      <field type="float" name="ecu_index">ECU index</field>
      <field type="float" name="rpm">RPM</field>
      <field type="float" name="fuel_consumed" units="cm^3">Fuel consumed</field>
      <field type="float" name="fuel_flow" units="cm^3/min">Fuel flow rate</field>
      <field type="float" name="engine_load" units="%">Engine load</field>
      <field type="float" name="throttle_position" units="%">Throttle position</field>
      <field type="float" name="spark_dwell_time" units="ms">Spark dwell time</field>
      <field type="float" name="barometric_pressure" units="kPa">Barometric pressure</field>
      <field type="float" name="intake_manifold_pressure" units="kPa">Intake manifold pressure(</field>
      <field type="float" name="intake_manifold_temperature" units="degC">Intake manifold temperature</field>
      <field type="float" name="cylinder_head_temperature" units="degC">Cylinder head temperature</field>
      <field type="float" name="ignition_timing" units="deg">Ignition timing (Crank angle degrees)</field>
      <field type="float" name="injection_time" units="ms">Injection time</field>
      <field type="float" name="exhaust_gas_temperature" units="degC">Exhaust gas temperature</field>
      <field type="float" name="throttle_out" units="%">Output throttle</field>
      <field type="float" name="pt_compensation">Pressure/temperature compensation</field>
      <extensions/>
      <field type="float" name="ignition_voltage" units="V">Supply voltage to EFI sparking system.  Zero in this value means "unknown", so if the supply voltage really is zero volts use 0.0001 instead.</field>
      <field type="float" name="fuel_pressure" units="kPa">Fuel pressure. Zero in this value means "unknown", so if the fuel pressure really is zero kPa use 0.0001 instead.</field>
    </message>
    <!-- MESSAGE IDs 180 - 229: Space for custom messages in individual projectname_messages.xml files -->
    <message id="230" name="ESTIMATOR_STATUS">
      <description>Estimator status message including flags, innovation test ratios and estimated accuracies. The flags message is an integer bitmask containing information on which EKF outputs are valid. See the ESTIMATOR_STATUS_FLAGS enum definition for further information. The innovation test ratios show the magnitude of the sensor innovation divided by the innovation check threshold. Under normal operation the innovation test ratios should be below 0.5 with occasional values up to 1.0. Values greater than 1.0 should be rare under normal operation and indicate that a measurement has been rejected by the filter. The user should be notified if an innovation test ratio greater than 1.0 is recorded. Notifications for values in the range between 0.5 and 1.0 should be optional and controllable by the user.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint16_t" name="flags" enum="ESTIMATOR_STATUS_FLAGS">Bitmap indicating which EKF outputs are valid.</field>
      <field type="float" name="vel_ratio">Velocity innovation test ratio</field>
      <field type="float" name="pos_horiz_ratio">Horizontal position innovation test ratio</field>
      <field type="float" name="pos_vert_ratio">Vertical position innovation test ratio</field>
      <field type="float" name="mag_ratio">Magnetometer innovation test ratio</field>
      <field type="float" name="hagl_ratio">Height above terrain innovation test ratio</field>
      <field type="float" name="tas_ratio">True airspeed innovation test ratio</field>
      <field type="float" name="pos_horiz_accuracy" units="m">Horizontal position 1-STD accuracy relative to the EKF local origin</field>
      <field type="float" name="pos_vert_accuracy" units="m">Vertical position 1-STD accuracy relative to the EKF local origin</field>
    </message>
    <message id="231" name="WIND_COV">
      <description>Wind estimate from vehicle. Note that despite the name, this message does not actually contain any covariances but instead variability and accuracy fields in terms of standard deviation (1-STD).</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="wind_x" units="m/s" invalid="NaN">Wind in North (NED) direction (NAN if unknown)</field>
      <field type="float" name="wind_y" units="m/s" invalid="NaN">Wind in East (NED) direction (NAN if unknown)</field>
      <field type="float" name="wind_z" units="m/s" invalid="NaN">Wind in down (NED) direction (NAN if unknown)</field>
      <field type="float" name="var_horiz" units="m/s" invalid="NaN">Variability of wind in XY, 1-STD estimated from a 1 Hz lowpassed wind estimate (NAN if unknown)</field>
      <field type="float" name="var_vert" units="m/s" invalid="NaN">Variability of wind in Z, 1-STD estimated from a 1 Hz lowpassed wind estimate (NAN if unknown)</field>
      <field type="float" name="wind_alt" units="m" invalid="NaN">Altitude (MSL) that this measurement was taken at (NAN if unknown)</field>
      <field type="float" name="horiz_accuracy" units="m/s" invalid="0">Horizontal speed 1-STD accuracy (0 if unknown)</field>
      <field type="float" name="vert_accuracy" units="m/s" invalid="0">Vertical speed 1-STD accuracy (0 if unknown)</field>
    </message>
    <message id="232" name="GPS_INPUT">
      <description>GPS sensor input message.  This is a raw sensor value sent by the GPS. This is NOT the global position estimate of the system.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="gps_id" instance="true">ID of the GPS for multiple GPS inputs</field>
      <field type="uint16_t" name="ignore_flags" enum="GPS_INPUT_IGNORE_FLAGS">Bitmap indicating which GPS input flags fields to ignore.  All other fields must be provided.</field>
      <field type="uint32_t" name="time_week_ms" units="ms">GPS time (from start of GPS week)</field>
      <field type="uint16_t" name="time_week">GPS week number</field>
      <field type="uint8_t" name="fix_type">0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK</field>
      <field type="int32_t" name="lat" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="lon" units="degE7">Longitude (WGS84)</field>
      <field type="float" name="alt" units="m">Altitude (MSL). Positive for up.</field>
      <field type="float" name="hdop" invalid="UINT16_MAX">GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX</field>
      <field type="float" name="vdop" invalid="UINT16_MAX">GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX</field>
      <field type="float" name="vn" units="m/s">GPS velocity in north direction in earth-fixed NED frame</field>
      <field type="float" name="ve" units="m/s">GPS velocity in east direction in earth-fixed NED frame</field>
      <field type="float" name="vd" units="m/s">GPS velocity in down direction in earth-fixed NED frame</field>
      <field type="float" name="speed_accuracy" units="m/s">GPS speed accuracy</field>
      <field type="float" name="horiz_accuracy" units="m">GPS horizontal accuracy</field>
      <field type="float" name="vert_accuracy" units="m">GPS vertical accuracy</field>
      <field type="uint8_t" name="satellites_visible">Number of satellites visible.</field>
      <extensions/>
      <field type="uint16_t" name="yaw" units="cdeg">Yaw of vehicle relative to Earth's North, zero means not available, use 36000 for north</field>
    </message>
    <message id="233" name="GPS_RTCM_DATA">
      <description>RTCM message for injecting into the onboard GPS (used for DGPS)</description>
      <field type="uint8_t" name="flags">LSB: 1 means message is fragmented, next 2 bits are the fragment ID, the remaining 5 bits are used for the sequence ID. Messages are only to be flushed to the GPS when the entire message has been reconstructed on the autopilot. The fragment ID specifies which order the fragments should be assembled into a buffer, while the sequence ID is used to detect a mismatch between different buffers. The buffer is considered fully reconstructed when either all 4 fragments are present, or all the fragments before the first fragment with a non full payload is received. This management is used to ensure that normal GPS operation doesn't corrupt RTCM data, and to recover from a unreliable transport delivery order.</field>
      <field type="uint8_t" name="len" units="bytes">data length</field>
      <field type="uint8_t[180]" name="data">RTCM message (may be fragmented)</field>
    </message>
    <message id="234" name="HIGH_LATENCY">
      <deprecated since="2020-10" replaced_by="HIGH_LATENCY2"/>
      <description>Message appropriate for high latency connections like Iridium</description>
      <field type="uint8_t" name="base_mode" enum="MAV_MODE_FLAG">Bitmap of enabled system modes.</field>
      <field type="uint32_t" name="custom_mode">A bitfield for use for autopilot-specific flags.</field>
      <field type="uint8_t" name="landed_state" enum="MAV_LANDED_STATE">The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown.</field>
      <field type="int16_t" name="roll" units="cdeg">roll</field>
      <field type="int16_t" name="pitch" units="cdeg">pitch</field>
      <field type="uint16_t" name="heading" units="cdeg">heading</field>
      <field type="int8_t" name="throttle" units="%">throttle (percentage)</field>
      <field type="int16_t" name="heading_sp" units="cdeg">heading setpoint</field>
      <field type="int32_t" name="latitude" units="degE7">Latitude</field>
      <field type="int32_t" name="longitude" units="degE7">Longitude</field>
      <field type="int16_t" name="altitude_amsl" units="m">Altitude above mean sea level</field>
      <field type="int16_t" name="altitude_sp" units="m">Altitude setpoint relative to the home position</field>
      <field type="uint8_t" name="airspeed" units="m/s">airspeed</field>
      <field type="uint8_t" name="airspeed_sp" units="m/s">airspeed setpoint</field>
      <field type="uint8_t" name="groundspeed" units="m/s">groundspeed</field>
      <field type="int8_t" name="climb_rate" units="m/s">climb rate</field>
      <field type="uint8_t" name="gps_nsat" invalid="UINT8_MAX">Number of satellites visible. If unknown, set to UINT8_MAX</field>
      <field type="uint8_t" name="gps_fix_type" enum="GPS_FIX_TYPE">GPS Fix type.</field>
      <field type="uint8_t" name="battery_remaining" units="%">Remaining battery (percentage)</field>
      <field type="int8_t" name="temperature" units="degC">Autopilot temperature (degrees C)</field>
      <field type="int8_t" name="temperature_air" units="degC">Air temperature (degrees C) from airspeed sensor</field>
      <field type="uint8_t" name="failsafe">failsafe (each bit represents a failsafe where 0=ok, 1=failsafe active (bit0:RC, bit1:batt, bit2:GPS, bit3:GCS, bit4:fence)</field>
      <field type="uint8_t" name="wp_num">current waypoint number</field>
      <field type="uint16_t" name="wp_distance" units="m">distance to target</field>
    </message>
    <message id="235" name="HIGH_LATENCY2">
      <description>Message appropriate for high latency connections like Iridium (version 2)</description>
      <field type="uint32_t" name="timestamp" units="ms">Timestamp (milliseconds since boot or Unix epoch)</field>
      <field type="uint8_t" name="type" enum="MAV_TYPE">Type of the MAV (quadrotor, helicopter, etc.)</field>
      <field type="uint8_t" name="autopilot" enum="MAV_AUTOPILOT">Autopilot type / class. Use MAV_AUTOPILOT_INVALID for components that are not flight controllers.</field>
      <field type="uint16_t" name="custom_mode">A bitfield for use for autopilot-specific flags (2 byte version).</field>
      <field type="int32_t" name="latitude" units="degE7">Latitude</field>
      <field type="int32_t" name="longitude" units="degE7">Longitude</field>
      <field type="int16_t" name="altitude" units="m">Altitude above mean sea level</field>
      <field type="int16_t" name="target_altitude" units="m">Altitude setpoint</field>
      <field type="uint8_t" name="heading" units="deg/2">Heading</field>
      <field type="uint8_t" name="target_heading" units="deg/2">Heading setpoint</field>
      <field type="uint16_t" name="target_distance" units="dam">Distance to target waypoint or position</field>
      <field type="uint8_t" name="throttle" units="%">Throttle</field>
      <field type="uint8_t" name="airspeed" units="m/s*5">Airspeed</field>
      <field type="uint8_t" name="airspeed_sp" units="m/s*5">Airspeed setpoint</field>
      <field type="uint8_t" name="groundspeed" units="m/s*5">Groundspeed</field>
      <field type="uint8_t" name="windspeed" units="m/s*5">Windspeed</field>
      <field type="uint8_t" name="wind_heading" units="deg/2">Wind heading</field>
      <field type="uint8_t" name="eph" units="dm">Maximum error horizontal position since last message</field>
      <field type="uint8_t" name="epv" units="dm">Maximum error vertical position since last message</field>
      <field type="int8_t" name="temperature_air" units="degC">Air temperature</field>
      <field type="int8_t" name="climb_rate" units="dm/s">Maximum climb rate magnitude since last message</field>
      <field type="int8_t" name="battery" units="%" invalid="-1">Battery level (-1 if field not provided).</field>
      <field type="uint16_t" name="wp_num">Current waypoint number</field>
      <field type="uint16_t" name="failure_flags" enum="HL_FAILURE_FLAG">Bitmap of failure flags.</field>
      <field type="int8_t" name="custom0">Field for custom payload.</field>
      <field type="int8_t" name="custom1">Field for custom payload.</field>
      <field type="int8_t" name="custom2">Field for custom payload.</field>
    </message>
    <message id="241" name="VIBRATION">
      <description>Vibration levels and accelerometer clipping</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="vibration_x">Vibration levels on X-axis</field>
      <field type="float" name="vibration_y">Vibration levels on Y-axis</field>
      <field type="float" name="vibration_z">Vibration levels on Z-axis</field>
      <field type="uint32_t" name="clipping_0">first accelerometer clipping count</field>
      <field type="uint32_t" name="clipping_1">second accelerometer clipping count</field>
      <field type="uint32_t" name="clipping_2">third accelerometer clipping count</field>
    </message>
    <message id="242" name="HOME_POSITION">
      <description>
	Contains the home position.
	The home position is the default position that the system will return to and land on.
	The position must be set automatically by the system during the takeoff, and may also be explicitly set using MAV_CMD_DO_SET_HOME.
	The global and local positions encode the position in the respective coordinate frames, while the q parameter encodes the orientation of the surface.
	Under normal conditions it describes the heading and terrain slope, which can be used by the aircraft to adjust the approach.
	The approach 3D vector describes the point to which the system should fly in normal flight mode and then perform a landing sequence along the vector.
        Note: this message can be requested by sending the MAV_CMD_REQUEST_MESSAGE with param1=242 (or the deprecated MAV_CMD_GET_HOME_POSITION command).
      </description>
      <field type="int32_t" name="latitude" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="longitude" units="degE7">Longitude (WGS84)</field>
      <field type="int32_t" name="altitude" units="mm">Altitude (MSL). Positive for up.</field>
      <field type="float" name="x" units="m">Local X position of this position in the local coordinate frame (NED)</field>
      <field type="float" name="y" units="m">Local Y position of this position in the local coordinate frame (NED)</field>
      <field type="float" name="z" units="m">Local Z position of this position in the local coordinate frame (NED: positive "down")</field>
      <field type="float[4]" name="q" invalid="[NaN]">
        Quaternion indicating world-to-surface-normal and heading transformation of the takeoff position.
        Used to indicate the heading and slope of the ground.
        All fields should be set to NaN if an accurate quaternion for both heading and surface slope cannot be supplied.
      </field>
      <field type="float" name="approach_x" units="m">Local X position of the end of the approach vector. Multicopters should set this position based on their takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened from the threshold / touchdown zone.</field>
      <field type="float" name="approach_y" units="m">Local Y position of the end of the approach vector. Multicopters should set this position based on their takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened from the threshold / touchdown zone.</field>
      <field type="float" name="approach_z" units="m">Local Z position of the end of the approach vector. Multicopters should set this position based on their takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened from the threshold / touchdown zone.</field>
      <extensions/>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
    </message>
    <message id="243" name="SET_HOME_POSITION">
      <deprecated since="2022-02" replaced_by="MAV_CMD_DO_SET_HOME">The command protocol version (MAV_CMD_DO_SET_HOME) allows a GCS to detect when setting the home position has failed.</deprecated>
      <description>
        Sets the home position.
	The home position is the default position that the system will return to and land on.
        The position is set automatically by the system during the takeoff (and may also be set using this message).
        The global and local positions encode the position in the respective coordinate frames, while the q parameter encodes the orientation of the surface.
        Under normal conditions it describes the heading and terrain slope, which can be used by the aircraft to adjust the approach.
        The approach 3D vector describes the point to which the system should fly in normal flight mode and then perform a landing sequence along the vector.
        Note: the current home position may be emitted in a HOME_POSITION message on request (using MAV_CMD_REQUEST_MESSAGE with param1=242).
      </description>
      <field type="uint8_t" name="target_system">System ID.</field>
      <field type="int32_t" name="latitude" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="longitude" units="degE7">Longitude (WGS84)</field>
      <field type="int32_t" name="altitude" units="mm">Altitude (MSL). Positive for up.</field>
      <field type="float" name="x" units="m">Local X position of this position in the local coordinate frame (NED)</field>
      <field type="float" name="y" units="m">Local Y position of this position in the local coordinate frame (NED)</field>
      <field type="float" name="z" units="m">Local Z position of this position in the local coordinate frame (NED: positive "down")</field>
      <field type="float[4]" name="q">World to surface normal and heading transformation of the takeoff position. Used to indicate the heading and slope of the ground</field>
      <field type="float" name="approach_x" units="m">Local X position of the end of the approach vector. Multicopters should set this position based on their takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened from the threshold / touchdown zone.</field>
      <field type="float" name="approach_y" units="m">Local Y position of the end of the approach vector. Multicopters should set this position based on their takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened from the threshold / touchdown zone.</field>
      <field type="float" name="approach_z" units="m">Local Z position of the end of the approach vector. Multicopters should set this position based on their takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened from the threshold / touchdown zone.</field>
      <extensions/>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
    </message>
    <message id="244" name="MESSAGE_INTERVAL">
      <description>
        The interval between messages for a particular MAVLink message ID.
        This message is sent in response to the MAV_CMD_REQUEST_MESSAGE command with param1=244 (this message) and param2=message_id (the id of the message for which the interval is required).
	It may also be sent in response to MAV_CMD_GET_MESSAGE_INTERVAL.
	This interface replaces DATA_STREAM.</description>
      <field type="uint16_t" name="message_id">The ID of the requested MAVLink message. v1.0 is limited to 254 messages.</field>
      <field type="int32_t" name="interval_us" units="us">The interval between two messages. A value of -1 indicates this stream is disabled, 0 indicates it is not available, &gt; 0 indicates the interval at which it is sent.</field>
    </message>
    <message id="245" name="EXTENDED_SYS_STATE">
      <description>Provides state for additional features</description>
      <field type="uint8_t" name="vtol_state" enum="MAV_VTOL_STATE">The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration.</field>
      <field type="uint8_t" name="landed_state" enum="MAV_LANDED_STATE">The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown.</field>
    </message>
    <message id="246" name="ADSB_VEHICLE">
      <description>The location and information of an ADSB vehicle</description>
      <field type="uint32_t" name="ICAO_address">ICAO address</field>
      <field type="int32_t" name="lat" units="degE7">Latitude</field>
      <field type="int32_t" name="lon" units="degE7">Longitude</field>
      <field type="uint8_t" name="altitude_type" enum="ADSB_ALTITUDE_TYPE">ADSB altitude type.</field>
      <field type="int32_t" name="altitude" units="mm">Altitude(ASL)</field>
      <field type="uint16_t" name="heading" units="cdeg">Course over ground</field>
      <field type="uint16_t" name="hor_velocity" units="cm/s">The horizontal velocity</field>
      <field type="int16_t" name="ver_velocity" units="cm/s">The vertical velocity. Positive is up</field>
      <field type="char[9]" name="callsign">The callsign, 8+null</field>
      <field type="uint8_t" name="emitter_type" enum="ADSB_EMITTER_TYPE">ADSB emitter type.</field>
      <field type="uint8_t" name="tslc" units="s">Time since last communication in seconds</field>
      <field type="uint16_t" name="flags" enum="ADSB_FLAGS">Bitmap to indicate various statuses including valid data fields</field>
      <field type="uint16_t" name="squawk">Squawk code. Note that the code is in decimal: e.g. 7700 (general emergency) is encoded as binary 0b0001_1110_0001_0100, not(!) as 0b0000_111_111_000_000</field>
    </message>
    <message id="247" name="COLLISION">
      <description>Information about a potential collision</description>
      <field type="uint8_t" name="src" enum="MAV_COLLISION_SRC">Collision data source</field>
      <field type="uint32_t" name="id">Unique identifier, domain based on src field</field>
      <field type="uint8_t" name="action" enum="MAV_COLLISION_ACTION">Action that is being taken to avoid this collision</field>
      <field type="uint8_t" name="threat_level" enum="MAV_COLLISION_THREAT_LEVEL">How concerned the aircraft is about this collision</field>
      <field type="float" name="time_to_minimum_delta" units="s">Estimated time until collision occurs</field>
      <field type="float" name="altitude_minimum_delta" units="m">Closest vertical distance between vehicle and object</field>
      <field type="float" name="horizontal_minimum_delta" units="m">Closest horizontal distance between vehicle and object</field>
    </message>
    <message id="248" name="V2_EXTENSION">
      <description>Message implementing parts of the V2 payload specs in V1 frames for transitional support.</description>
      <field type="uint8_t" name="target_network">Network ID (0 for broadcast)</field>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast)</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast)</field>
      <field type="uint16_t" name="message_type">A code that identifies the software component that understands this message (analogous to USB device classes or mime type strings). If this code is less than 32768, it is considered a 'registered' protocol extension and the corresponding entry should be added to https://github.com/mavlink/mavlink/definition_files/extension_message_ids.xml. Software creators can register blocks of message IDs as needed (useful for GCS specific metadata, etc...). Message_types greater than 32767 are considered local experiments and should not be checked in to any widely distributed codebase.</field>
      <field type="uint8_t[249]" name="payload">Variable length payload. The length must be encoded in the payload as part of the message_type protocol, e.g. by including the length as payload data, or by terminating the payload data with a non-zero marker. This is required in order to reconstruct zero-terminated payloads that are (or otherwise would be) trimmed by MAVLink 2 empty-byte truncation. The entire content of the payload block is opaque unless you understand the encoding message_type. The particular encoding used can be extension specific and might not always be documented as part of the MAVLink specification.</field>
    </message>
    <message id="249" name="MEMORY_VECT">
      <description>Send raw controller memory. The use of this message is discouraged for normal packets, but a quite efficient way for testing new messages and getting experimental debug output.</description>
      <field type="uint16_t" name="address">Starting address of the debug variables</field>
      <field type="uint8_t" name="ver" invalid="0">Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below</field>
      <field type="uint8_t" name="type">Type code of the memory variables. for ver = 1: 0=16 x int16_t, 1=16 x uint16_t, 2=16 x Q15, 3=16 x 1Q14</field>
      <field type="int8_t[32]" name="value">Memory contents at specified address</field>
    </message>
    <message id="250" name="DEBUG_VECT">
      <description>To debug something using a named 3D vector.</description>
      <field type="char[10]" name="name" instance="true">Name</field>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="x">x</field>
      <field type="float" name="y">y</field>
      <field type="float" name="z">z</field>
    </message>
    <message id="251" name="NAMED_VALUE_FLOAT">
      <description>Send a key-value pair as float. The use of this message is discouraged for normal packets, but a quite efficient way for testing new messages and getting experimental debug output.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="char[10]" name="name" instance="true">Name of the debug variable</field>
      <field type="float" name="value">Floating point value</field>
    </message>
    <message id="252" name="NAMED_VALUE_INT">
      <description>Send a key-value pair as integer. The use of this message is discouraged for normal packets, but a quite efficient way for testing new messages and getting experimental debug output.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="char[10]" name="name" instance="true">Name of the debug variable</field>
      <field type="int32_t" name="value">Signed integer value</field>
    </message>
    <message id="253" name="STATUSTEXT">
      <description>Status text message. These messages are printed in yellow in the COMM console of QGroundControl. WARNING: They consume quite some bandwidth, so use only for important status and error messages. If implemented wisely, these messages are buffered on the MCU and sent only at a limited rate (e.g. 10 Hz).</description>
      <field type="uint8_t" name="severity" enum="MAV_SEVERITY">Severity of status. Relies on the definitions within RFC-5424.</field>
      <field type="char[50]" name="text">Status text message, without null termination character</field>
      <extensions/>
      <field type="uint16_t" name="id">Unique (opaque) identifier for this statustext message.  May be used to reassemble a logical long-statustext message from a sequence of chunks.  A value of zero indicates this is the only chunk in the sequence and the message can be emitted immediately.</field>
      <field type="uint8_t" name="chunk_seq">This chunk's sequence number; indexing is from zero.  Any null character in the text field is taken to mean this was the last chunk.</field>
    </message>
    <message id="254" name="DEBUG">
      <description>Send a debug value. The index is used to discriminate between values. These values show up in the plot of QGroundControl as DEBUG N.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="ind">index of debug variable</field>
      <field type="float" name="value">DEBUG value</field>
    </message>
    <!-- messages with ID 256 and above are only available in MAVLink2 -->
    <message id="256" name="SETUP_SIGNING">
      <description>Setup a MAVLink2 signing key. If called with secret_key of all zero and zero initial_timestamp will disable signing</description>
      <field type="uint8_t" name="target_system">system id of the target</field>
      <field type="uint8_t" name="target_component">component ID of the target</field>
      <field type="uint8_t[32]" name="secret_key">signing key</field>
      <field type="uint64_t" name="initial_timestamp">initial timestamp</field>
    </message>
    <message id="257" name="BUTTON_CHANGE">
      <description>Report button state change.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint32_t" name="last_change_ms" units="ms">Time of last change of button state.</field>
      <field type="uint8_t" name="state">Bitmap for state of buttons.</field>
    </message>
    <message id="258" name="PLAY_TUNE">
      <deprecated since="2019-10" replaced_by="PLAY_TUNE_V2">New version explicitly defines format. More interoperable.</deprecated>
      <description>Control vehicle tone generation (buzzer).</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="char[30]" name="tune">tune in board specific format</field>
      <extensions/>
      <field type="char[200]" name="tune2">tune extension (appended to tune)</field>
    </message>
    <message id="259" name="CAMERA_INFORMATION">
      <description>Information about a camera. Can be requested with a MAV_CMD_REQUEST_MESSAGE command.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t[32]" name="vendor_name">Name of the camera vendor</field>
      <field type="uint8_t[32]" name="model_name">Name of the camera model</field>
      <field type="uint32_t" name="firmware_version" invalid="0">Version of the camera firmware, encoded as: (Dev &amp; 0xff) &lt;&lt; 24 | (Patch &amp; 0xff) &lt;&lt; 16 | (Minor &amp; 0xff) &lt;&lt; 8 | (Major &amp; 0xff). Use 0 if not known.</field>
      <field type="float" name="focal_length" units="mm" invalid="NaN">Focal length. Use NaN if not known.</field>
      <field type="float" name="sensor_size_h" units="mm" invalid="NaN">Image sensor size horizontal. Use NaN if not known.</field>
      <field type="float" name="sensor_size_v" units="mm" invalid="NaN">Image sensor size vertical. Use NaN if not known.</field>
      <field type="uint16_t" name="resolution_h" units="pix" invalid="0">Horizontal image resolution. Use 0 if not known.</field>
      <field type="uint16_t" name="resolution_v" units="pix" invalid="0">Vertical image resolution. Use 0 if not known.</field>
      <field type="uint8_t" name="lens_id" invalid="0">Reserved for a lens ID.  Use 0 if not known.</field>
      <field type="uint32_t" name="flags" enum="CAMERA_CAP_FLAGS">Bitmap of camera capability flags.</field>
      <field type="uint16_t" name="cam_definition_version">Camera definition version (iteration).  Use 0 if not known.</field>
      <field type="char[140]" name="cam_definition_uri">Camera definition URI (if any, otherwise only basic functions will be available). HTTP- (http://) and MAVLink FTP- (mavlinkftp://) formatted URIs are allowed (and both must be supported by any GCS that implements the Camera Protocol). The definition file may be xz compressed, which will be indicated by the file extension .xml.xz (a GCS that implements the protocol must support decompressing the file). The string needs to be zero terminated.  Use a zero-length string if not known.</field>
      <extensions/>
      <field type="uint8_t" name="gimbal_device_id" invalid="0">Gimbal id of a gimbal associated with this camera. This is the component id of the gimbal device, or 1-6 for non mavlink gimbals. Use 0 if no gimbal is associated with the camera.</field>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
    </message>
    <message id="260" name="CAMERA_SETTINGS">
      <description>Settings of a camera. Can be requested with a MAV_CMD_REQUEST_MESSAGE command.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="mode_id" enum="CAMERA_MODE">Camera mode</field>
      <extensions/>
      <field type="float" name="zoomLevel" invalid="NaN">Current zoom level as a percentage of the full range (0.0 to 100.0, NaN if not known)</field>
      <field type="float" name="focusLevel" invalid="NaN">Current focus level as a percentage of the full range (0.0 to 100.0, NaN if not known)</field>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
    </message>
    <message id="261" name="STORAGE_INFORMATION">
      <description>Information about a storage medium. This message is sent in response to a request with MAV_CMD_REQUEST_MESSAGE and whenever the status of the storage changes (STORAGE_STATUS). Use MAV_CMD_REQUEST_MESSAGE.param2 to indicate the index/id of requested storage: 0 for all, 1 for first, 2 for second, etc.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="storage_id" instance="true">Storage ID (1 for first, 2 for second, etc.)</field>
      <field type="uint8_t" name="storage_count">Number of storage devices</field>
      <field type="uint8_t" name="status" enum="STORAGE_STATUS">Status of storage</field>
      <field type="float" name="total_capacity" units="MiB">Total capacity. If storage is not ready (STORAGE_STATUS_READY) value will be ignored.</field>
      <field type="float" name="used_capacity" units="MiB">Used capacity. If storage is not ready (STORAGE_STATUS_READY) value will be ignored.</field>
      <field type="float" name="available_capacity" units="MiB">Available storage capacity. If storage is not ready (STORAGE_STATUS_READY) value will be ignored.</field>
      <field type="float" name="read_speed" units="MiB/s">Read speed.</field>
      <field type="float" name="write_speed" units="MiB/s">Write speed.</field>
      <extensions/>
      <field type="uint8_t" name="type" enum="STORAGE_TYPE">Type of storage</field>
      <field type="char[32]" name="name">Textual storage name to be used in UI (microSD 1, Internal Memory, etc.) This is a NULL terminated string. If it is exactly 32 characters long, add a terminating NULL. If this string is empty, the generic type is shown to the user.</field>
      <field type="uint8_t" name="storage_usage" enum="STORAGE_USAGE_FLAG">Flags indicating whether this instance is preferred storage for photos, videos, etc.
        Note: Implementations should initially set the flags on the system-default storage id used for saving media (if possible/supported).
        This setting can then be overridden using MAV_CMD_SET_STORAGE_USAGE.
        If the media usage flags are not set, a GCS may assume storage ID 1 is the default storage for all media types.</field>
    </message>
    <message id="262" name="CAMERA_CAPTURE_STATUS">
      <description>Information about the status of a capture. Can be requested with a MAV_CMD_REQUEST_MESSAGE command.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="image_status">Current status of image capturing (0: idle, 1: capture in progress, 2: interval set but idle, 3: interval set and capture in progress)</field>
      <field type="uint8_t" name="video_status">Current status of video capturing (0: idle, 1: capture in progress)</field>
      <field type="float" name="image_interval" units="s">Image capture interval</field>
      <field type="uint32_t" name="recording_time_ms" units="ms">Elapsed time since recording started (0: Not supported/available). A GCS should compute recording time and use non-zero values of this field to correct any discrepancy.</field>
      <field type="float" name="available_capacity" units="MiB">Available storage capacity.</field>
      <extensions/>
      <field type="int32_t" name="image_count">Total number of images captured ('forever', or until reset using MAV_CMD_STORAGE_FORMAT).</field>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
    </message>
    <message id="263" name="CAMERA_IMAGE_CAPTURED">
      <description>Information about a captured image. This is emitted every time a message is captured.
        MAV_CMD_REQUEST_MESSAGE can be used to (re)request this message for a specific sequence number or range of sequence numbers:
        MAV_CMD_REQUEST_MESSAGE.param2 indicates the sequence number the first image to send, or set to -1 to send the message for all sequence numbers.
        MAV_CMD_REQUEST_MESSAGE.param3 is used to specify a range of messages to send:
        set to 0 (default) to send just the the message for the sequence number in param 2,
        set to -1 to send the message for the sequence number in param 2 and all the following sequence numbers,
        set to the sequence number of the final message in the range.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint64_t" name="time_utc" units="us" invalid="0">Timestamp (time since UNIX epoch) in UTC. 0 for unknown.</field>
      <field type="uint8_t" name="camera_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id). Field name is usually camera_device_id.</field>
      <field type="int32_t" name="lat" units="degE7">Latitude where image was taken</field>
      <field type="int32_t" name="lon" units="degE7">Longitude where capture was taken</field>
      <field type="int32_t" name="alt" units="mm">Altitude (MSL) where image was taken</field>
      <field type="int32_t" name="relative_alt" units="mm">Altitude above ground</field>
      <field type="float[4]" name="q">Quaternion of camera orientation (w, x, y, z order, zero-rotation is 1, 0, 0, 0)</field>
      <field type="int32_t" name="image_index">Zero based index of this image (i.e. a new image will have index CAMERA_CAPTURE_STATUS.image count -1)</field>
      <field type="int8_t" name="capture_result">Boolean indicating success (1) or failure (0) while capturing this image.</field>
      <field type="char[205]" name="file_url">URL of image taken. Either local storage or http://foo.jpg if camera provides an HTTP interface.</field>
    </message>
    <message id="264" name="FLIGHT_INFORMATION">
      <description>Flight information.
        This includes time since boot for arm, takeoff, and land, and a flight number.
        Takeoff and landing values reset to zero on arm.
        This can be requested using MAV_CMD_REQUEST_MESSAGE.
        Note, some fields are misnamed - timestamps are from boot (not UTC) and the flight_uuid is a sequence number.
      </description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint64_t" name="arming_time_utc" units="us" invalid="0">Timestamp at arming (since system boot). Set to 0 on boot. Set value on arming. Note, field is misnamed UTC.</field>
      <field type="uint64_t" name="takeoff_time_utc" units="us" invalid="0">Timestamp at takeoff (since system boot). Set to 0 at boot and on arming. Note, field is misnamed UTC.</field>
      <field type="uint64_t" name="flight_uuid" invalid="0">Flight number. Note, field is misnamed UUID.</field>
      <extensions/>
      <field type="uint32_t" name="landing_time" units="ms" invalid="0">Timestamp at landing (in ms since system boot). Set to 0 at boot and on arming.</field>
    </message>
    <message id="265" name="MOUNT_ORIENTATION">
      <deprecated since="2020-01" replaced_by="MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW">This message is being superseded by MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW. The message can still be used to communicate with legacy gimbals implementing it.</deprecated>
      <description>Orientation of a mount</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="float" name="roll" units="deg" invalid="NaN">Roll in global frame (set to NaN for invalid).</field>
      <field type="float" name="pitch" units="deg" invalid="NaN">Pitch in global frame (set to NaN for invalid).</field>
      <field type="float" name="yaw" units="deg" invalid="NaN">Yaw relative to vehicle (set to NaN for invalid).</field>
      <extensions/>
      <field type="float" name="yaw_absolute" units="deg" invalid="NaN">Yaw in absolute frame relative to Earth's North, north is 0 (set to NaN for invalid).</field>
    </message>
    <message id="266" name="LOGGING_DATA">
      <description>A message containing logged data (see also MAV_CMD_LOGGING_START)</description>
      <field type="uint8_t" name="target_system">system ID of the target</field>
      <field type="uint8_t" name="target_component">component ID of the target</field>
      <field type="uint16_t" name="sequence">sequence number (can wrap)</field>
      <field type="uint8_t" name="length" units="bytes">data length</field>
      <field type="uint8_t" name="first_message_offset" units="bytes" invalid="UINT8_MAX">offset into data where first message starts. This can be used for recovery, when a previous message got lost (set to UINT8_MAX if no start exists).</field>
      <field type="uint8_t[249]" name="data">logged data</field>
    </message>
    <message id="267" name="LOGGING_DATA_ACKED">
      <description>A message containing logged data which requires a LOGGING_ACK to be sent back</description>
      <field type="uint8_t" name="target_system">system ID of the target</field>
      <field type="uint8_t" name="target_component">component ID of the target</field>
      <field type="uint16_t" name="sequence">sequence number (can wrap)</field>
      <field type="uint8_t" name="length" units="bytes">data length</field>
      <field type="uint8_t" name="first_message_offset" units="bytes" invalid="UINT8_MAX">offset into data where first message starts. This can be used for recovery, when a previous message got lost (set to UINT8_MAX if no start exists).</field>
      <field type="uint8_t[249]" name="data">logged data</field>
    </message>
    <message id="268" name="LOGGING_ACK">
      <description>An ack for a LOGGING_DATA_ACKED message</description>
      <field type="uint8_t" name="target_system">system ID of the target</field>
      <field type="uint8_t" name="target_component">component ID of the target</field>
      <field type="uint16_t" name="sequence">sequence number (must match the one in LOGGING_DATA_ACKED)</field>
    </message>
    <message id="269" name="VIDEO_STREAM_INFORMATION">
      <description>Information about video stream. It may be requested using MAV_CMD_REQUEST_MESSAGE, where param2 indicates the video stream id: 0 for all streams, 1 for first, 2 for second, etc.</description>
      <field type="uint8_t" name="stream_id" instance="true">Video Stream ID (1 for first, 2 for second, etc.)</field>
      <field type="uint8_t" name="count">Number of streams available.</field>
      <field type="uint8_t" name="type" enum="VIDEO_STREAM_TYPE">Type of stream.</field>
      <field type="uint16_t" name="flags" enum="VIDEO_STREAM_STATUS_FLAGS">Bitmap of stream status flags.</field>
      <field type="float" name="framerate" units="Hz">Frame rate.</field>
      <field type="uint16_t" name="resolution_h" units="pix">Horizontal resolution.</field>
      <field type="uint16_t" name="resolution_v" units="pix">Vertical resolution.</field>
      <field type="uint32_t" name="bitrate" units="bits/s">Bit rate.</field>
      <field type="uint16_t" name="rotation" units="deg">Video image rotation clockwise.</field>
      <field type="uint16_t" name="hfov" units="deg">Horizontal Field of view.</field>
      <field type="char[32]" name="name">Stream name.</field>
      <field type="char[160]" name="uri">Video stream URI (TCP or RTSP URI ground station should connect to) or port number (UDP port ground station should listen to).</field>
      <extensions/>
      <field type="uint8_t" name="encoding" enum="VIDEO_STREAM_ENCODING">Encoding of stream.</field>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
    </message>
    <message id="270" name="VIDEO_STREAM_STATUS">
      <description>Information about the status of a video stream. It may be requested using MAV_CMD_REQUEST_MESSAGE.</description>
      <field type="uint8_t" name="stream_id" instance="true">Video Stream ID (1 for first, 2 for second, etc.)</field>
      <field type="uint16_t" name="flags" enum="VIDEO_STREAM_STATUS_FLAGS">Bitmap of stream status flags</field>
      <field type="float" name="framerate" units="Hz">Frame rate</field>
      <field type="uint16_t" name="resolution_h" units="pix">Horizontal resolution</field>
      <field type="uint16_t" name="resolution_v" units="pix">Vertical resolution</field>
      <field type="uint32_t" name="bitrate" units="bits/s">Bit rate</field>
      <field type="uint16_t" name="rotation" units="deg">Video image rotation clockwise</field>
      <field type="uint16_t" name="hfov" units="deg">Horizontal Field of view</field>
      <extensions/>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
    </message>
    <message id="271" name="CAMERA_FOV_STATUS">
      <description>Information about the field of view of a camera. Can be requested with a MAV_CMD_REQUEST_MESSAGE command.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="int32_t" name="lat_camera" units="degE7" invalid="INT32_MAX">Latitude of camera (INT32_MAX if unknown).</field>
      <field type="int32_t" name="lon_camera" units="degE7" invalid="INT32_MAX">Longitude of camera (INT32_MAX if unknown).</field>
      <field type="int32_t" name="alt_camera" units="mm" invalid="INT32_MAX">Altitude (MSL) of camera (INT32_MAX if unknown).</field>
      <field type="int32_t" name="lat_image" units="degE7" invalid="INT32_MAX">Latitude of center of image (INT32_MAX if unknown, INT32_MIN if at infinity, not intersecting with horizon).</field>
      <field type="int32_t" name="lon_image" units="degE7" invalid="INT32_MAX">Longitude of center of image (INT32_MAX if unknown, INT32_MIN if at infinity, not intersecting with horizon).</field>
      <field type="int32_t" name="alt_image" units="mm" invalid="INT32_MAX">Altitude (MSL) of center of image (INT32_MAX if unknown, INT32_MIN if at infinity, not intersecting with horizon).</field>
      <field type="float[4]" name="q">Quaternion of camera orientation (w, x, y, z order, zero-rotation is 1, 0, 0, 0)</field>
      <field type="float" name="hfov" units="deg" invalid="NaN">Horizontal field of view (NaN if unknown).</field>
      <field type="float" name="vfov" units="deg" invalid="NaN">Vertical field of view (NaN if unknown).</field>
      <extensions/>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
    </message>
    <message id="275" name="CAMERA_TRACKING_IMAGE_STATUS">
      <description>Camera tracking status, sent while in active tracking. Use MAV_CMD_SET_MESSAGE_INTERVAL to define message interval.</description>
      <field type="uint8_t" name="tracking_status" enum="CAMERA_TRACKING_STATUS_FLAGS">Current tracking status</field>
      <field type="uint8_t" name="tracking_mode" enum="CAMERA_TRACKING_MODE">Current tracking mode</field>
      <field type="uint8_t" name="target_data" enum="CAMERA_TRACKING_TARGET_DATA">Defines location of target data</field>
      <field type="float" name="point_x" invalid="NaN">Current tracked point x value if CAMERA_TRACKING_MODE_POINT (normalized 0..1, 0 is left, 1 is right), NAN if unknown</field>
      <field type="float" name="point_y" invalid="NaN">Current tracked point y value if CAMERA_TRACKING_MODE_POINT (normalized 0..1, 0 is top, 1 is bottom), NAN if unknown</field>
      <field type="float" name="radius" invalid="NaN">Current tracked radius if CAMERA_TRACKING_MODE_POINT (normalized 0..1, 0 is image left, 1 is image right), NAN if unknown</field>
      <field type="float" name="rec_top_x" invalid="NaN">Current tracked rectangle top x value if CAMERA_TRACKING_MODE_RECTANGLE (normalized 0..1, 0 is left, 1 is right), NAN if unknown</field>
      <field type="float" name="rec_top_y" invalid="NaN">Current tracked rectangle top y value if CAMERA_TRACKING_MODE_RECTANGLE (normalized 0..1, 0 is top, 1 is bottom), NAN if unknown</field>
      <field type="float" name="rec_bottom_x" invalid="NaN">Current tracked rectangle bottom x value if CAMERA_TRACKING_MODE_RECTANGLE (normalized 0..1, 0 is left, 1 is right), NAN if unknown</field>
      <field type="float" name="rec_bottom_y" invalid="NaN">Current tracked rectangle bottom y value if CAMERA_TRACKING_MODE_RECTANGLE (normalized 0..1, 0 is top, 1 is bottom), NAN if unknown</field>
      <extensions/>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
    </message>
    <message id="276" name="CAMERA_TRACKING_GEO_STATUS">
      <description>Camera tracking status, sent while in active tracking. Use MAV_CMD_SET_MESSAGE_INTERVAL to define message interval.</description>
      <field type="uint8_t" name="tracking_status" enum="CAMERA_TRACKING_STATUS_FLAGS">Current tracking status</field>
      <field type="int32_t" name="lat" units="degE7">Latitude of tracked object</field>
      <field type="int32_t" name="lon" units="degE7">Longitude of tracked object</field>
      <field type="float" name="alt" units="m">Altitude of tracked object(AMSL, WGS84)</field>
      <field type="float" name="h_acc" units="m" invalid="NaN">Horizontal accuracy. NAN if unknown</field>
      <field type="float" name="v_acc" units="m" invalid="NaN">Vertical accuracy. NAN if unknown</field>
      <field type="float" name="vel_n" units="m/s" invalid="NaN">North velocity of tracked object. NAN if unknown</field>
      <field type="float" name="vel_e" units="m/s" invalid="NaN">East velocity of tracked object. NAN if unknown</field>
      <field type="float" name="vel_d" units="m/s" invalid="NaN">Down velocity of tracked object. NAN if unknown</field>
      <field type="float" name="vel_acc" units="m/s" invalid="NaN">Velocity accuracy. NAN if unknown</field>
      <field type="float" name="dist" units="m" invalid="NaN">Distance between camera and tracked object. NAN if unknown</field>
      <field type="float" name="hdg" units="rad" invalid="NaN">Heading in radians, in NED. NAN if unknown</field>
      <field type="float" name="hdg_acc" units="rad" invalid="NaN">Accuracy of heading, in NED. NAN if unknown</field>
      <extensions/>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
    </message>
    <message id="277" name="CAMERA_THERMAL_RANGE">
      <description>Camera absolute thermal range. This can be streamed when the associated VIDEO_STREAM_STATUS `flag` field bit VIDEO_STREAM_STATUS_FLAGS_THERMAL_RANGE_ENABLED is set, but a GCS may choose to only request it for the current active stream. Use MAV_CMD_SET_MESSAGE_INTERVAL to define message interval (param3 indicates the stream id of the current camera, or 0 for all streams, param4 indicates the target camera_device_id for autopilot-attached cameras or 0 for MAVLink cameras).</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint8_t" name="stream_id" minValue="1" instance="true">Video Stream ID (1 for first, 2 for second, etc.)</field>
      <field type="uint8_t" name="camera_device_id" default="0" minValue="0" maxValue="6">Camera id of a non-MAVLink camera attached to an autopilot (1-6).  0 if the component is a MAVLink camera (with its own component id).</field>
      <field type="float" name="max" units="degC">Temperature max.</field>
      <field type="float" name="max_point_x" invalid="NaN">Temperature max point x value (normalized 0..1, 0 is left, 1 is right), NAN if unknown.</field>
      <field type="float" name="max_point_y" invalid="NaN">Temperature max point y value (normalized 0..1, 0 is top, 1 is bottom), NAN if unknown.</field>
      <field type="float" name="min" units="degC">Temperature min.</field>
      <field type="float" name="min_point_x" invalid="NaN">Temperature min point x value (normalized 0..1, 0 is left, 1 is right), NAN if unknown.</field>
      <field type="float" name="min_point_y" invalid="NaN">Temperature min point y value (normalized 0..1, 0 is top, 1 is bottom), NAN if unknown.</field>
    </message>
    <message id="280" name="GIMBAL_MANAGER_INFORMATION">
      <description>Information about a high level gimbal manager. This message should be requested by a ground station using MAV_CMD_REQUEST_MESSAGE.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint32_t" name="cap_flags" enum="GIMBAL_MANAGER_CAP_FLAGS">Bitmap of gimbal capability flags.</field>
      <field type="uint8_t" name="gimbal_device_id" instance="true">Gimbal device ID that this gimbal manager is responsible for. Component ID of gimbal device (or 1-6 for non-MAVLink gimbal).</field>
      <field type="float" name="roll_min" units="rad">Minimum hardware roll angle (positive: rolling to the right, negative: rolling to the left)</field>
      <field type="float" name="roll_max" units="rad">Maximum hardware roll angle (positive: rolling to the right, negative: rolling to the left)</field>
      <field type="float" name="pitch_min" units="rad">Minimum pitch angle (positive: up, negative: down)</field>
      <field type="float" name="pitch_max" units="rad">Maximum pitch angle (positive: up, negative: down)</field>
      <field type="float" name="yaw_min" units="rad">Minimum yaw angle (positive: to the right, negative: to the left)</field>
      <field type="float" name="yaw_max" units="rad">Maximum yaw angle (positive: to the right, negative: to the left)</field>
    </message>
    <message id="281" name="GIMBAL_MANAGER_STATUS">
      <description>Current status about a high level gimbal manager. This message should be broadcast at a low regular rate (e.g. 5Hz).</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint32_t" name="flags" enum="GIMBAL_MANAGER_FLAGS">High level gimbal manager flags currently applied.</field>
      <field type="uint8_t" name="gimbal_device_id" instance="true">Gimbal device ID that this gimbal manager is responsible for. Component ID of gimbal device (or 1-6 for non-MAVLink gimbal).</field>
      <field type="uint8_t" name="primary_control_sysid">System ID of MAVLink component with primary control, 0 for none.</field>
      <field type="uint8_t" name="primary_control_compid">Component ID of MAVLink component with primary control, 0 for none.</field>
      <field type="uint8_t" name="secondary_control_sysid">System ID of MAVLink component with secondary control, 0 for none.</field>
      <field type="uint8_t" name="secondary_control_compid">Component ID of MAVLink component with secondary control, 0 for none.</field>
    </message>
    <message id="282" name="GIMBAL_MANAGER_SET_ATTITUDE">
      <description>High level message to control a gimbal's attitude. This message is to be sent to the gimbal manager (e.g. from a ground station). Angles and rates can be set to NaN according to use case.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint32_t" name="flags" enum="GIMBAL_MANAGER_FLAGS">High level gimbal manager flags to use.</field>
      <field type="uint8_t" name="gimbal_device_id" instance="true">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</field>
      <field type="float[4]" name="q">Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation, the frame is depends on whether the flag GIMBAL_MANAGER_FLAGS_YAW_LOCK is set)</field>
      <field type="float" name="angular_velocity_x" units="rad/s" invalid="NaN">X component of angular velocity, positive is rolling to the right, NaN to be ignored.</field>
      <field type="float" name="angular_velocity_y" units="rad/s" invalid="NaN">Y component of angular velocity, positive is pitching up, NaN to be ignored.</field>
      <field type="float" name="angular_velocity_z" units="rad/s" invalid="NaN">Z component of angular velocity, positive is yawing to the right, NaN to be ignored.</field>
    </message>
    <message id="283" name="GIMBAL_DEVICE_INFORMATION">
      <description>Information about a low level gimbal. This message should be requested by the gimbal manager or a ground station using MAV_CMD_REQUEST_MESSAGE. The maximum angles and rates are the limits by hardware. However, the limits by software used are likely different/smaller and dependent on mode/settings/etc..</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="char[32]" name="vendor_name">Name of the gimbal vendor.</field>
      <field type="char[32]" name="model_name">Name of the gimbal model.</field>
      <field type="char[32]" name="custom_name">Custom name of the gimbal given to it by the user.</field>
      <field type="uint32_t" name="firmware_version">Version of the gimbal firmware, encoded as: (Dev &amp; 0xff) &lt;&lt; 24 | (Patch &amp; 0xff) &lt;&lt; 16 | (Minor &amp; 0xff) &lt;&lt; 8 | (Major &amp; 0xff).</field>
      <field type="uint32_t" name="hardware_version">Version of the gimbal hardware, encoded as: (Dev &amp; 0xff) &lt;&lt; 24 | (Patch &amp; 0xff) &lt;&lt; 16 | (Minor &amp; 0xff) &lt;&lt; 8 | (Major &amp; 0xff).</field>
      <field type="uint64_t" name="uid" invalid="0">UID of gimbal hardware (0 if unknown).</field>
      <field type="uint16_t" name="cap_flags" enum="GIMBAL_DEVICE_CAP_FLAGS">Bitmap of gimbal capability flags.</field>
      <field type="uint16_t" name="custom_cap_flags">Bitmap for use for gimbal-specific capability flags.</field>
      <field type="float" name="roll_min" units="rad" invalid="NaN">Minimum hardware roll angle (positive: rolling to the right, negative: rolling to the left). NAN if unknown.</field>
      <field type="float" name="roll_max" units="rad" invalid="NaN">Maximum hardware roll angle (positive: rolling to the right, negative: rolling to the left). NAN if unknown.</field>
      <field type="float" name="pitch_min" units="rad" invalid="NaN">Minimum hardware pitch angle (positive: up, negative: down). NAN if unknown.</field>
      <field type="float" name="pitch_max" units="rad" invalid="NaN">Maximum hardware pitch angle (positive: up, negative: down). NAN if unknown.</field>
      <field type="float" name="yaw_min" units="rad" invalid="NaN">Minimum hardware yaw angle (positive: to the right, negative: to the left). NAN if unknown.</field>
      <field type="float" name="yaw_max" units="rad" invalid="NaN">Maximum hardware yaw angle (positive: to the right, negative: to the left). NAN if unknown.</field>
      <extensions/>
      <field type="uint8_t" name="gimbal_device_id" invalid="0">This field is to be used if the gimbal manager and the gimbal device are the same component and hence have the same component ID. This field is then set to a number between 1-6. If the component ID is separate, this field is not required and must be set to 0.</field>
    </message>
    <message id="284" name="GIMBAL_DEVICE_SET_ATTITUDE">
      <description>Low level message to control a gimbal device's attitude.
	  This message is to be sent from the gimbal manager to the gimbal device component.
	  The quaternion and angular velocities can be set to NaN according to use case.
	  For the angles encoded in the quaternion and the angular velocities holds:
	  If the flag GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME is set, then they are relative to the vehicle heading (vehicle frame).
	  If the flag GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME is set, then they are relative to absolute North (earth frame).
	  If neither of these flags are set, then (for backwards compatibility) it holds:
	  If the flag GIMBAL_DEVICE_FLAGS_YAW_LOCK is set, then they are relative to absolute North (earth frame),
	  else they are relative to the vehicle heading (vehicle frame).
	  Setting both GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME and GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME is not allowed.
	  These rules are to ensure backwards compatibility.
	  New implementations should always set either GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME or GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="flags" enum="GIMBAL_DEVICE_FLAGS">Low level gimbal flags.</field>
      <field type="float[4]" name="q" invalid="[NaN]">Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation). The frame is described in the message description. Set fields to NaN to be ignored.</field>
      <field type="float" name="angular_velocity_x" units="rad/s" invalid="NaN">X component of angular velocity (positive: rolling to the right). The frame is described in the message description. NaN to be ignored.</field>
      <field type="float" name="angular_velocity_y" units="rad/s" invalid="NaN">Y component of angular velocity (positive: pitching up). The frame is described in the message description. NaN to be ignored.</field>
      <field type="float" name="angular_velocity_z" units="rad/s" invalid="NaN">Z component of angular velocity (positive: yawing to the right). The frame is described in the message description. NaN to be ignored.</field>
    </message>
    <message id="285" name="GIMBAL_DEVICE_ATTITUDE_STATUS">
      <description>Message reporting the status of a gimbal device.
	  This message should be broadcast by a gimbal device component at a low regular rate (e.g. 5 Hz).
	  For the angles encoded in the quaternion and the angular velocities holds:
	  If the flag GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME is set, then they are relative to the vehicle heading (vehicle frame).
	  If the flag GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME is set, then they are relative to absolute North (earth frame).
	  If neither of these flags are set, then (for backwards compatibility) it holds:
	  If the flag GIMBAL_DEVICE_FLAGS_YAW_LOCK is set, then they are relative to absolute North (earth frame),
	  else they are relative to the vehicle heading (vehicle frame).
	  Other conditions of the flags are not allowed.
	  The quaternion and angular velocities in the other frame can be calculated from delta_yaw and delta_yaw_velocity as
	  q_earth = q_delta_yaw * q_vehicle and w_earth = w_delta_yaw_velocity + w_vehicle (if not NaN).
	  If neither the GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME nor the GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME flag is set,
	  then (for backwards compatibility) the data in the delta_yaw and delta_yaw_velocity fields are to be ignored.
	  New implementations should always set either GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME or GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME,
	  and always should set delta_yaw and delta_yaw_velocity either to the proper value or NaN.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint16_t" name="flags" enum="GIMBAL_DEVICE_FLAGS">Current gimbal flags set.</field>
      <field type="float[4]" name="q">Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation). The frame is described in the message description.</field>
      <field type="float" name="angular_velocity_x" units="rad/s" invalid="NaN">X component of angular velocity (positive: rolling to the right). The frame is described in the message description. NaN if unknown.</field>
      <field type="float" name="angular_velocity_y" units="rad/s" invalid="NaN">Y component of angular velocity (positive: pitching up). The frame is described in the message description. NaN if unknown.</field>
      <field type="float" name="angular_velocity_z" units="rad/s" invalid="NaN">Z component of angular velocity (positive: yawing to the right). The frame is described in the message description. NaN if unknown.</field>
      <field type="uint32_t" name="failure_flags" enum="GIMBAL_DEVICE_ERROR_FLAGS">Failure flags (0 for no failure)</field>
      <extensions/>
      <field type="float" name="delta_yaw" units="rad" invalid="NAN">Yaw angle relating the quaternions in earth and body frames (see message description). NaN if unknown.</field>
      <field type="float" name="delta_yaw_velocity" units="rad/s" invalid="NAN">Yaw angular velocity relating the angular velocities in earth and body frames (see message description). NaN if unknown.</field>
      <field type="uint8_t" name="gimbal_device_id" invalid="0">This field is to be used if the gimbal manager and the gimbal device are the same component and hence have the same component ID. This field is then set a number between 1-6. If the component ID is separate, this field is not required and must be set to 0.</field>
    </message>
    <message id="286" name="AUTOPILOT_STATE_FOR_GIMBAL_DEVICE">
      <description>Low level message containing autopilot state relevant for a gimbal device. This message is to be sent from the autopilot to the gimbal device component. The data of this message are for the gimbal device's estimator corrections, in particular horizon compensation, as well as indicates autopilot control intentions, e.g. feed forward angular control in the z-axis.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint64_t" name="time_boot_us" units="us">Timestamp (time since system boot).</field>
      <field type="float[4]" name="q">Quaternion components of autopilot attitude: w, x, y, z (1 0 0 0 is the null-rotation, Hamilton convention).</field>
      <field type="uint32_t" name="q_estimated_delay_us" units="us" invalid="0">Estimated delay of the attitude data. 0 if unknown.</field>
      <field type="float" name="vx" units="m/s" invalid="NaN">X Speed in NED (North, East, Down). NAN if unknown.</field>
      <field type="float" name="vy" units="m/s" invalid="NaN">Y Speed in NED (North, East, Down). NAN if unknown.</field>
      <field type="float" name="vz" units="m/s" invalid="NaN">Z Speed in NED (North, East, Down). NAN if unknown.</field>
      <field type="uint32_t" name="v_estimated_delay_us" units="us" invalid="0">Estimated delay of the speed data. 0 if unknown.</field>
      <field type="float" name="feed_forward_angular_velocity_z" units="rad/s" invalid="NaN">Feed forward Z component of angular velocity (positive: yawing to the right). NaN to be ignored. This is to indicate if the autopilot is actively yawing.</field>
      <field type="uint16_t" name="estimator_status" enum="ESTIMATOR_STATUS_FLAGS">Bitmap indicating which estimator outputs are valid.</field>
      <field type="uint8_t" name="landed_state" enum="MAV_LANDED_STATE" invalid="MAV_LANDED_STATE_UNDEFINED">The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown.</field>
      <extensions/>
      <field type="float" name="angular_velocity_z" units="rad/s" invalid="NaN">Z component of angular velocity in NED (North, East, Down). NaN if unknown.</field>
    </message>
    <message id="287" name="GIMBAL_MANAGER_SET_PITCHYAW">
      <description>Set gimbal manager pitch and yaw angles (high rate message). This message is to be sent to the gimbal manager (e.g. from a ground station) and will be ignored by gimbal devices. Angles and rates can be set to NaN according to use case. Use MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW for low-rate adjustments that require confirmation.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint32_t" name="flags" enum="GIMBAL_MANAGER_FLAGS">High level gimbal manager flags to use.</field>
      <field type="uint8_t" name="gimbal_device_id" instance="true">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</field>
      <field type="float" name="pitch" units="rad" invalid="NaN">Pitch angle (positive: up, negative: down, NaN to be ignored).</field>
      <field type="float" name="yaw" units="rad" invalid="NaN">Yaw angle (positive: to the right, negative: to the left, NaN to be ignored).</field>
      <field type="float" name="pitch_rate" units="rad/s" invalid="NaN">Pitch angular rate (positive: up, negative: down, NaN to be ignored).</field>
      <field type="float" name="yaw_rate" units="rad/s" invalid="NaN">Yaw angular rate (positive: to the right, negative: to the left, NaN to be ignored).</field>
    </message>
    <message id="288" name="GIMBAL_MANAGER_SET_MANUAL_CONTROL">
      <description>High level message to control a gimbal manually. The angles or angular rates are unitless; the actual rates will depend on internal gimbal manager settings/configuration (e.g. set by parameters). This message is to be sent to the gimbal manager (e.g. from a ground station). Angles and rates can be set to NaN according to use case.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint32_t" name="flags" enum="GIMBAL_MANAGER_FLAGS">High level gimbal manager flags.</field>
      <field type="uint8_t" name="gimbal_device_id" instance="true">Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components. Send command multiple times for more than one gimbal (but not all gimbals).</field>
      <field type="float" name="pitch" invalid="NaN">Pitch angle unitless (-1..1, positive: up, negative: down, NaN to be ignored).</field>
      <field type="float" name="yaw" invalid="NaN">Yaw angle unitless (-1..1, positive: to the right, negative: to the left, NaN to be ignored).</field>
      <field type="float" name="pitch_rate" invalid="NaN">Pitch angular rate unitless (-1..1, positive: up, negative: down, NaN to be ignored).</field>
      <field type="float" name="yaw_rate" invalid="NaN">Yaw angular rate unitless (-1..1, positive: to the right, negative: to the left, NaN to be ignored).</field>
    </message>
    <message id="290" name="ESC_INFO">
      <wip/>
      <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>ESC information for lower rate streaming. Recommended streaming rate 1Hz. See ESC_STATUS for higher-rate ESC data.</description>
      <field type="uint8_t" name="index" instance="true">Index of the first ESC in this message. minValue = 0, maxValue = 60, increment = 4.</field>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude the number.</field>
      <field type="uint16_t" name="counter">Counter of data packets received.</field>
      <field type="uint8_t" name="count">Total number of ESCs in all messages of this type. Message fields with an index higher than this should be ignored because they contain invalid data.</field>
      <field type="uint8_t" name="connection_type" enum="ESC_CONNECTION_TYPE">Connection type protocol for all ESC.</field>
      <field type="uint8_t" name="info">Information regarding online/offline status of each ESC.</field>
      <field type="uint16_t[4]" name="failure_flags" enum="ESC_FAILURE_FLAGS">Bitmap of ESC failure flags.</field>
      <field type="uint32_t[4]" name="error_count">Number of reported errors by each ESC since boot.</field>
      <field type="int16_t[4]" name="temperature" units="cdegC" invalid="[INT16_MAX]">Temperature of each ESC. INT16_MAX: if data not supplied by ESC.</field>
    </message>
    <message id="291" name="ESC_STATUS">
      <wip/>
      <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>ESC information for higher rate streaming. Recommended streaming rate is ~10 Hz. Information that changes more slowly is sent in ESC_INFO. It should typically only be streamed on high-bandwidth links (i.e. to a companion computer).</description>
      <field type="uint8_t" name="index" instance="true">Index of the first ESC in this message. minValue = 0, maxValue = 60, increment = 4.</field>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude the number.</field>
      <field type="int32_t[4]" name="rpm" units="rpm">Reported motor RPM from each ESC (negative for reverse rotation).</field>
      <field type="float[4]" name="voltage" units="V">Voltage measured from each ESC.</field>
      <field type="float[4]" name="current" units="A">Current measured from each ESC.</field>
    </message>
    <!-- id 295 reserved for AIRSPEED message (development.xml). -->
    <message id="299" name="WIFI_CONFIG_AP">
      <description>Configure WiFi AP SSID, password, and mode. This message is re-emitted as an acknowledgement by the AP. The message may also be explicitly requested using MAV_CMD_REQUEST_MESSAGE</description>
      <field type="char[32]" name="ssid">Name of Wi-Fi network (SSID). Blank to leave it unchanged when setting. Current SSID when sent back as a response.</field>
      <field type="char[64]" name="password">Password. Blank for an open AP. MD5 hash when message is sent back as a response.</field>
      <extensions/>
      <field type="int8_t" name="mode" enum="WIFI_CONFIG_AP_MODE">WiFi Mode.</field>
      <field type="int8_t" name="response" enum="WIFI_CONFIG_AP_RESPONSE">Message acceptance response (sent back to GS).</field>
    </message>
    <message id="301" name="AIS_VESSEL">
      <description>The location and information of an AIS vessel</description>
      <field type="uint32_t" name="MMSI">Mobile Marine Service Identifier, 9 decimal digits</field>
      <field type="int32_t" name="lat" units="degE7">Latitude</field>
      <field type="int32_t" name="lon" units="degE7">Longitude</field>
      <field type="uint16_t" name="COG" units="cdeg">Course over ground</field>
      <field type="uint16_t" name="heading" units="cdeg">True heading</field>
      <field type="uint16_t" name="velocity" units="cm/s">Speed over ground</field>
      <field type="int8_t" name="turn_rate" units="cdeg/s">Turn rate</field>
      <field type="uint8_t" name="navigational_status" enum="AIS_NAV_STATUS">Navigational status</field>
      <field type="uint8_t" name="type" enum="AIS_TYPE">Type of vessels</field>
      <field type="uint16_t" name="dimension_bow" units="m">Distance from lat/lon location to bow</field>
      <field type="uint16_t" name="dimension_stern" units="m">Distance from lat/lon location to stern</field>
      <field type="uint8_t" name="dimension_port" units="m">Distance from lat/lon location to port side</field>
      <field type="uint8_t" name="dimension_starboard" units="m">Distance from lat/lon location to starboard side</field>
      <field type="char[7]" name="callsign">The vessel callsign</field>
      <field type="char[20]" name="name">The vessel name</field>
      <field type="uint16_t" name="tslc" units="s">Time since last communication in seconds</field>
      <field type="uint16_t" name="flags" enum="AIS_FLAGS">Bitmask to indicate various statuses including valid data fields</field>
    </message>
    <!-- UAVCAN related messages. Please keep the range [310, 320) reserved for UAVCAN. -->
    <message id="310" name="UAVCAN_NODE_STATUS">
      <description>General status information of an UAVCAN node. Please refer to the definition of the UAVCAN message "uavcan.protocol.NodeStatus" for the background information. The UAVCAN specification is available at http://uavcan.org.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint32_t" name="uptime_sec" units="s">Time since the start-up of the node.</field>
      <field type="uint8_t" name="health" enum="UAVCAN_NODE_HEALTH">Generalized node health status.</field>
      <field type="uint8_t" name="mode" enum="UAVCAN_NODE_MODE">Generalized operating mode.</field>
      <field type="uint8_t" name="sub_mode">Not used currently.</field>
      <field type="uint16_t" name="vendor_specific_status_code">Vendor-specific status information.</field>
    </message>
    <message id="311" name="UAVCAN_NODE_INFO">
      <description>General information describing a particular UAVCAN node. Please refer to the definition of the UAVCAN service "uavcan.protocol.GetNodeInfo" for the background information. This message should be emitted by the system whenever a new node appears online, or an existing node reboots. Additionally, it can be emitted upon request from the other end of the MAVLink channel (see MAV_CMD_UAVCAN_GET_NODE_INFO). It is also not prohibited to emit this message unconditionally at a low frequency. The UAVCAN specification is available at http://uavcan.org.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint32_t" name="uptime_sec" units="s">Time since the start-up of the node.</field>
      <field type="char[80]" name="name">Node name string. For example, "sapog.px4.io".</field>
      <field type="uint8_t" name="hw_version_major">Hardware major version number.</field>
      <field type="uint8_t" name="hw_version_minor">Hardware minor version number.</field>
      <field type="uint8_t[16]" name="hw_unique_id">Hardware unique 128-bit ID.</field>
      <field type="uint8_t" name="sw_version_major">Software major version number.</field>
      <field type="uint8_t" name="sw_version_minor">Software minor version number.</field>
      <field type="uint32_t" name="sw_vcs_commit" invalid="0">Version control system (VCS) revision identifier (e.g. git short commit hash). 0 if unknown.</field>
    </message>
    <message id="320" name="PARAM_EXT_REQUEST_READ">
      <description>Request to read the value of a parameter with either the param_id string id or param_index. PARAM_EXT_VALUE should be emitted in response.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="char[16]" name="param_id">Parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string</field>
      <field type="int16_t" name="param_index" invalid="-1">Parameter index. Set to -1 to use the Parameter ID field as identifier (else param_id will be ignored)</field>
    </message>
    <message id="321" name="PARAM_EXT_REQUEST_LIST">
      <description>Request all parameters of this component. All parameters should be emitted in response as PARAM_EXT_VALUE.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
    </message>
    <message id="322" name="PARAM_EXT_VALUE">
      <description>Emit the value of a parameter. The inclusion of param_count and param_index in the message allows the recipient to keep track of received parameters and allows them to re-request missing parameters after a loss or timeout.</description>
      <field type="char[16]" name="param_id">Parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string</field>
      <field type="char[128]" name="param_value">Parameter value</field>
      <field type="uint8_t" name="param_type" enum="MAV_PARAM_EXT_TYPE">Parameter type.</field>
      <field type="uint16_t" name="param_count">Total number of parameters</field>
      <field type="uint16_t" name="param_index">Index of this parameter</field>
    </message>
    <message id="323" name="PARAM_EXT_SET">
      <description>Set a parameter value. In order to deal with message loss (and retransmission of PARAM_EXT_SET), when setting a parameter value and the new value is the same as the current value, you will immediately get a PARAM_ACK_ACCEPTED response. If the current state is PARAM_ACK_IN_PROGRESS, you will accordingly receive a PARAM_ACK_IN_PROGRESS in response.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="char[16]" name="param_id">Parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string</field>
      <field type="char[128]" name="param_value">Parameter value</field>
      <field type="uint8_t" name="param_type" enum="MAV_PARAM_EXT_TYPE">Parameter type.</field>
    </message>
    <message id="324" name="PARAM_EXT_ACK">
      <description>Response from a PARAM_EXT_SET message.</description>
      <field type="char[16]" name="param_id">Parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the ID is stored as string</field>
      <field type="char[128]" name="param_value">Parameter value (new value if PARAM_ACK_ACCEPTED, current value otherwise)</field>
      <field type="uint8_t" name="param_type" enum="MAV_PARAM_EXT_TYPE">Parameter type.</field>
      <field type="uint8_t" name="param_result" enum="PARAM_ACK">Result code.</field>
    </message>
    <message id="330" name="OBSTACLE_DISTANCE">
      <description>Obstacle distances in front of the sensor, starting from the left in increment degrees to the right</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="sensor_type" enum="MAV_DISTANCE_SENSOR">Class id of the distance sensor type.</field>
      <field type="uint16_t[72]" name="distances" units="cm" invalid="[UINT16_MAX]">Distance of obstacles around the vehicle with index 0 corresponding to north + angle_offset, unless otherwise specified in the frame. A value of 0 is valid and means that the obstacle is practically touching the sensor. A value of max_distance +1 means no obstacle is present. A value of UINT16_MAX for unknown/not used. In a array element, one unit corresponds to 1cm.</field>
      <field type="uint8_t" name="increment" units="deg">Angular width in degrees of each array element. Increment direction is clockwise. This field is ignored if increment_f is non-zero.</field>
      <field type="uint16_t" name="min_distance" units="cm">Minimum distance the sensor can measure.</field>
      <field type="uint16_t" name="max_distance" units="cm">Maximum distance the sensor can measure.</field>
      <extensions/>
      <field type="float" name="increment_f" units="deg">Angular width in degrees of each array element as a float. If non-zero then this value is used instead of the uint8_t increment field. Positive is clockwise direction, negative is counter-clockwise.</field>
      <field type="float" name="angle_offset" units="deg">Relative angle offset of the 0-index element in the distances array. Value of 0 corresponds to forward. Positive is clockwise direction, negative is counter-clockwise.</field>
      <field type="uint8_t" name="frame" enum="MAV_FRAME">Coordinate frame of reference for the yaw rotation and offset of the sensor data. Defaults to MAV_FRAME_GLOBAL, which is north aligned. For body-mounted sensors use MAV_FRAME_BODY_FRD, which is vehicle front aligned.</field>
    </message>
    <message id="331" name="ODOMETRY">
      <description>Odometry message to communicate odometry information with an external interface. Fits ROS REP 147 standard for aerial vehicles (http://www.ros.org/reps/rep-0147.html).</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="frame_id" enum="MAV_FRAME">Coordinate frame of reference for the pose data.</field>
      <field type="uint8_t" name="child_frame_id" enum="MAV_FRAME">Coordinate frame of reference for the velocity in free space (twist) data.</field>
      <field type="float" name="x" units="m">X Position</field>
      <field type="float" name="y" units="m">Y Position</field>
      <field type="float" name="z" units="m">Z Position</field>
      <field type="float[4]" name="q">Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation)</field>
      <field type="float" name="vx" units="m/s">X linear speed</field>
      <field type="float" name="vy" units="m/s">Y linear speed</field>
      <field type="float" name="vz" units="m/s">Z linear speed</field>
      <field type="float" name="rollspeed" units="rad/s">Roll angular speed</field>
      <field type="float" name="pitchspeed" units="rad/s">Pitch angular speed</field>
      <field type="float" name="yawspeed" units="rad/s">Yaw angular speed</field>
      <field type="float[21]" name="pose_covariance" invalid="[NaN:]">Row-major representation of a 6x6 pose cross-covariance matrix upper right triangle (states: x, y, z, roll, pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If unknown, assign NaN value to first element in the array.</field>
      <field type="float[21]" name="velocity_covariance" invalid="[NaN:]">Row-major representation of a 6x6 velocity cross-covariance matrix upper right triangle (states: vx, vy, vz, rollspeed, pitchspeed, yawspeed; first six entries are the first ROW, next five entries are the second ROW, etc.). If unknown, assign NaN value to first element in the array.</field>
      <extensions/>
      <field type="uint8_t" name="reset_counter">Estimate reset counter. This should be incremented when the estimate resets in any of the dimensions (position, velocity, attitude, angular speed). This is designed to be used when e.g an external SLAM system detects a loop-closure and the estimate jumps.</field>
      <field type="uint8_t" name="estimator_type" enum="MAV_ESTIMATOR_TYPE">Type of estimator that is providing the odometry.</field>
      <field type="int8_t" name="quality" units="%" invalid="0">Optional odometry quality metric as a percentage. -1 = odometry has failed, 0 = unknown/unset quality, 1 = worst quality, 100 = best quality</field>
    </message>
    <message id="332" name="TRAJECTORY_REPRESENTATION_WAYPOINTS">
      <deprecated since="2025-03" replaced_by="Nothing">Implemented PX4 v1.11 to v1.14. Not used in current flight stacks.</deprecated>
      <description>Describe a trajectory using an array of up-to 5 waypoints in the local frame (MAV_FRAME_LOCAL_NED).</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="valid_points">Number of valid points (up-to 5 waypoints are possible)</field>
      <field type="float[5]" name="pos_x" units="m" invalid="[NaN]">X-coordinate of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="pos_y" units="m" invalid="[NaN]">Y-coordinate of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="pos_z" units="m" invalid="[NaN]">Z-coordinate of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="vel_x" units="m/s" invalid="[NaN]">X-velocity of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="vel_y" units="m/s" invalid="[NaN]">Y-velocity of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="vel_z" units="m/s" invalid="[NaN]">Z-velocity of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="acc_x" units="m/s/s" invalid="[NaN]">X-acceleration of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="acc_y" units="m/s/s" invalid="[NaN]">Y-acceleration of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="acc_z" units="m/s/s" invalid="[NaN]">Z-acceleration of waypoint, set to NaN if not being used</field>
      <field type="float[5]" name="pos_yaw" units="rad" invalid="[NaN]">Yaw angle, set to NaN if not being used</field>
      <field type="float[5]" name="vel_yaw" units="rad/s" invalid="[NaN]">Yaw rate, set to NaN if not being used</field>
      <field type="uint16_t[5]" name="command" enum="MAV_CMD" invalid="[UINT16_MAX]">MAV_CMD command id of waypoint, set to UINT16_MAX if not being used.</field>
    </message>
    <message id="333" name="TRAJECTORY_REPRESENTATION_BEZIER">
      <deprecated since="2025-03" replaced_by="Nothing">Implemented PX4 v1.11 to v1.14. Not used in current flight stacks.</deprecated>
      <description>Describe a trajectory using an array of up-to 5 bezier control points in the local frame (MAV_FRAME_LOCAL_NED).</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint8_t" name="valid_points">Number of valid control points (up-to 5 points are possible)</field>
      <field type="float[5]" name="pos_x" units="m" invalid="[NaN]">X-coordinate of bezier control points. Set to NaN if not being used</field>
      <field type="float[5]" name="pos_y" units="m" invalid="[NaN]">Y-coordinate of bezier control points. Set to NaN if not being used</field>
      <field type="float[5]" name="pos_z" units="m" invalid="[NaN]">Z-coordinate of bezier control points. Set to NaN if not being used</field>
      <field type="float[5]" name="delta" units="s" invalid="[NaN]">Bezier time horizon. Set to NaN if velocity/acceleration should not be incorporated</field>
      <field type="float[5]" name="pos_yaw" units="rad" invalid="[NaN]">Yaw. Set to NaN for unchanged</field>
    </message>
    <!-- cellular status information -->
    <message id="334" name="CELLULAR_STATUS">
      <description>Report current used cellular network status</description>
      <field type="uint8_t" name="status" enum="CELLULAR_STATUS_FLAG">Cellular modem status</field>
      <field type="uint8_t" name="failure_reason" enum="CELLULAR_NETWORK_FAILED_REASON">Failure reason when status in in CELLULAR_STATUS_FLAG_FAILED</field>
      <field type="uint8_t" name="type" enum="CELLULAR_NETWORK_RADIO_TYPE">Cellular network radio type: gsm, cdma, lte...</field>
      <field type="uint8_t" name="quality" invalid="UINT8_MAX">Signal quality in percent. If unknown, set to UINT8_MAX</field>
      <field type="uint16_t" name="mcc" invalid="UINT16_MAX">Mobile country code. If unknown, set to UINT16_MAX</field>
      <field type="uint16_t" name="mnc" invalid="UINT16_MAX">Mobile network code. If unknown, set to UINT16_MAX</field>
      <field type="uint16_t" name="lac" invalid="0">Location area code. If unknown, set to 0</field>
    </message>
    <message id="335" name="ISBD_LINK_STATUS">
      <description>Status of the Iridium SBD link.</description>
      <field type="uint64_t" name="timestamp" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint64_t" name="last_heartbeat" units="us">Timestamp of the last successful sbd session. The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint16_t" name="failed_sessions">Number of failed SBD sessions.</field>
      <field type="uint16_t" name="successful_sessions">Number of successful SBD sessions.</field>
      <field type="uint8_t" name="signal_quality">Signal quality equal to the number of bars displayed on the ISU signal strength indicator. Range is 0 to 5, where 0 indicates no signal and 5 indicates maximum signal strength.</field>
      <field type="uint8_t" name="ring_pending">1: Ring call pending, 0: No call pending.</field>
      <field type="uint8_t" name="tx_session_pending">1: Transmission session pending, 0: No transmission session pending.</field>
      <field type="uint8_t" name="rx_session_pending">1: Receiving session pending, 0: No receiving session pending.</field>
    </message>
    <message id="336" name="CELLULAR_CONFIG">
      <description>Configure cellular modems.
        This message is re-emitted as an acknowledgement by the modem.
        The message may also be explicitly requested using MAV_CMD_REQUEST_MESSAGE.</description>
      <field type="uint8_t" name="enable_lte">Enable/disable LTE. 0: setting unchanged, 1: disabled, 2: enabled. Current setting when sent back as a response.</field>
      <field type="uint8_t" name="enable_pin">Enable/disable PIN on the SIM card. 0: setting unchanged, 1: disabled, 2: enabled. Current setting when sent back as a response.</field>
      <field type="char[16]" name="pin">PIN sent to the SIM card. Blank when PIN is disabled. Empty when message is sent back as a response.</field>
      <field type="char[16]" name="new_pin">New PIN when changing the PIN. Blank to leave it unchanged. Empty when message is sent back as a response.</field>
      <field type="char[32]" name="apn">Name of the cellular APN. Blank to leave it unchanged. Current APN when sent back as a response.</field>
      <field type="char[16]" name="puk">Required PUK code in case the user failed to authenticate 3 times with the PIN. Empty when message is sent back as a response.</field>
      <field type="uint8_t" name="roaming">Enable/disable roaming. 0: setting unchanged, 1: disabled, 2: enabled. Current setting when sent back as a response.</field>
      <field type="uint8_t" name="response" enum="CELLULAR_CONFIG_RESPONSE">Message acceptance response (sent back to GS).</field>
    </message>
    <message id="339" name="RAW_RPM">
      <description>RPM sensor data message.</description>
      <field type="uint8_t" name="index">Index of this RPM sensor (0-indexed)</field>
      <field type="float" name="frequency" units="rpm">Indicated rate</field>
    </message>
    <message id="340" name="UTM_GLOBAL_POSITION">
      <description>The global position resulting from GPS and sensor fusion.</description>
      <field type="uint64_t" name="time" units="us">Time of applicability of position (microseconds since UNIX epoch).</field>
      <field type="uint8_t[18]" name="uas_id">Unique UAS ID.</field>
      <field type="int32_t" name="lat" units="degE7">Latitude (WGS84)</field>
      <field type="int32_t" name="lon" units="degE7">Longitude (WGS84)</field>
      <field type="int32_t" name="alt" units="mm">Altitude (WGS84)</field>
      <field type="int32_t" name="relative_alt" units="mm">Altitude above ground</field>
      <field type="int16_t" name="vx" units="cm/s">Ground X speed (latitude, positive north)</field>
      <field type="int16_t" name="vy" units="cm/s">Ground Y speed (longitude, positive east)</field>
      <field type="int16_t" name="vz" units="cm/s">Ground Z speed (altitude, positive down)</field>
      <field type="uint16_t" name="h_acc" units="mm">Horizontal position uncertainty (standard deviation)</field>
      <field type="uint16_t" name="v_acc" units="mm">Altitude uncertainty (standard deviation)</field>
      <field type="uint16_t" name="vel_acc" units="cm/s">Speed uncertainty (standard deviation)</field>
      <field type="int32_t" name="next_lat" units="degE7">Next waypoint, latitude (WGS84)</field>
      <field type="int32_t" name="next_lon" units="degE7">Next waypoint, longitude (WGS84)</field>
      <field type="int32_t" name="next_alt" units="mm">Next waypoint, altitude (WGS84)</field>
      <field type="uint16_t" name="update_rate" units="cs" invalid="0">Time until next update. Set to 0 if unknown or in data driven mode.</field>
      <field type="uint8_t" name="flight_state" enum="UTM_FLIGHT_STATE">Flight state</field>
      <field type="uint8_t" name="flags" enum="UTM_DATA_AVAIL_FLAGS">Bitwise OR combination of the data available flags.</field>
    </message>
    <message id="350" name="DEBUG_FLOAT_ARRAY">
      <description>Large debug/prototyping array. The message uses the maximum available payload for data. The array_id and name fields are used to discriminate between messages in code and in user interfaces (respectively). Do not use in production code.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="char[10]" name="name">Name, for human-friendly display in a Ground Control Station</field>
      <field type="uint16_t" name="array_id" instance="true">Unique ID used to discriminate between arrays</field>
      <extensions/>
      <field type="float[58]" name="data">data</field>
    </message>
    <message id="360" name="ORBIT_EXECUTION_STATUS">
      <wip/>
      <!-- This message is work-in-progress it can therefore change, and should NOT be used in stable production environments -->
      <description>Vehicle status report that is sent out while orbit execution is in progress (see MAV_CMD_DO_ORBIT).</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="float" name="radius" units="m">Radius of the orbit circle. Positive values orbit clockwise, negative values orbit counter-clockwise.</field>
      <field type="uint8_t" name="frame" enum="MAV_FRAME">The coordinate system of the fields: x, y, z.</field>
      <field type="int32_t" name="x">X coordinate of center point. Coordinate system depends on frame field: local = x position in meters * 1e4, global = latitude in degrees * 1e7.</field>
      <field type="int32_t" name="y">Y coordinate of center point.  Coordinate system depends on frame field: local = x position in meters * 1e4, global = latitude in degrees * 1e7.</field>
      <field type="float" name="z" units="m">Altitude of center point. Coordinate system depends on frame field.</field>
    </message>
    <message id="370" name="SMART_BATTERY_INFO">
      <deprecated since="2024-02" replaced_by="BATTERY_INFO">The BATTERY_INFO message is better aligned with UAVCAN messages, and in any case is useful even if a battery is not "smart".</deprecated>
      <description>Smart Battery information (static/infrequent update). Use for updates from: smart battery to flight stack, flight stack to GCS. Use BATTERY_STATUS for the frequent battery updates.</description>
      <field type="uint8_t" name="id" instance="true">Battery ID</field>
      <field type="uint8_t" name="battery_function" enum="MAV_BATTERY_FUNCTION">Function of the battery</field>
      <field type="uint8_t" name="type" enum="MAV_BATTERY_TYPE">Type (chemistry) of the battery</field>
      <field type="int32_t" name="capacity_full_specification" units="mAh" invalid="-1">Capacity when full according to manufacturer, -1: field not provided.</field>
      <field type="int32_t" name="capacity_full" units="mAh" invalid="-1">Capacity when full (accounting for battery degradation), -1: field not provided.</field>
      <field type="uint16_t" name="cycle_count" invalid="UINT16_MAX">Charge/discharge cycle count. UINT16_MAX: field not provided.</field>
      <field type="char[16]" name="serial_number" invalid="[0]">Serial number in ASCII characters, 0 terminated. All 0: field not provided.</field>
      <field type="char[50]" name="device_name" invalid="[0]">Static device name in ASCII characters, 0 terminated. All 0: field not provided. Encode as manufacturer name then product name separated using an underscore.</field>
      <field type="uint16_t" name="weight" units="g" invalid="0">Battery weight. 0: field not provided.</field>
      <field type="uint16_t" name="discharge_minimum_voltage" units="mV" invalid="UINT16_MAX">Minimum per-cell voltage when discharging. If not supplied set to UINT16_MAX value.</field>
      <field type="uint16_t" name="charging_minimum_voltage" units="mV" invalid="UINT16_MAX">Minimum per-cell voltage when charging. If not supplied set to UINT16_MAX value.</field>
      <field type="uint16_t" name="resting_minimum_voltage" units="mV" invalid="UINT16_MAX">Minimum per-cell voltage when resting. If not supplied set to UINT16_MAX value.</field>
      <extensions/>
      <field type="uint16_t" name="charging_maximum_voltage" units="mV" invalid="0">Maximum per-cell voltage when charged. 0: field not provided.</field>
      <field type="uint8_t" name="cells_in_series" invalid="0">Number of battery cells in series. 0: field not provided.</field>
      <field type="uint32_t" name="discharge_maximum_current" units="mA" invalid="0">Maximum pack discharge current. 0: field not provided.</field>
      <field type="uint32_t" name="discharge_maximum_burst_current" units="mA" invalid="0">Maximum pack discharge burst current. 0: field not provided.</field>
      <field type="char[11]" name="manufacture_date" invalid="[0]">Manufacture date (DD/MM/YYYY) in ASCII characters, 0 terminated. All 0: field not provided.</field>
    </message>
    <message id="371" name="FUEL_STATUS">
      <description>Fuel status.
        This message provides "generic" fuel level information for  in a GCS and for triggering failsafes in an autopilot.
        The fuel type and associated units for fields in this message are defined in the enum MAV_FUEL_TYPE.

        The reported `consumed_fuel` and `remaining_fuel` must only be supplied if measured: they must not be inferred from the `maximum_fuel` and the other value.
        A recipient can assume that if these fields are supplied they are accurate.
        If not provided, the recipient can infer `remaining_fuel` from `maximum_fuel` and `consumed_fuel` on the assumption that the fuel was initially at its maximum (this is what battery monitors assume).
        Note however that this is an assumption, and the UI should prompt the user appropriately (i.e. notify user that they should fill the tank before boot).

        This kind of information may also be sent in fuel-specific messages such as BATTERY_STATUS_V2.
        If both messages are sent for the same fuel system, the ids and corresponding information must match.

        This should be streamed (nominally at 0.1 Hz).
      </description>
      <field type="uint8_t" name="id" instance="true">Fuel ID. Must match ID of other messages for same fuel system, such as BATTERY_STATUS_V2.</field>
      <field type="float" name="maximum_fuel">Capacity when full. Must be provided.</field>
      <field type="float" name="consumed_fuel" invalid="NaN">Consumed fuel (measured). This value should not be inferred: if not measured set to NaN. NaN: field not provided.</field>
      <field type="float" name="remaining_fuel" invalid="NaN">Remaining fuel until empty (measured). The value should not be inferred: if not measured set to NaN. NaN: field not provided.</field>
      <field type="uint8_t" name="percent_remaining" units="%" invalid="UINT8_MAX">Percentage of remaining fuel, relative to full. Values: [0-100], UINT8_MAX: field not provided.</field>
      <field type="float" name="flow_rate" invalid="NaN">Positive value when emptying/using, and negative if filling/replacing. NaN: field not provided.</field>
      <field type="float" name="temperature" units="K" invalid="NaN">Fuel temperature. NaN: field not provided.</field>
      <field type="uint32_t" name="fuel_type" enum="MAV_FUEL_TYPE">Fuel type. Defines units for fuel capacity and consumption fields above.</field>
    </message>
    <message id="372" name="BATTERY_INFO">
      <wip/>
      <description>
        Battery information that is static, or requires infrequent update.
        This message should requested using MAV_CMD_REQUEST_MESSAGE and/or streamed at very low rate.
        BATTERY_STATUS_V2 is used for higher-rate battery status information.
      </description>
      <field type="uint8_t" name="id" instance="true">Battery ID</field>
      <field type="uint8_t" name="battery_function" enum="MAV_BATTERY_FUNCTION">Function of the battery.</field>
      <field type="uint8_t" name="type" enum="MAV_BATTERY_TYPE">Type (chemistry) of the battery.</field>
      <field type="uint8_t" name="state_of_health" units="%" invalid="UINT8_MAX">State of Health (SOH) estimate. Typically 100% at the time of manufacture and will decrease over time and use. -1: field not provided.</field>
      <field type="uint8_t" name="cells_in_series" invalid="0">Number of battery cells in series. 0: field not provided.</field>
      <field type="uint16_t" name="cycle_count" invalid="UINT16_MAX">Lifetime count of the number of charge/discharge cycles (https://en.wikipedia.org/wiki/Charge_cycle). UINT16_MAX: field not provided.</field>
      <field type="uint16_t" name="weight" units="g" invalid="0">Battery weight. 0: field not provided.</field>
      <field type="float" name="discharge_minimum_voltage" units="V" invalid="0">Minimum per-cell voltage when discharging. 0: field not provided.</field>
      <field type="float" name="charging_minimum_voltage" units="V" invalid="0">Minimum per-cell voltage when charging. 0: field not provided.</field>
      <field type="float" name="resting_minimum_voltage" units="V" invalid="0">Minimum per-cell voltage when resting. 0: field not provided.</field>
      <field type="float" name="charging_maximum_voltage" units="V" invalid="0">Maximum per-cell voltage when charged. 0: field not provided.</field>
      <field type="float" name="charging_maximum_current" units="A" invalid="0">Maximum pack continuous charge current. 0: field not provided.</field>
      <field type="float" name="nominal_voltage" units="V" invalid="0">Battery nominal voltage. Used for conversion between Wh and Ah. 0: field not provided.</field>
      <field type="float" name="discharge_maximum_current" units="A" invalid="0">Maximum pack discharge current. 0: field not provided.</field>
      <field type="float" name="discharge_maximum_burst_current" units="A" invalid="0">Maximum pack discharge burst current. 0: field not provided.</field>
      <field type="float" name="design_capacity" units="Ah" invalid="0">Fully charged design capacity. 0: field not provided.</field>
      <field type="float" name="full_charge_capacity" units="Ah" invalid="NaN">Predicted battery capacity when fully charged (accounting for battery degradation). NAN: field not provided.</field>
      <field type="char[9]" name="manufacture_date" invalid="[0]">Manufacture date (DDMMYYYY) in ASCII characters, 0 terminated. All 0: field not provided.</field>
      <field type="char[32]" name="serial_number" invalid="[0]">Serial number in ASCII characters, 0 terminated. All 0: field not provided.</field>
      <field type="char[50]" name="name" invalid="[0]">Battery device name. Formatted as manufacturer name then product name, separated with an underscore (in ASCII characters), 0 terminated. All 0: field not provided.</field>
    </message>
    <message id="373" name="GENERATOR_STATUS">
      <description>Telemetry of power generation system. Alternator or mechanical generator.</description>
      <field type="uint64_t" name="status" enum="MAV_GENERATOR_STATUS_FLAG">Status flags.</field>
      <field type="uint16_t" name="generator_speed" units="rpm" invalid="UINT16_MAX">Speed of electrical generator or alternator. UINT16_MAX: field not provided.</field>
      <field type="float" name="battery_current" units="A" invalid="NaN">Current into/out of battery. Positive for out. Negative for in. NaN: field not provided.</field>
      <field type="float" name="load_current" units="A" invalid="NaN">Current going to the UAV. If battery current not available this is the DC current from the generator. Positive for out. Negative for in. NaN: field not provided</field>
      <field type="float" name="power_generated" units="W" invalid="NaN">The power being generated. NaN: field not provided</field>
      <field type="float" name="bus_voltage" units="V">Voltage of the bus seen at the generator, or battery bus if battery bus is controlled by generator and at a different voltage to main bus.</field>
      <field type="int16_t" name="rectifier_temperature" units="degC" invalid="INT16_MAX">The temperature of the rectifier or power converter. INT16_MAX: field not provided.</field>
      <field type="float" name="bat_current_setpoint" units="A" invalid="NaN">The target battery current. Positive for out. Negative for in. NaN: field not provided</field>
      <field type="int16_t" name="generator_temperature" units="degC" invalid="INT16_MAX">The temperature of the mechanical motor, fuel cell core or generator. INT16_MAX: field not provided.</field>
      <field type="uint32_t" name="runtime" units="s" invalid="UINT32_MAX">Seconds this generator has run since it was rebooted. UINT32_MAX: field not provided.</field>
      <field type="int32_t" name="time_until_maintenance" units="s" invalid="INT32_MAX">Seconds until this generator requires maintenance.  A negative value indicates maintenance is past-due. INT32_MAX: field not provided.</field>
    </message>
    <message id="375" name="ACTUATOR_OUTPUT_STATUS">
      <description>The raw values of the actuator outputs (e.g. on Pixhawk, from MAIN, AUX ports). This message supersedes SERVO_OUTPUT_RAW.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (since system boot).</field>
      <field type="uint32_t" name="active">Active outputs</field>
      <field type="float[32]" name="actuator">Servo / motor output array values. Zero values indicate unused channels.</field>
    </message>
    <message id="380" name="TIME_ESTIMATE_TO_TARGET">
      <wip/>
      <!-- This message is work-in-progress it can therefore change, and should NOT be used in stable production environments -->
      <description>Time/duration estimates for various events and actions given the current vehicle state and position.</description>
      <field type="int32_t" name="safe_return" units="s">Estimated time to complete the vehicle's configured "safe return" action from its current position (e.g. RTL, Smart RTL, etc.). -1 indicates that the vehicle is landed, or that no time estimate available.</field>
      <field type="int32_t" name="land" units="s">Estimated time for vehicle to complete the LAND action from its current position. -1 indicates that the vehicle is landed, or that no time estimate available.</field>
      <field type="int32_t" name="mission_next_item" units="s" invalid="-1">Estimated time for reaching/completing the currently active mission item. -1 means no time estimate available.</field>
      <field type="int32_t" name="mission_end" units="s" invalid="-1">Estimated time for completing the current mission. -1 means no mission active and/or no estimate available.</field>
      <field type="int32_t" name="commanded_action" units="s" invalid="-1">Estimated time for completing the current commanded action (i.e. Go To, Takeoff, Land, etc.). -1 means no action active and/or no estimate available.</field>
    </message>
    <message id="385" name="TUNNEL">
      <description>Message for transporting "arbitrary" variable-length data from one component to another (broadcast is not forbidden, but discouraged). The encoding of the data is usually extension specific, i.e. determined by the source, and is usually not documented as part of the MAVLink specification.</description>
      <field type="uint8_t" name="target_system">System ID (can be 0 for broadcast, but this is discouraged)</field>
      <field type="uint8_t" name="target_component">Component ID (can be 0 for broadcast, but this is discouraged)</field>
      <field type="uint16_t" name="payload_type" enum="MAV_TUNNEL_PAYLOAD_TYPE">A code that identifies the content of the payload (0 for unknown, which is the default). If this code is less than 32768, it is a 'registered' payload type and the corresponding code should be added to the MAV_TUNNEL_PAYLOAD_TYPE enum. Software creators can register blocks of types as needed. Codes greater than 32767 are considered local experiments and should not be checked in to any widely distributed codebase.</field>
      <field type="uint8_t" name="payload_length">Length of the data transported in payload</field>
      <field type="uint8_t[128]" name="payload">Variable length payload. The payload length is defined by payload_length. The entire content of this block is opaque unless you understand the encoding specified by payload_type.</field>
    </message>
    <message id="386" name="CAN_FRAME">
      <description>A forwarded CAN frame as requested by MAV_CMD_CAN_FORWARD.</description>
      <field type="uint8_t" name="target_system">System ID.</field>
      <field type="uint8_t" name="target_component">Component ID.</field>
      <field type="uint8_t" name="bus">Bus number</field>
      <field type="uint8_t" name="len">Frame length</field>
      <field type="uint32_t" name="id">Frame ID</field>
      <field type="uint8_t[8]" name="data">Frame data</field>
    </message>
    <message id="390" name="ONBOARD_COMPUTER_STATUS">
      <wip/>
      <!-- This message is work-in-progress it can therefore change, and should NOT be used in stable production environments -->
      <description>Hardware status sent by an onboard computer.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.</field>
      <field type="uint32_t" name="uptime" units="ms">Time since system boot.</field>
      <field type="uint8_t" name="type">Type of the onboard computer: 0: Mission computer primary, 1: Mission computer backup 1, 2: Mission computer backup 2, 3: Compute node, 4-5: Compute spares, 6-9: Payload computers.</field>
      <field type="uint8_t[8]" name="cpu_cores" invalid="[UINT8_MAX]">CPU usage on the component in percent (100 - idle). A value of UINT8_MAX implies the field is unused.</field>
      <field type="uint8_t[10]" name="cpu_combined" invalid="[UINT8_MAX]">Combined CPU usage as the last 10 slices of 100 MS (a histogram). This allows to identify spikes in load that max out the system, but only for a short amount of time. A value of UINT8_MAX implies the field is unused.</field>
      <field type="uint8_t[4]" name="gpu_cores" invalid="[UINT8_MAX]">GPU usage on the component in percent (100 - idle). A value of UINT8_MAX implies the field is unused.</field>
      <field type="uint8_t[10]" name="gpu_combined" invalid="[UINT8_MAX]">Combined GPU usage as the last 10 slices of 100 MS (a histogram). This allows to identify spikes in load that max out the system, but only for a short amount of time. A value of UINT8_MAX implies the field is unused.</field>
      <field type="int8_t" name="temperature_board" units="degC" invalid="INT8_MAX">Temperature of the board. A value of INT8_MAX implies the field is unused.</field>
      <field type="int8_t[8]" name="temperature_core" units="degC" invalid="[INT8_MAX]">Temperature of the CPU core. A value of INT8_MAX implies the field is unused.</field>
      <field type="int16_t[4]" name="fan_speed" units="rpm" invalid="[INT16_MAX]">Fan speeds. A value of INT16_MAX implies the field is unused.</field>
      <field type="uint32_t" name="ram_usage" units="MiB" invalid="UINT32_MAX">Amount of used RAM on the component system. A value of UINT32_MAX implies the field is unused.</field>
      <field type="uint32_t" name="ram_total" units="MiB" invalid="UINT32_MAX">Total amount of RAM on the component system. A value of UINT32_MAX implies the field is unused.</field>
      <field type="uint32_t[4]" name="storage_type" invalid="[UINT32_MAX]">Storage type: 0: HDD, 1: SSD, 2: EMMC, 3: SD card (non-removable), 4: SD card (removable). A value of UINT32_MAX implies the field is unused.</field>
      <field type="uint32_t[4]" name="storage_usage" units="MiB" invalid="[UINT32_MAX]">Amount of used storage space on the component system. A value of UINT32_MAX implies the field is unused.</field>
      <field type="uint32_t[4]" name="storage_total" units="MiB" invalid="[UINT32_MAX]">Total amount of storage space on the component system. A value of UINT32_MAX implies the field is unused.</field>
      <field type="uint32_t[6]" name="link_type">Link type: 0-9: UART, 10-19: Wired network, 20-29: Wifi, 30-39: Point-to-point proprietary, 40-49: Mesh proprietary</field>
      <field type="uint32_t[6]" name="link_tx_rate" units="KiB/s" invalid="[UINT32_MAX]">Network traffic from the component system. A value of UINT32_MAX implies the field is unused.</field>
      <field type="uint32_t[6]" name="link_rx_rate" units="KiB/s" invalid="[UINT32_MAX]">Network traffic to the component system. A value of UINT32_MAX implies the field is unused.</field>
      <field type="uint32_t[6]" name="link_tx_max" units="KiB/s" invalid="[UINT32_MAX]">Network capacity from the component system. A value of UINT32_MAX implies the field is unused.</field>
      <field type="uint32_t[6]" name="link_rx_max" units="KiB/s" invalid="[UINT32_MAX]">Network capacity to the component system. A value of UINT32_MAX implies the field is unused.</field>
    </message>
    <message id="395" name="COMPONENT_INFORMATION">
      <deprecated since="2022-04" replaced_by="COMPONENT_METADATA"/>
      <description>
        Component information message, which may be requested using MAV_CMD_REQUEST_MESSAGE.
      </description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint32_t" name="general_metadata_file_crc">CRC32 of the general metadata file (general_metadata_uri).</field>
      <field type="char[100]" name="general_metadata_uri">MAVLink FTP URI for the general metadata file (COMP_METADATA_TYPE_GENERAL), which may be compressed with xz. The file contains general component metadata, and may contain URI links for additional metadata (see COMP_METADATA_TYPE). The information is static from boot, and may be generated at compile time. The string needs to be zero terminated.</field>
      <field type="uint32_t" name="peripherals_metadata_file_crc">CRC32 of peripherals metadata file (peripherals_metadata_uri).</field>
      <field type="char[100]" name="peripherals_metadata_uri">(Optional) MAVLink FTP URI for the peripherals metadata file (COMP_METADATA_TYPE_PERIPHERALS), which may be compressed with xz. This contains data about "attached components" such as UAVCAN nodes. The peripherals are in a separate file because the information must be generated dynamically at runtime. The string needs to be zero terminated.</field>
    </message>
    <message id="396" name="COMPONENT_INFORMATION_BASIC">
      <description>Basic component information data. Should be requested using MAV_CMD_REQUEST_MESSAGE on startup, or when required.</description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint64_t" name="capabilities" enum="MAV_PROTOCOL_CAPABILITY">Component capability flags</field>
      <field type="uint32_t" name="time_manufacture_s" units="s" invalid="0">Date of manufacture as a UNIX Epoch time (since 1.1.1970) in seconds.</field>
      <field type="char[32]" name="vendor_name">Name of the component vendor. Needs to be zero terminated. The field is optional and can be empty/all zeros.</field>
      <field type="char[32]" name="model_name">Name of the component model. Needs to be zero terminated. The field is optional and can be empty/all zeros.</field>
      <field type="char[24]" name="software_version">Software version. The recommended format is SEMVER: 'major.minor.patch'  (any format may be used). The field must be zero terminated if it has a value. The field is optional and can be empty/all zeros.</field>
      <field type="char[24]" name="hardware_version">Hardware version. The recommended format is SEMVER: 'major.minor.patch'  (any format may be used). The field must be zero terminated if it has a value. The field is optional and can be empty/all zeros.</field>
      <field type="char[32]" name="serial_number">Hardware serial number. The field must be zero terminated if it has a value. The field is optional and can be empty/all zeros.</field>
    </message>
    <message id="397" name="COMPONENT_METADATA">
      <wip/>
      <!-- This message is work-in-progress it can therefore change, and should NOT be used in stable production environments -->
      <description>
        Component metadata message, which may be requested using MAV_CMD_REQUEST_MESSAGE.

        This contains the MAVLink FTP URI and CRC for the component's general metadata file.
        The file must be hosted on the component, and may be xz compressed.
        The file CRC can be used for file caching.

        The general metadata file can be read to get the locations of other metadata files (COMP_METADATA_TYPE) and translations, which may be hosted either on the vehicle or the internet.
        For more information see: https://mavlink.io/en/services/component_information.html.

        Note: Camera components should use CAMERA_INFORMATION instead, and autopilots may use both this message and AUTOPILOT_VERSION.
      </description>
      <field type="uint32_t" name="time_boot_ms" units="ms">Timestamp (time since system boot).</field>
      <field type="uint32_t" name="file_crc">CRC32 of the general metadata file.</field>
      <field type="char[100]" name="uri">MAVLink FTP URI for the general metadata file (COMP_METADATA_TYPE_GENERAL), which may be compressed with xz. The file contains general component metadata, and may contain URI links for additional metadata (see COMP_METADATA_TYPE). The information is static from boot, and may be generated at compile time. The string needs to be zero terminated.</field>
    </message>
    <message id="400" name="PLAY_TUNE_V2">
      <description>Play vehicle tone/tune (buzzer). Supersedes message PLAY_TUNE.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint32_t" name="format" enum="TUNE_FORMAT">Tune format</field>
      <field type="char[248]" name="tune">Tune definition as a NULL-terminated string.</field>
    </message>
    <message id="401" name="SUPPORTED_TUNES">
      <description>Tune formats supported by vehicle. This should be emitted as response to MAV_CMD_REQUEST_MESSAGE.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint32_t" name="format" enum="TUNE_FORMAT">Bitfield of supported tune formats.</field>
    </message>
    <!-- Events Protocol -->
    <message id="410" name="EVENT">
      <wip/>
      <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Event message. Each new event from a particular component gets a new sequence number. The same message might be sent multiple times if (re-)requested. Most events are broadcast, some can be specific to a target component (as receivers keep track of the sequence for missed events, all events need to be broadcast. Thus we use destination_component instead of target_component).</description>
      <field type="uint8_t" name="destination_component">Component ID</field>
      <field type="uint8_t" name="destination_system">System ID</field>
      <field type="uint32_t" name="id">Event ID (as defined in the component metadata)</field>
      <field type="uint32_t" name="event_time_boot_ms" units="ms">Timestamp (time since system boot when the event happened).</field>
      <field type="uint16_t" name="sequence">Sequence number.</field>
      <field type="uint8_t" name="log_levels">Log levels: 4 bits MSB: internal (for logging purposes), 4 bits LSB: external. Levels: Emergency = 0, Alert = 1, Critical = 2, Error = 3, Warning = 4, Notice = 5, Info = 6, Debug = 7, Protocol = 8, Disabled = 9</field>
      <field type="uint8_t[40]" name="arguments">Arguments (depend on event ID).</field>
    </message>
    <message id="411" name="CURRENT_EVENT_SEQUENCE">
      <wip/>
      <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Regular broadcast for the current latest event sequence number for a component. This is used to check for dropped events.</description>
      <field type="uint16_t" name="sequence">Sequence number.</field>
      <field type="uint8_t" name="flags" enum="MAV_EVENT_CURRENT_SEQUENCE_FLAGS">Flag bitset.</field>
    </message>
    <message id="412" name="REQUEST_EVENT">
      <wip/>
      <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Request one or more events to be (re-)sent. If first_sequence==last_sequence, only a single event is requested. Note that first_sequence can be larger than last_sequence (because the sequence number can wrap). Each sequence will trigger an EVENT or EVENT_ERROR response.</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="first_sequence">First sequence number of the requested event.</field>
      <field type="uint16_t" name="last_sequence">Last sequence number of the requested event.</field>
    </message>
    <message id="413" name="RESPONSE_EVENT_ERROR">
      <wip/>
      <!-- This message is work-in-progress and it can therefore change. It should NOT be used in stable production environments. -->
      <description>Response to a REQUEST_EVENT in case of an error (e.g. the event is not available anymore).</description>
      <field type="uint8_t" name="target_system">System ID</field>
      <field type="uint8_t" name="target_component">Component ID</field>
      <field type="uint16_t" name="sequence">Sequence number.</field>
      <field type="uint16_t" name="sequence_oldest_available">Oldest Sequence number that is still available after the sequence set in REQUEST_EVENT.</field>
      <field type="uint8_t" name="reason" enum="MAV_EVENT_ERROR_REASON">Error reason.</field>
    </message>
    <message id="435" name="AVAILABLE_MODES">
      <description>Information about a flight mode.

        The message can be enumerated to get information for all modes, or requested for a particular mode, using MAV_CMD_REQUEST_MESSAGE.
        Specify 0 in param2 to request that the message is emitted for all available modes or the specific index for just one mode.
        The modes must be available/settable for the current vehicle/frame type.
        Each mode should only be emitted once (even if it is both standard and custom).
        Note that the current mode should be emitted in CURRENT_MODE, and that if the mode list can change then AVAILABLE_MODES_MONITOR must be emitted on first change and subsequently streamed.
        See https://mavlink.io/en/services/standard_modes.html
      </description>
      <field type="uint8_t" name="number_modes">The total number of available modes for the current vehicle type.</field>
      <field type="uint8_t" name="mode_index">The current mode index within number_modes, indexed from 1. The index is not guaranteed to be persistent, and may change between reboots or if the set of modes change.</field>
      <field type="uint8_t" name="standard_mode" enum="MAV_STANDARD_MODE">Standard mode.</field>
      <field type="uint32_t" name="custom_mode">A bitfield for use for autopilot-specific flags</field>
      <field type="uint32_t" name="properties" enum="MAV_MODE_PROPERTY">Mode properties.</field>
      <field type="char[35]" name="mode_name">Name of custom mode, with null termination character. Should be omitted for standard modes.</field>
    </message>
    <message id="436" name="CURRENT_MODE">
      <description>Get the current mode.
        This should be emitted on any mode change, and broadcast at low rate (nominally 0.5 Hz).
        It may be requested using MAV_CMD_REQUEST_MESSAGE.
        See https://mavlink.io/en/services/standard_modes.html
      </description>
      <field type="uint8_t" name="standard_mode" enum="MAV_STANDARD_MODE">Standard mode.</field>
      <field type="uint32_t" name="custom_mode">A bitfield for use for autopilot-specific flags</field>
      <field type="uint32_t" name="intended_custom_mode" invalid="0">The custom_mode of the mode that was last commanded by the user (for example, with MAV_CMD_DO_SET_STANDARD_MODE, MAV_CMD_DO_SET_MODE or via RC). This should usually be the same as custom_mode. It will be different if the vehicle is unable to enter the intended mode, or has left that mode due to a failsafe condition. 0 indicates the intended custom mode is unknown/not supplied</field>
    </message>
    <message id="437" name="AVAILABLE_MODES_MONITOR">
      <description>A change to the sequence number indicates that the set of AVAILABLE_MODES has changed.
        A receiver must re-request all available modes whenever the sequence number changes.
        This is only emitted after the first change and should then be broadcast at low rate (nominally 0.3 Hz) and on change.
        See https://mavlink.io/en/services/standard_modes.html
      </description>
      <field type="uint8_t" name="seq">Sequence number. The value iterates sequentially whenever AVAILABLE_MODES changes (e.g. support for a new mode is added/removed dynamically).</field>
    </message>
    <message id="440" name="ILLUMINATOR_STATUS">
      <description>Illuminator status</description>
      <field type="uint32_t" name="uptime_ms" units="ms">Time since the start-up of the illuminator in ms</field>
      <field type="uint8_t" name="enable">0: Illuminators OFF, 1: Illuminators ON</field>
      <field type="uint8_t" name="mode_bitmask" enum="ILLUMINATOR_MODE">Supported illuminator modes</field>
      <field type="uint32_t" name="error_status" enum="ILLUMINATOR_ERROR_FLAGS">Errors</field>
      <field type="uint8_t" name="mode" enum="ILLUMINATOR_MODE">Illuminator mode</field>
      <field type="float" name="brightness" units="%">Illuminator brightness</field>
      <field type="float" name="strobe_period" units="s">Illuminator strobing period in seconds</field>
      <field type="float" name="strobe_duty_cycle" units="%">Illuminator strobing duty cycle</field>
      <field type="float" name="temp_c">Temperature in Celsius</field>
      <field type="float" name="min_strobe_period" units="s">Minimum strobing period in seconds</field>
      <field type="float" name="max_strobe_period" units="s">Maximum strobing period in seconds</field>
    </message>
    <!-- The message ids 510 and 511 are reserved for ABSOLUTE_TARGET and RELATIVE_TARGET, currently in development.xml. -->
    <message id="387" name="CANFD_FRAME">
      <description>A forwarded CANFD frame as requested by MAV_CMD_CAN_FORWARD. These are separated from CAN_FRAME as they need different handling (eg. TAO handling)</description>
      <field type="uint8_t" name="target_system">System ID.</field>
      <field type="uint8_t" name="target_component">Component ID.</field>
      <field type="uint8_t" name="bus">bus number</field>
      <field type="uint8_t" name="len">Frame length</field>
      <field type="uint32_t" name="id">Frame ID</field>
      <field type="uint8_t[64]" name="data">Frame data</field>
    </message>
    <message id="388" name="CAN_FILTER_MODIFY">
      <description>Modify the filter of what CAN messages to forward over the mavlink. This can be used to make CAN forwarding work well on low bandwidth links. The filtering is applied on bits 8 to 24 of the CAN id (2nd and 3rd bytes) which corresponds to the DroneCAN message ID for DroneCAN. Filters with more than 16 IDs can be constructed by sending multiple CAN_FILTER_MODIFY messages.</description>
      <field type="uint8_t" name="target_system">System ID.</field>
      <field type="uint8_t" name="target_component">Component ID.</field>
      <field type="uint8_t" name="bus">bus number</field>
      <field type="uint8_t" name="operation" enum="CAN_FILTER_OP">what operation to perform on the filter list. See CAN_FILTER_OP enum.</field>
      <field type="uint8_t" name="num_ids">number of IDs in filter list</field>
      <field type="uint16_t[16]" name="ids">filter IDs, length num_ids</field>
    </message>
    <!-- Rover specific messages -->
    <message id="9000" name="WHEEL_DISTANCE">
      <description>Cumulative distance traveled for each reported wheel.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (synced to UNIX time or since system boot).</field>
      <field type="uint8_t" name="count">Number of wheels reported.</field>
      <field type="double[16]" name="distance" units="m">Distance reported by individual wheel encoders. Forward rotations increase values, reverse rotations decrease them. Not all wheels will necessarily have wheel encoders; the mapping of encoders to wheel positions must be agreed/understood by the endpoints.</field>
    </message>
    <message id="9005" name="WINCH_STATUS">
      <description>Winch status.</description>
      <field type="uint64_t" name="time_usec" units="us">Timestamp (synced to UNIX time or since system boot).</field>
      <field type="float" name="line_length" units="m" invalid="NaN">Length of line released. NaN if unknown</field>
      <field type="float" name="speed" units="m/s" invalid="NaN">Speed line is being released or retracted. Positive values if being released, negative values if being retracted, NaN if unknown</field>
      <field type="float" name="tension" units="kg" invalid="NaN">Tension on the line. NaN if unknown</field>
      <field type="float" name="voltage" units="V" invalid="NaN">Voltage of the battery supplying the winch. NaN if unknown</field>
      <field type="float" name="current" units="A" invalid="NaN">Current draw from the winch. NaN if unknown</field>
      <field type="int16_t" name="temperature" units="degC" invalid="INT16_MAX">Temperature of the motor. INT16_MAX if unknown</field>
      <field type="uint32_t" name="status" enum="MAV_WINCH_STATUS_FLAG">Status flags</field>
    </message>
    <message id="12900" name="OPEN_DRONE_ID_BASIC_ID">
      <description>Data for filling the OpenDroneID Basic ID message. This and the below messages are primarily meant for feeding data to/from an OpenDroneID implementation. E.g. https://github.com/opendroneid/opendroneid-core-c. These messages are compatible with the ASTM F3411 Remote ID standard and the ASD-STAN prEN 4709-002 Direct Remote ID standard. Additional information and usage of these messages is documented at https://mavlink.io/en/services/opendroneid.html.</description>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
      <field type="uint8_t[20]" name="id_or_mac">Only used for drone ID data received from other UAs. See detailed description at https://mavlink.io/en/services/opendroneid.html. </field>
      <field type="uint8_t" name="id_type" enum="MAV_ODID_ID_TYPE">Indicates the format for the uas_id field of this message.</field>
      <field type="uint8_t" name="ua_type" enum="MAV_ODID_UA_TYPE">Indicates the type of UA (Unmanned Aircraft).</field>
      <field type="uint8_t[20]" name="uas_id">UAS (Unmanned Aircraft System) ID following the format specified by id_type. Shall be filled with nulls in the unused portion of the field.</field>
    </message>
    <message id="12901" name="OPEN_DRONE_ID_LOCATION">
      <description>Data for filling the OpenDroneID Location message. The float data types are 32-bit IEEE 754. The Location message provides the location, altitude, direction and speed of the aircraft.</description>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
      <field type="uint8_t[20]" name="id_or_mac">Only used for drone ID data received from other UAs. See detailed description at https://mavlink.io/en/services/opendroneid.html. </field>
      <field type="uint8_t" name="status" enum="MAV_ODID_STATUS">Indicates whether the unmanned aircraft is on the ground or in the air.</field>
      <field type="uint16_t" name="direction" units="cdeg" invalid="36100">Direction over ground (not heading, but direction of movement) measured clockwise from true North: 0 - 35999 centi-degrees. If unknown: 36100 centi-degrees.</field>
      <field type="uint16_t" name="speed_horizontal" units="cm/s">Ground speed. Positive only. If unknown: 25500 cm/s. If speed is larger than 25425 cm/s, use 25425 cm/s.</field>
      <field type="int16_t" name="speed_vertical" units="cm/s">The vertical speed. Up is positive. If unknown: 6300 cm/s. If speed is larger than 6200 cm/s, use 6200 cm/s. If lower than -6200 cm/s, use -6200 cm/s.</field>
      <field type="int32_t" name="latitude" units="degE7" invalid="0">Current latitude of the unmanned aircraft. If unknown: 0 (both Lat/Lon).</field>
      <field type="int32_t" name="longitude" units="degE7" invalid="0">Current longitude of the unmanned aircraft. If unknown: 0 (both Lat/Lon).</field>
      <field type="float" name="altitude_barometric" units="m" invalid="-1000">The altitude calculated from the barometric pressue. Reference is against 29.92inHg or 1013.2mb. If unknown: -1000 m.</field>
      <field type="float" name="altitude_geodetic" units="m" invalid="-1000">The geodetic altitude as defined by WGS84. If unknown: -1000 m.</field>
      <field type="uint8_t" name="height_reference" enum="MAV_ODID_HEIGHT_REF">Indicates the reference point for the height field.</field>
      <field type="float" name="height" units="m" invalid="-1000">The current height of the unmanned aircraft above the take-off location or the ground as indicated by height_reference. If unknown: -1000 m.</field>
      <field type="uint8_t" name="horizontal_accuracy" enum="MAV_ODID_HOR_ACC">The accuracy of the horizontal position.</field>
      <field type="uint8_t" name="vertical_accuracy" enum="MAV_ODID_VER_ACC">The accuracy of the vertical position.</field>
      <field type="uint8_t" name="barometer_accuracy" enum="MAV_ODID_VER_ACC">The accuracy of the barometric altitude.</field>
      <field type="uint8_t" name="speed_accuracy" enum="MAV_ODID_SPEED_ACC">The accuracy of the horizontal and vertical speed.</field>
      <field type="float" name="timestamp" units="s" invalid="0xFFFF">Seconds after the full hour with reference to UTC time. Typically the GPS outputs a time-of-week value in milliseconds. First convert that to UTC and then convert for this field using ((float) (time_week_ms % (60*60*1000))) / 1000. If unknown: 0xFFFF.</field>
      <field type="uint8_t" name="timestamp_accuracy" enum="MAV_ODID_TIME_ACC">The accuracy of the timestamps.</field>
    </message>
    <message id="12902" name="OPEN_DRONE_ID_AUTHENTICATION">
      <description>Data for filling the OpenDroneID Authentication message. The Authentication Message defines a field that can provide a means of authenticity for the identity of the UAS (Unmanned Aircraft System). The Authentication message can have two different formats. For data page 0, the fields PageCount, Length and TimeStamp are present and AuthData is only 17 bytes. For data page 1 through 15, PageCount, Length and TimeStamp are not present and the size of AuthData is 23 bytes.</description>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
      <field type="uint8_t[20]" name="id_or_mac">Only used for drone ID data received from other UAs. See detailed description at https://mavlink.io/en/services/opendroneid.html. </field>
      <field type="uint8_t" name="authentication_type" enum="MAV_ODID_AUTH_TYPE">Indicates the type of authentication.</field>
      <field type="uint8_t" name="data_page">Allowed range is 0 - 15.</field>
      <field type="uint8_t" name="last_page_index">This field is only present for page 0. Allowed range is 0 - 15. See the description of struct ODID_Auth_data at https://github.com/opendroneid/opendroneid-core-c/blob/master/libopendroneid/opendroneid.h.</field>
      <field type="uint8_t" name="length" units="bytes">This field is only present for page 0. Total bytes of authentication_data from all data pages. See the description of struct ODID_Auth_data at https://github.com/opendroneid/opendroneid-core-c/blob/master/libopendroneid/opendroneid.h.</field>
      <field type="uint32_t" name="timestamp" units="s">This field is only present for page 0. 32 bit Unix Timestamp in seconds since 00:00:00 01/01/2019.</field>
      <field type="uint8_t[23]" name="authentication_data">Opaque authentication data. For page 0, the size is only 17 bytes. For other pages, the size is 23 bytes. Shall be filled with nulls in the unused portion of the field.</field>
    </message>
    <message id="12903" name="OPEN_DRONE_ID_SELF_ID">
      <description>Data for filling the OpenDroneID Self ID message. The Self ID Message is an opportunity for the operator to (optionally) declare their identity and purpose of the flight. This message can provide additional information that could reduce the threat profile of a UA (Unmanned Aircraft) flying in a particular area or manner. This message can also be used to provide optional additional clarification in an emergency/remote ID system failure situation.</description>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
      <field type="uint8_t[20]" name="id_or_mac">Only used for drone ID data received from other UAs. See detailed description at https://mavlink.io/en/services/opendroneid.html. </field>
      <field type="uint8_t" name="description_type" enum="MAV_ODID_DESC_TYPE">Indicates the type of the description field.</field>
      <field type="char[23]" name="description">Text description or numeric value expressed as ASCII characters. Shall be filled with nulls in the unused portion of the field.</field>
    </message>
    <message id="12904" name="OPEN_DRONE_ID_SYSTEM">
      <description>Data for filling the OpenDroneID System message. The System Message contains general system information including the operator location/altitude and possible aircraft group and/or category/class information.</description>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
      <field type="uint8_t[20]" name="id_or_mac">Only used for drone ID data received from other UAs. See detailed description at https://mavlink.io/en/services/opendroneid.html. </field>
      <field type="uint8_t" name="operator_location_type" enum="MAV_ODID_OPERATOR_LOCATION_TYPE">Specifies the operator location type.</field>
      <field type="uint8_t" name="classification_type" enum="MAV_ODID_CLASSIFICATION_TYPE">Specifies the classification type of the UA.</field>
      <field type="int32_t" name="operator_latitude" units="degE7" invalid="0">Latitude of the operator. If unknown: 0 (both Lat/Lon).</field>
      <field type="int32_t" name="operator_longitude" units="degE7" invalid="0">Longitude of the operator. If unknown: 0 (both Lat/Lon).</field>
      <field type="uint16_t" name="area_count">Number of aircraft in the area, group or formation (default 1). Used only for swarms/multiple UA.</field>
      <field type="uint16_t" name="area_radius" units="m">Radius of the cylindrical area of the group or formation (default 0). Used only for swarms/multiple UA.</field>
      <field type="float" name="area_ceiling" units="m" invalid="-1000">Area Operations Ceiling relative to WGS84. If unknown: -1000 m. Used only for swarms/multiple UA.</field>
      <field type="float" name="area_floor" units="m" invalid="-1000">Area Operations Floor relative to WGS84. If unknown: -1000 m. Used only for swarms/multiple UA.</field>
      <field type="uint8_t" name="category_eu" enum="MAV_ODID_CATEGORY_EU">When classification_type is MAV_ODID_CLASSIFICATION_TYPE_EU, specifies the category of the UA.</field>
      <field type="uint8_t" name="class_eu" enum="MAV_ODID_CLASS_EU">When classification_type is MAV_ODID_CLASSIFICATION_TYPE_EU, specifies the class of the UA.</field>
      <field type="float" name="operator_altitude_geo" units="m" invalid="-1000">Geodetic altitude of the operator relative to WGS84. If unknown: -1000 m.</field>
      <field type="uint32_t" name="timestamp" units="s">32 bit Unix Timestamp in seconds since 00:00:00 01/01/2019.</field>
    </message>
    <message id="12905" name="OPEN_DRONE_ID_OPERATOR_ID">
      <description>Data for filling the OpenDroneID Operator ID message, which contains the CAA (Civil Aviation Authority) issued operator ID.</description>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
      <field type="uint8_t[20]" name="id_or_mac">Only used for drone ID data received from other UAs. See detailed description at https://mavlink.io/en/services/opendroneid.html. </field>
      <field type="uint8_t" name="operator_id_type" enum="MAV_ODID_OPERATOR_ID_TYPE">Indicates the type of the operator_id field.</field>
      <field type="char[20]" name="operator_id">Text description or numeric value expressed as ASCII characters. Shall be filled with nulls in the unused portion of the field.</field>
    </message>
    <!-- The message ids 12906 - 12914 are reserved for OpenDroneID. -->
    <message id="12915" name="OPEN_DRONE_ID_MESSAGE_PACK">
      <description>An OpenDroneID message pack is a container for multiple encoded OpenDroneID messages (i.e. not in the format given for the above message descriptions but after encoding into the compressed OpenDroneID byte format). Used e.g. when transmitting on Bluetooth 5.0 Long Range/Extended Advertising or on WiFi Neighbor Aware Networking or on WiFi Beacon.</description>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
      <field type="uint8_t[20]" name="id_or_mac">Only used for drone ID data received from other UAs. See detailed description at https://mavlink.io/en/services/opendroneid.html. </field>
      <field type="uint8_t" name="single_message_size" units="bytes">This field must currently always be equal to 25 (bytes), since all encoded OpenDroneID messages are specified to have this length.</field>
      <field type="uint8_t" name="msg_pack_size">Number of encoded messages in the pack (not the number of bytes). Allowed range is 1 - 9.</field>
      <field type="uint8_t[225]" name="messages">Concatenation of encoded OpenDroneID messages. Shall be filled with nulls in the unused portion of the field.</field>
    </message>
    <!-- The message ids 12916 - 12917 are reserved for OpenDroneID. -->
    <message id="12918" name="OPEN_DRONE_ID_ARM_STATUS">
      <description>Transmitter (remote ID system) is enabled and ready to start sending location and other required information. This is streamed by transmitter. A flight controller uses it as a condition to arm.</description>
      <field type="uint8_t" name="status" enum="MAV_ODID_ARM_STATUS">Status level indicating if arming is allowed.</field>
      <field type="char[50]" name="error">Text error message, should be empty if status is good to arm. Fill with nulls in unused portion.</field>
    </message>
    <message id="12919" name="OPEN_DRONE_ID_SYSTEM_UPDATE">
      <description>Update the data in the OPEN_DRONE_ID_SYSTEM message with new location information. This can be sent to update the location information for the operator when no other information in the SYSTEM message has changed. This message allows for efficient operation on radio links which have limited uplink bandwidth while meeting requirements for update frequency of the operator location.</description>
      <field type="uint8_t" name="target_system">System ID (0 for broadcast).</field>
      <field type="uint8_t" name="target_component">Component ID (0 for broadcast).</field>
      <field type="int32_t" name="operator_latitude" units="degE7" invalid="0">Latitude of the operator. If unknown: 0 (both Lat/Lon).</field>
      <field type="int32_t" name="operator_longitude" units="degE7" invalid="0">Longitude of the operator. If unknown: 0 (both Lat/Lon).</field>
      <field type="float" name="operator_altitude_geo" units="m" invalid="-1000">Geodetic altitude of the operator relative to WGS84. If unknown: -1000 m.</field>
      <field type="uint32_t" name="timestamp" units="s">32 bit Unix Timestamp in seconds since 00:00:00 01/01/2019.</field>
    </message>
    <message id="12920" name="HYGROMETER_SENSOR">
      <description>Temperature and humidity from hygrometer.</description>
      <field type="uint8_t" name="id" instance="true">Hygrometer ID</field>
      <field type="int16_t" name="temperature" units="cdegC">Temperature</field>
      <field type="uint16_t" name="humidity" units="c%">Humidity</field>
    </message>
  </messages>
</mavlink>