2.4.22
What's Changed
- Add a Gitter chat link to README.txt by @gitter-badger in #11
- Python 3: except Exception as e: remove comma by @cclauss in #17
- Fix mavlogfile class for generic log files that have no timestamps. by @phollands in #24
- flake8 support and cleanups by @peterbarker in #26
- Add #include <stdbool.h> by @CarloWood in #22
- Payload field of struct is now correctly labeled within the Wireshark filter string by @courtarro in #31
- mavutil.py: OFFBOARD mode interpretation fix by @bkakilli in #32
- Readme: add more instructions by @khancyr in #36
- setup.py: generate file during install instead of before by @khancyr in #33
- mavlogdump: add px4log format to bin log file extenxsions by @bugobliterator in #40
- Java: Fix a race condition with a static member by @WickedShell in #44
- Update Readme by @khancyr in #37
- Java: Fix up some performance related bugs found by findbugs by @WickedShell in #49
- Java: Enhance the debug prints to include sysid/compid by @WickedShell in #54
- Document a bit on how to get this running on windows by @amilcarlucas in #48
- add interactive fft plotter by @kd0aij in #57
- WIP: add dropout check to fft plotter by @kd0aij in #58
- Add a file attribute to the XML schema by @WickedShell in #59
- Define long for Python 3 by @cclauss in #52
- Update mavgen_wlua.py by @renzhelou in #45
- MAVLink Swift 3 library generator by @modnovolyk in #29
- s/bitmask/display/ like discussed on the devmeeting, the xml already … by @amilcarlucas in #63
- generator/C: fix mavlink v2.0 parser bug by @julianoes in #64
- Compilation bugfix for certain compilers: array initialization with n… by @mazahner in #65
- use measured sample rates in mavfft_int by @kd0aij in #61
- Home page is pymavlink, not mavlink by @cclauss in #70
- Fix mavschema.xsd by @OXINARF in #72
- mavkml.py uses os.path but did not import os by @larsks in #75
- Add missing PX4 modes by @sanderux in #80
- A GUI tool that can be used to calculate telemetry link datarates by @amilcarlucas in #73
- mavgen_c.py: fix python3 message_name_array constructor by @khancyr in #82
- Update mode mappings for ArduSub by @jaxxzer in #85
- Update README.md by @bradh in #92
- Update README.md by @bradh in #91
- Update telemetry streams for copter by @amilcarlucas in #88
- Python 3.3 end of life by @cclauss in #105
- fix offboard mode by @Huibean in #101
- Simplify with dict.get() with default value by @cclauss in #113
- Add source_component parameter to mavfile constructors by @jaxxzer in #103
- mavtelemetry_datarates.py: lengths_dict = None by @cclauss in #115
- Fix the mavgen_c import in mavgen_cpp11.py by @kartikmohta in #84
- Fixed an issue with the way that the Java Import statements were generated. by @byron-conroy in #122
- DFReader: Remove trailing whitespace & semicolons by @cclauss in #125
- import sys for line 22 by @cclauss in #134
- Define raw_input() for Python 3 by @cclauss in #136
- C_API_v2.0: skip payload read when len is null ( fix: #97 ) by @az0uz in #98
- fix: mavlink_sha256.h sz type by @az0uz in #93
- Use ArduPilot downstream git repository in the travis tests by @amilcarlucas in #140
- Add an enumeration restriction to validate the units attribute by @amilcarlucas in #139
- Remove unneeded .close() statements by @pietrodn in #146
- mavlogdump: add --show-available-types option by @Williangalvani in #147
- Fix duplicate key in package_data (setup.py) by @pietrodn in #149
- README: add travis status by @khancyr in #83
- Update web link for documentation by @khancyr in #154
- mavutil: Add ACRO mode for rover by @danielwidmann in #165
- Improve examples documentation by @pedroblanc in #158
- mavutil: always raise exception on tcp connect failure by @peterbarker in #163
- Add future to setup_requires in setup.py by @pietrodn in #164
- Added decimetres to the list of valid SI units by @amilcarlucas in #167
- Update with ArduCopter 3.6.0 streams by @amilcarlucas in #173
- protocol.h: fix GCC warning: type qualifiers ignored on cast result type by @bkueng in #176
- Minor comment improvements on generated C code (NFC) by @amilcarlucas in #178
- mavlink 2.0 lua support by @daodao2007 in #166
- tools: fixed mavlogdump for binary output by @tridge in #180
- Add units information to the documentation of the generated code by @amilcarlucas in #181
- Print proper xsd Syntax Errors if found by @amilcarlucas in #185
- Add units required by ESC_TELEMETRY_* messages by @amilcarlucas in #187
- mavutil: add support for autoreconnect on tcp: connections by @peterbarker in #188
- Unit testing framework and example by @stephendade in #192
- Add support for deprecation of messages by @amilcarlucas in #182
- Restore null pointer detection in parser. by @rolandash in #169
- Improve mavgpslag usage information by @amilcarlucas in #197
- Remove MAVLink v0.9 support from gen_js.sh by @hamishwillee in #201
- mavlogdump: Make headers use csv_sep when outputting csv by @Williangalvani in #183
- Fix Java package name generation on Windows by @jason-watkins in #189
- travis: Add trailing space test in flake8 by @patrickelectric in #148
- mavnative: fix compiler warning on missing case by @khancyr in #206
- Replace dpixels with dpix for consistency with already existing pix units by @amilcarlucas in #193
- Mark WIP messages using XML markup by @amilcarlucas in #205
- Correct kibibyte and mebibyte units by @amilcarlucas in #194
- mavutil: add force-connect option by @peterbarker in #39
- DFReader.py: correct dumping of array fields by @peterbarker in #218
- Added centimetres squared unit (typically used in variance) by @amilcarlucas in #219
- Tests - added tests for mavexpression, mavparm and fgFDM by @stephendade in #224
- DFReader: reset flightmode to UNKNOWN if we don't recognise the mode by @peterbarker in #214
- Generator: add mA units by @khancyr in #225
- mavgen_python: correct initialisation of string fields by @peterbarker in #227
- Add field units and types into generated python message docs by @hamishwillee in #228
- Improve MAV_CMD parameter information by @amilcarlucas in #211
- mavutil.py: mavudp: stop resolving target hostname for every sendto() by @peterbarker in #229
- Enforces description for messages by @hamishwillee in #215
- mavgen_python: correct defaults for array extensions by @peterbarker in #231
- Simplify comparisons with None, True, False by @pietrodn in #235
- Generator: add mm/h units for weather station by @khancyr in #239
- Add centiseconds as SI_Unit by @eyeam3 in #242
- mavutil: support multicast UDP connections by @tridge in #249
- support multiple vehicle operation for mavutil by @tridge in #251
- DODECAROTOR is a copter by @amilcarlucas in #254
- add px4 takeoff mode support by @Huibean in #253
- mavutil: Implement blocking for mavlogfile by @patrickelectric in #256
- mavutil: motors_armed looks only at vehicle heartbeats by @peterbarker in #257
- Add grams to SI_Units by @hamishwillee in #265
- mavlink_helpers.h eliminate possibility of unaligned memory access by @dagar in #267
- Add MHz to SI_Units by @aviaks in #266
- mavschema: Add default and restricted attributes to params by @hamishwillee in #258
- mavlink_helpers: Tidy parser example by @hamishwillee in #271
- MAVLink Swift: Add initial README.md in generator/swift by @modnovolyk in #62
- Update to new link for MAVlink resources by @hamishwillee in #199
- Add support for more than 1 level of dialect inclusion by @hamishwillee in #248
- mavutil: ADSB heartbeats are not vehicle heartbeats by @peterbarker in #270
- mavparse.py: understand MANUAL_CONTROL target system field by @peterbarker in #246
- mavlink_start_checksum() eliminate possibility of unaligned memory access by @dagar in #268
- mavgen_wlua: link version byte to corresponding hex dump by @aler9 in #279
- mavgen_wlua: fix parsing of v2.0 message ids by @aler9 in #281
- mavgen_wlua: link message id to corresponding hex dump by @aler9 in #284
- message.hpp: added missing include by @hdino in #184
- fix MAVLink_bad_data being initialized with str instead of bytearray by @jo-m in #285
- Support reserved/default params in generated libraries by @hamishwillee in #269
- mavgen_wlua: add support for interpreting truncated MAVLink 2.0 packets by @ntamas in #286
- DFReader.py: partial fix for string decoding issue by @peterbarker in #287
- Improve skip debug by @peterbarker in #236
- Null checks on C helper function mavlink_frame_char_buffer by @guyf2010 in #272
- mavgen_wlua: add missing v2.0 fields by @aler9 in #280
- mavutil.py: fix tcp reconnect issue by @peterbarker in #291
- Schema add bytes/s by @dagar in #293
- mavgen_c: include maximum message length in msg_entry_t array data by @peterbarker in #274
- mavprase.py: stop magically prefixing descriptions with their index by @peterbarker in #296
- mavparm: improve debug when failing to open param file by @peterbarker in #297
- mavgen_wlua: support signature by @aler9 in #295
- mavutil.py: skip unrecognised markers when initting arrays by @peterbarker in #299
- mavlogdump.py: correct dumping out in CSV format by @peterbarker in #303
- DFReader: correct python3 float/int issue for timestamps by @peterbarker in #304
- mavlogdump.py: correct dumping in JSON format by @peterbarker in #305
- Re-use TCP ports created with tcpin. by @alexkrob in #307
- Fix TCP reconnect issues by @OXINARF in #311
- magtest.py: fix print Heartbeat by @mirkix in #313
- mavwp: cast rally values to int to make mavlink message packing happy by @peterbarker in #314
- Add units, enumerations and display types to Python message definitions, use them by @peterbarker in #316
- Fix occasional truncate params by @hamishwillee in #315
- mavparm: exclude MIS_TOTAL from being loaded from files by default by @peterbarker in #324
- Create a regression test for mavlogdump.py by @peterbarker in #288
- Add flight mode 24 ZIGZAG to mavutil by @hfujikawa77 in #333
- mavlogdump.py: add --profile using yappi by @peterbarker in #335
- Adding generator for TypeScript (JavaScript) with MAVLink2 support by @pascalgross in #298
- Add a port in udp dissector in mavgen_wlua.py by @Marxlp in #336
- Add more information about what pymavlink is by @amilcarlucas in #328
- Add missing Copyright info by @amilcarlucas in #331
- Clarify the license by @amilcarlucas in #327
- Clarify The license of the generated files by @amilcarlucas in #330
- support instance variable expressions in DF logs by @tridge in #345
- Fix signature checking under Python3 by @peterbarker in #348
- mavparmdiff.py: add use tabs delimiter between columns for the output… by @mirkix in #352
- mavutil: correct type of exception being caught by @peterbarker in #355
- generator: fix off-by-one in mavlink_get_msg_entry by @julianoes in #343
- generator: fix message length table overflow by @julianoes in #344
- mavutil: add missing Rover modes FOLLOW and SIMPLE by @peterbarker in #356
- update gps leap seconds to the correct value by @davidbuzz in #357
- mavmission: preserve frame from dataflash log CMD by @peterbarker in #358
- tools: fixed mavmission for MISSION_ITEM_INT by @tridge in #359
- Change mavutil.py license from GPLv3+ to LGPLv3+ by @amilcarlucas in #329
- Fix CSV file missing last line bug. by @tecnic08 in #361
- mavgen_swift.py: Swift 4.2 with Bitmask support by @kzietek in #260
- mavschema: Add support for cdeg/s angular rate by @hamishwillee in #368
- Generator: Add Mavlink 2.0 support for Javascript by @stephendade in #371
- CPP11 message serialisation aliasing fixed by @hdino in #369
- Fix for bug in CPP11 generator MESSAGE_ENTRIES initialiser list by @hdino in #370
- Javascript Generator updates by @stephendade in #376
- More unicode decode fixes by @peterbarker in #375
- mavutil: add separate range check for mavlink2 messages by @peterbarker in #380
- Setup: make mavnative optional by default and update readme by @khancyr in #373
- mavfft_isb: update to reduce artificial noise in output and make graphs comparable by @andyp1per in #354
- Fix compile warnings in mavlink_conversions.h by @LorenzMeier in #391
- DFReader.py: continue parsing if a bad header is received by @peterbarker in #393
- mavmission: trim mission length to number of items in last item found by @peterbarker in #395
- Adding bitfield option to enum, to indicate multi bits enum by @BazookaJoe1900 in #392
- mavgraph.py: allow --flightmode ardupilot rather than --flightmode apm by @peterbarker in #400
- mavutil: add tracker's GUIDED mode to mode mapping by @peterbarker in #399
- generator: correct comment on rpm unit by @peterbarker in #401
- Add support for generating Lua 5.3 code for use with ArduPilot by @WickedShell in #386
- mavfft_isb: minor improvements by @andyp1per in #398
- mavutil: correct verbose dumping of array fields by @peterbarker in #405
- mavgraph: add primitive support for plotting text by @peterbarker in #200
- DFReader: clear message dictionary rather than replacing it by @peterbarker in #396
- Fixed 'bitmask' attribute definition by @BazookaJoe1900 in #409
- mavgen: avoid packed C stuctures when not needed by @tridge in #412
- Add Watt to list of units by @CarlEngel in #410
- generator: removed old debug output by @tridge in #414
- tools: add mavfft_pid.py to allow FFT analysis for pids in log files by @andyp1per in #417
- mavutil: use command_long for change modes for ardupilot by @peterbarker in #411
- Update README.md by @spigelli in #418
- mavutil: stop double-rebooting by @peterbarker in #424
- CI: Update build environment by @stephendade in #427
- mavgen: Javascript add parser array support by @jmachuca77 in #428
- mavfft: correct sample rate on pids by @andyp1per in #429
- Make sure init_arrays() also observes 528 garbage skip by @andyp1per in #430
- tools: Python3 support for mavextract.py by @peterbarker in #433
- generator: add kg units by @rmackay9 in #437
- generator: fix non-ASCII character by @chobitsfan in #438
- mavexpression: support conditional expressions by @tridge in #444
- mavgen.py: correct handling of includes (updated) by @hamishwillee in #436
- Travis CI: Add more flake8 tests by @cclauss in #360
- tests: use format_xml.sh on generation test examples by @peterbarker in #450
- Use absolute import path in file generated by mavgen_python by @ar13pit in #441
- This adds a conditional that prevents unicode values from being added as float values. by @QuPsi in #447
- Stop recommending users use Python2 by @peterbarker in #455
- array.array.fromstring() was removed in Python 3.9 by @peterbarker in #456
- mavfft_isb: add support for calculation of harmonic notch parameters by @andyp1per in #457
- Rotmat :fix python3 divisions by @khancyr in #448
- Add support for instance field markup in mavlink XML by @tridge in #459
- mavutil: include mavlink message id in verbose message dump by @peterbarker in #461
- examples: fix a couple of Python3 problems in mavtest.py by @peterbarker in #462
- Add THERMAL mode for ArduPlane. by @samuelctabor in #463
- Fix decoding of signed message on python3. by @langrind in #367
- tools: mavkml: adjust shebang line to use Python from PATH by @peterbarker in #470
- Generator: allow tests to complete despite gcc 9 warnings ... by @davidbuzz in #475
- Travis CI: Upgrade Node.js and Python by @cclauss in #449
- js mavlink parser fixes and test suite by @davidbuzz in #431
- GitHub actions by @khancyr in #478
- generator: mavlink_channel_t with correct length by @julianoes in #473
- add units required to align EFI_Status mavlink message with UAVCAN v0 by @auturgy in #479
- testmav: fixed error with minimal test by @tridge in #484
- mavutil.py: add support for MAV_TYPE_DECAROTOR by @peterbarker in #487
- Generator: JavaScript bindings , adding full support for mavlink2 signing, with tests. by @davidbuzz in #482
- Generator: fix JS bindings so that they properly trim zero's again. by @davidbuzz in #491
- Fix CRC algorithm documentation by @julianoes in #481
- mavutil: add ability to read .csv files by @peterbarker in #488
- Use os.path.basename() for include base by @olliw42 in #458
- C/Cpp Generator support relative include paths in xml definitions by @len0rd in #385
- Java MAVLink v2 by @len0rd in #476
- Tools: Add mav to .mat conversion by @jgooday in #485
- Generator CSharp update to support mavlink 2.0 by @meee1 in #322
- use os.path.abspath() for inlcude files by @olliw42 in #494
- Fix conflicting c macro by @jblam in #490
- rotmat: added rotation by enum by @tridge in #497
- generator: be explicit on where mavgen.py is for CI by @davidbuzz in #500
- tools: added options to mavparmdiff.py by @tridge in #499
- tools: add serial_control_to_shell by @peterbarker in #501
- mavutil: Allow for custom mapping of vehicle modes by @sypaq-nexton in #468
- mavschema.xsd: indent unit comments by @amilcarlucas in #504
- README.md: Add documentation for custom mode map feature by @sypaq-nexton in #508
- Fixing mavlink message ID schema type. by @jblee123 in #512
- build(deps): bump y18n from 4.0.0 to 4.0.1 in /generator/javascript by @dependabot in #523
- build(deps): bump y18n from 4.0.0 to 5.0.5 in /generator/javascript_stable by @dependabot in #524
- generator: fix bug in Node/javascript exposed by a new 'events interface' pr by @davidbuzz in #530
- add support for specifying the gyro peak to use for notch params by @andyp1per in #529
- mavgen_python: DRY, move to_string to module scope by @lightmare in #527
- Add invalid attribute to mavschema by @olliw42 in #526
- Tools: mavlogdump: do not rearrange .mat before exporting by @IamPete1 in #519
- Cross-platform include of endian.h by @Tobias-Fischer in #514
- Correct magfit_WMM.py to account for AHRS_TRIM by @priseborough in #535
- Bugfix accessing wrong property by @AnneWendt in #543
- build(deps): bump lodash from 4.17.20 to 4.17.21 in /generator/javascript by @dependabot in #542
- build(deps): bump underscore from 1.9.1 to 1.12.1 in /generator/javascript_stable by @dependabot in #539
- build(deps): bump underscore from 1.9.1 to 1.12.1 in /generator/javascript by @dependabot in #540
- build(deps): bump lodash from 4.17.20 to 4.17.21 in /generator/javascript_stable by @dependabot in #541
- added bitmask attribute to MAVEnum by @python36 in #533
- Add SYSTEMID and AUTOROTATE modes for copter. by @tajisoft in #548
- DFReader.py: fix qnan detection under Python3 by @peterbarker in #550
- mavutil: correct parsing of truncated tlogs by @peterbarker in #554
- Fix typos by @dforsi in #551
- Fix a typo discovered by codespell by @cclauss in #557
- Test on the current versions of Python by @cclauss in #555
- Fix typos discovered by codespell by @peterbarker in #563
- Don't hardcode sysid and compid when packing by @JonasVautherin in #545
- Update mavlink_signature_check code to be compiler agnostic by @JXS2012 in #549
- Close the mmap object by @auxym in #547
- Tools: magfit_WMM: add option to save plot and param file by @IamPete1 in #567
- mavutil: add new AUTO_RTL mode 27 to copter by @IamPete1 in #573
- Add Blimp modes by @MichelleRos in #582
- Mavfft add option to choose axis and add file name to legend by @Gone4Dirt in #585
- mavutil: fix docstring typo by @jonglaserlovesgear in #586
- Use tobytes instead of tostring on arrays in Python3 by @peterbarker in #588
- mavfft_isb: allow all HNTCH options to be printed by @andyp1per in #589
- mavwp: improve WP display after NAV_LAND and NAV_VTOL_LAND by @tridge in #591
- mavutil: fixed mode mapping with multiple vehicles by @tridge in #593
- [proposal] mavutil.py: support multiple clients with a timeout for udpin by @Williangalvani in #574
- Remove use of APM: by @peterbarker in #605
- magfit_WMM: support new compass param naming by @IamPete1 in #608
- mavgen_wlua: overall UX improvements for Wireshark dissector by @PurkkaKoodari in #498
- mavlogdump.py: fix python2 deprecation by @peterbarker in #611
- build(deps): bump color-string from 1.5.3 to 1.6.0 in /generator/javascript by @dependabot in #584
- build(deps): bump color-string from 1.5.4 to 1.6.0 in /generator/javascript_stable by @dependabot in #583
- build(deps): bump path-parse from 1.0.6 to 1.0.7 in /generator/javascript by @dependabot in #575
- Correct binary search for message information by @peterbarker in #613
- Change URL references away from dead qgroundcontrol.org by @peterbarker in #614
- mavparms.py: add option to output in QGC-friendly format by @peterbarker in #612
- build(deps): bump glob-parent from 5.1.0 to 5.1.2 in /generator/javascript by @dependabot in #552
- build(deps): bump glob-parent from 5.1.1 to 5.1.2 in /generator/javascript_stable by @dependabot in #553
- build(deps): bump path-parse from 1.0.6 to 1.0.7 in /generator/javascript_stable by @dependabot in #576
- Replace iterative IDX with hash of dialect name to remove build order dependencies by @hamishwillee in #537
- mavgen_javascript.py: small bugfixes by @davidbuzz in #622
- Mavutil: Get vehicle data from HIGH_LATENCY2 by @stephendade in #624
- mavgen: use MAVLink_unknown messages for unknown XML by @tridge in #626
- mavutil: add ArduPlane LOITERALTQLAND flight mode by @peterbarker in #627
- build(deps): bump nanoid from 3.1.25 to 3.2.0 in /generator/javascript_stable by @dependabot in #629
New Contributors
- @gitter-badger made their first contribution in #11
- @cclauss made their first contribution in #17
- @phollands made their first contribution in #24
- @peterbarker made their first contribution in #26
- @CarloWood made their first contribution in #22
- @courtarro made their first contribution in #31
- @bkakilli made their first contribution in #32
- @khancyr made their first contribution in #36
- @bugobliterator made their first contribution in #40
- @WickedShell made their first contribution in #44
- @amilcarlucas made their first contribution in #48
- @kd0aij made their first contribution in #57
- @renzhelou made their first contribution in #45
- @modnovolyk made their first contribution in #29
- @julianoes made their first contribution in #64
- @mazahner made their first contribution in #65
- @OXINARF made their first contribution in #72
- @larsks made their first contribution in #75
- @sanderux made their first contribution in #80
- @jaxxzer made their first contribution in #85
- @bradh made their first contribution in #92
- @Huibean made their first contribution in #101
- @kartikmohta made their first contribution in #84
- @byron-conroy made their first contribution in #122
- @az0uz made their first contribution in #98
- @pietrodn made their first contribution in #146
- @Williangalvani made their first contribution in #147
- @danielwidmann made their first contribution in #165
- @pedroblanc made their first contribution in #158
- @bkueng made their first contribution in #176
- @daodao2007 made their first contribution in #166
- @tridge made their first contribution in #180
- @stephendade made their first contribution in #192
- @rolandash made their first contribution in #169
- @hamishwillee made their first contribution in #201
- @jason-watkins made their first contribution in #189
- @patrickelectric made their first contribution in #148
- @eyeam3 made their first contribution in #242
- @dagar made their first contribution in #267
- @aviaks made their first contribution in #266
- @aler9 made their first contribution in #279
- @hdino made their first contribution in #184
- @jo-m made their first contribution in #285
- @ntamas made their first contribution in #286
- @guyf2010 made their first contribution in #272
- @alexkrob made their first contribution in #307
- @mirkix made their first contribution in #313
- @hfujikawa77 made their first contribution in #333
- @pascalgross made their first contribution in #298
- @Marxlp made their first contribution in #336
- @davidbuzz made their first contribution in #357
- @tecnic08 made their first contribution in #361
- @kzietek made their first contribution in #260
- @andyp1per made their first contribution in #354
- @LorenzMeier made their first contribution in #391
- @BazookaJoe1900 made their first contribution in #392
- @CarlEngel made their first contribution in #410
- @spigelli made their first contribution in #418
- @jmachuca77 made their first contribution in #428
- @rmackay9 made their first contribution in #437
- @chobitsfan made their first contribution in #438
- @ar13pit made their first contribution in #441
- @QuPsi made their first contribution in #447
- @samuelctabor made their first contribution in #463
- @langrind made their first contribution in #367
- @auturgy made their first contribution in #479
- @olliw42 made their first contribution in #458
- @len0rd made their first contribution in #385
- @jgooday made their first contribution in #485
- @meee1 made their first contribution in #322
- @jblam made their first contribution in #490
- @sypaq-nexton made their first contribution in #468
- @jblee123 made their first contribution in #512
- @dependabot made their first contribution in #523
- @lightmare made their first contribution in #527
- @IamPete1 made their first contribution in #519
- @Tobias-Fischer made their first contribution in #514
- @priseborough made their first contribution in #535
- @AnneWendt made their first contribution in #543
- @python36 made their first contribution in #533
- @tajisoft made their first contribution in #548
- @dforsi made their first contribution in #551
- @JonasVautherin made their first contribution in #545
- @JXS2012 made their first contribution in #549
- @auxym made their first contribution in #547
- @MichelleRos made their first contribution in #582
- @Gone4Dirt made their first contribution in #585
- @jonglaserlovesgear made their first contribution in #586
- @PurkkaKoodari made their first contribution in #498
Full Changelog: https://github.com/ArduPilot/pymavlink/commits/2.4.22